Minor refactoring. Unit tests for policy enforcement groups added.
[platform/core/security/suspicious-activity-monitor.git] / device-agent / utest / test_policy_enforce.cpp
1 #include <gmock/gmock.h>
2 #include <stdexcept>
3 #include "policy_enforce_mock.h"
4
5 using namespace core;
6 using ::testing::Return;
7 using ::testing::Throw;
8
9 namespace
10 {
11
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\":\"[]\"}]"};
19
20 }
21
22 TEST(Test_PolicyEnforce, ParsePolicy_errors_and_init_failed)
23 {
24     IPolicyGroupEnforceMock policy_mock;
25     PolicyEnforce::GetInstance().RegisterGroup(&policy_mock, MOCK_POLICY_NAME);
26
27     EXPECT_CALL(policy_mock, Init()).WillOnce(Return(false));
28
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));
36 }
37
38 TEST(Test_PolicyEnforce, ParsePolicy_parsing_error)
39 {
40     IPolicyGroupEnforceMock policy_mock;
41     PolicyEnforce::GetInstance().RegisterGroup(&policy_mock, MOCK_POLICY_NAME);
42
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);
47
48     auto& pe = PolicyEnforce::GetInstance();
49     // Simulate "fail to initialize group"
50     EXPECT_EQ(PolicyEnforce::Result::ERROR_GROUP, pe.ParsePolicy(MOCK_POLICY_JSON));
51 }
52
53 TEST(Test_PolicyEnforce, ParsePolicy_throw)
54 {
55     IPolicyGroupEnforceMock policy_mock;
56     PolicyEnforce::GetInstance().RegisterGroup(&policy_mock, MOCK_POLICY_NAME);
57
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("")));
61
62     auto& pe = PolicyEnforce::GetInstance();
63     // Simulate throwing exception on parsing
64     EXPECT_EQ(PolicyEnforce::Result::ERROR_PARSING, pe.ParsePolicy(MOCK_POLICY_JSON));
65 }