/test/cyad/policy_parser.cpp

https://gitlab.com/admin-github-cloud/cynara · C++ · 92 lines · 49 code · 22 blank · 21 comment · 0 complexity · 5ca7210d58d74c3b54c7dca3afbc3183 MD5 · raw file

  1. /*
  2. * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. /**
  17. * @file test/cyad/commandline.cpp
  18. * @author Aleksander Zdyb <a.zdyb@samsung.com>
  19. * @version 1.0
  20. * @brief Tests for AdminPolicyParser
  21. */
  22. #include <memory>
  23. #include <sstream>
  24. #include <string>
  25. #include <gmock/gmock.h>
  26. #include <gtest/gtest.h>
  27. #include <common/exceptions/BucketRecordCorruptedException.h>
  28. #include <common/types/PolicyKey.h>
  29. #include <common/types/PolicyType.h>
  30. #include <cyad/AdminPolicyParser.h>
  31. #include "helpers.h"
  32. static Cynara::PolicyType translatePolicy(const std::string &rawPolicy) {
  33. return std::stoi(rawPolicy);
  34. }
  35. TEST(AdminPolicyParser, parseInvalid) {
  36. auto input = std::make_shared<std::stringstream>();
  37. *input << "invalid input" << std::endl;
  38. ASSERT_THROW(Cynara::AdminPolicyParser::parse(*input, translatePolicy),
  39. Cynara::BucketRecordCorruptedException);
  40. }
  41. TEST(AdminPolicyParser, parse0) {
  42. auto input = std::make_shared<std::stringstream>();
  43. Cynara::CynaraAdminPolicies expectedPolicies;
  44. expectedPolicies.seal();
  45. auto policies = Cynara::AdminPolicyParser::parse(*input, translatePolicy);
  46. ASSERT_TRUE(policies.sealed());
  47. ASSERT_THAT(policies.data(), AdmPolicyListEq(expectedPolicies.data()));
  48. }
  49. TEST(AdminPolicyParser, parse1) {
  50. auto input = std::make_shared<std::stringstream>();
  51. *input << "b;c;u;p;0;m" << std::endl;
  52. Cynara::CynaraAdminPolicies expectedPolicies;
  53. expectedPolicies.add("b", { 0, "m" }, { "c", "u", "p" });
  54. expectedPolicies.seal();
  55. auto policies = Cynara::AdminPolicyParser::parse(*input, translatePolicy);
  56. ASSERT_TRUE(policies.sealed());
  57. ASSERT_THAT(policies.data(), AdmPolicyListEq(expectedPolicies.data()));
  58. }
  59. TEST(AdminPolicyParser, parse2) {
  60. auto input = std::make_shared<std::stringstream>();
  61. *input << "b1;c1;u1;p1;0;m1" << std::endl;
  62. *input << "b2;c2;u2;p2;0;m2" << std::endl;
  63. Cynara::CynaraAdminPolicies expectedPolicies;
  64. expectedPolicies.add("b1", { 0, "m1" }, { "c1", "u1", "p1" });
  65. expectedPolicies.add("b2", { 0, "m2" }, { "c2", "u2", "p2" });
  66. expectedPolicies.seal();
  67. auto policies = Cynara::AdminPolicyParser::parse(*input, translatePolicy);
  68. ASSERT_TRUE(policies.sealed());
  69. ASSERT_THAT(policies.data(), AdmPolicyListEq(expectedPolicies.data()));
  70. }