1 #include <gmock/gmock.h>
3 #include "policy_enforce_mock.h"
6 using ::testing::Return;
7 using ::testing::Throw;
12 const std::string EMPTY;
13 const std::string ILLFORMED_JSON{"asdfasdf"};
14 const std::string EMPTY_GROUP_NAME_JSON{R"-([{"group":""}])-"};
15 const std::string UNKNOWN_GROUP_NAME_JSON{R"-([{"group":"some-unknown-group-name"}])-"};
16 const std::string MOCK_POLICY_NAME{"mock"};
17 const std::string MOCK_POLICY_EMPTY_JSON{"[{\"group\":\"" + MOCK_POLICY_NAME + "\",\"policies\":\"\"}]"};
18 const std::string MOCK_POLICY_JSON{"[{\"group\":\"" + MOCK_POLICY_NAME + "\",\"policies\":\"[]\"}]"};
22 TEST(Test_PolicyEnforce, ParsePolicy_errors_and_init_failed)
24 IPolicyGroupEnforceMock policy_mock;
25 PolicyEnforce::GetInstance().RegisterGroup(&policy_mock, MOCK_POLICY_NAME);
27 EXPECT_CALL(policy_mock, Init()).WillOnce(Return(false));
29 auto& pe = PolicyEnforce::GetInstance();
30 EXPECT_EQ(PolicyEnforce::Result::ERROR_PARSING, pe.ParsePolicy(EMPTY));
31 EXPECT_EQ(PolicyEnforce::Result::ERROR_PARSING, pe.ParsePolicy(ILLFORMED_JSON));
32 EXPECT_EQ(PolicyEnforce::Result::ERROR_PARSING, pe.ParsePolicy(EMPTY_GROUP_NAME_JSON));
33 EXPECT_EQ(PolicyEnforce::Result::SUCCESS, pe.ParsePolicy(UNKNOWN_GROUP_NAME_JSON));
34 // Simulate "fail to initialize group"
35 EXPECT_EQ(PolicyEnforce::Result::ERROR_GROUP, pe.ParsePolicy(MOCK_POLICY_JSON));
38 TEST(Test_PolicyEnforce, ParsePolicy_parsing_error)
40 IPolicyGroupEnforceMock policy_mock;
41 PolicyEnforce::GetInstance().RegisterGroup(&policy_mock, MOCK_POLICY_NAME);
43 EXPECT_CALL(policy_mock, Init()).WillOnce(Return(true));
44 // Simulate parsing failure
45 EXPECT_CALL(policy_mock, ParseGroup(::testing::_)).WillOnce(Return(false));
46 EXPECT_CALL(policy_mock, Deinit()).Times(1);
48 auto& pe = PolicyEnforce::GetInstance();
49 // Simulate "fail to initialize group"
50 EXPECT_EQ(PolicyEnforce::Result::ERROR_GROUP, pe.ParsePolicy(MOCK_POLICY_JSON));
53 TEST(Test_PolicyEnforce, ParsePolicy_throw)
55 IPolicyGroupEnforceMock policy_mock;
56 PolicyEnforce::GetInstance().RegisterGroup(&policy_mock, MOCK_POLICY_NAME);
58 EXPECT_CALL(policy_mock, Init()).WillOnce(Return(true));
59 // Simulate parsing failure
60 EXPECT_CALL(policy_mock, ParseGroup(::testing::_)).WillOnce(Throw(std::logic_error("")));
62 auto& pe = PolicyEnforce::GetInstance();
63 // Simulate throwing exception on parsing
64 EXPECT_EQ(PolicyEnforce::Result::ERROR_PARSING, pe.ParsePolicy(MOCK_POLICY_JSON));