1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 #include <iostream>
16
17 #include <gtest/gtest.h>
18
19 #include "area_policy.h"
20 #include "privacy_controller.h"
21
22 using namespace testing::ext;
23 using namespace OHOS::HiviewDFX;
24
25 class PrivacyControllerTest : public testing::Test {
26 public:
SetUp()27 void SetUp() {}
TearDown()28 void TearDown() {}
29 };
30
31 namespace {
32 const std::string CONFIG_PATH1 = "/data/test/hiview/privacy_control/area_policy1.json";
33 const std::string CONFIG_PATH2 = "/data/test/hiview/privacy_control/area_policy2.json";
34 const std::string CONFIG_PATH3 = "/data/test/hiview/privacy_control/area_policy3.json";
35 const std::string CONFIG_PATH4 = "/data/test/hiview/privacy_control/area_policy4.json";
36 const std::string CONFIG_PATH5 = "/data/test/hiview/privacy_control/area_policy5.json";
37
38 const std::string TEST_DOMAIN = "DEFAULT_DOMAIN";
39 const std::string TEST_NAME = "DEFAULT_NAME";
40
41 const std::string DEBUG_LEVEL = "DEBUG";
42 const std::string INFO_LEVEL = "INFO";
43 const std::string MINOR_LEVEL = "MINOR";
44 const std::string MAJOR_LEVEL = "MAJOR";
45 const std::string CRITICAL_LEVEL = "CRITICAL";
46
47 constexpr uint8_t SECRET_PRIVACY = 1;
48 constexpr uint8_t SENSITIVE_PRIVACY = 2;
49 constexpr uint8_t PROTECTED_PRIVACY = 3;
50 constexpr uint8_t PUBLIC_PRIVACY = 4;
51
CreateEvent(const std::string & domain,const std::string & name,SysEventCreator::EventType type=SysEventCreator::FAULT)52 std::shared_ptr<Event> CreateEvent(const std::string& domain, const std::string& name,
53 SysEventCreator::EventType type = SysEventCreator::FAULT)
54 {
55 SysEventCreator sysEventCreator(domain, name, type);
56 auto event = std::make_shared<SysEvent>("", nullptr, sysEventCreator);
57 event->SetLevel(DEBUG_LEVEL);
58 event->SetPrivacy(SECRET_PRIVACY);
59 return event;
60 }
61
CreateSysEvent(const std::string & domain,const std::string & name,SysEventCreator::EventType type=SysEventCreator::FAULT)62 std::shared_ptr<SysEvent> CreateSysEvent(const std::string& domain, const std::string& name,
63 SysEventCreator::EventType type = SysEventCreator::FAULT)
64 {
65 auto event = CreateEvent(domain, name, type);
66 return std::static_pointer_cast<SysEvent>(event);
67 }
68 }
69
70 /**
71 * @tc.name: PrivacyControllerTest001
72 * @tc.desc: plugin test.
73 * @tc.type: FUNC
74 * @tc.require: issueI9TJGM
75 */
76 HWTEST_F(PrivacyControllerTest, PrivacyControllerTest001, TestSize.Level0)
77 {
78 PrivacyController plugin;
79 std::shared_ptr<Event> event = nullptr;
80 ASSERT_FALSE(plugin.OnEvent(event));
81
82 auto event1 = CreateEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::FAULT);
83 ASSERT_TRUE(plugin.OnEvent(event1));
84
85 auto event2 = CreateEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::STATISTIC);
86 ASSERT_TRUE(plugin.OnEvent(event2));
87
88 auto event3 = CreateEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::SECURITY);
89 ASSERT_TRUE(plugin.OnEvent(event3));
90
91 auto event4 = CreateEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::BEHAVIOR);
92 ASSERT_TRUE(plugin.OnEvent(event4));
93 }
94
95 /**
96 * @tc.name: PrivacyControllerTest002
97 * @tc.desc: default policy test.
98 * @tc.type: FUNC
99 * @tc.require: issueI9TJGM
100 */
101 HWTEST_F(PrivacyControllerTest, PrivacyControllerTest002, TestSize.Level0)
102 {
103 AreaPolicy areaPolicy(CONFIG_PATH1);
104
105 auto event1 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::FAULT);
106 ASSERT_TRUE(areaPolicy.IsAllowed(event1));
107
108 auto event2 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::STATISTIC);
109 ASSERT_TRUE(areaPolicy.IsAllowed(event2));
110
111 auto event3 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::SECURITY);
112 ASSERT_TRUE(areaPolicy.IsAllowed(event3));
113
114 auto event4 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::BEHAVIOR);
115 ASSERT_TRUE(areaPolicy.IsAllowed(event4));
116 }
117
118 /**
119 * @tc.name: PrivacyControllerTest003
120 * @tc.desc: allowLevel policy test.
121 * @tc.type: FUNC
122 * @tc.require: issueI9TJGM
123 */
124 HWTEST_F(PrivacyControllerTest, PrivacyControllerTest003, TestSize.Level0)
125 {
126 AreaPolicy areaPolicy(CONFIG_PATH2);
127 auto event = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::FAULT);
128 event->SetLevel(DEBUG_LEVEL);
129 ASSERT_FALSE(areaPolicy.IsAllowed(event));
130
131 event->SetLevel(INFO_LEVEL);
132 ASSERT_TRUE(areaPolicy.IsAllowed(event));
133
134 event->SetLevel(MINOR_LEVEL);
135 ASSERT_TRUE(areaPolicy.IsAllowed(event));
136
137 event->SetLevel(MAJOR_LEVEL);
138 ASSERT_TRUE(areaPolicy.IsAllowed(event));
139
140 event->SetLevel(CRITICAL_LEVEL);
141 ASSERT_TRUE(areaPolicy.IsAllowed(event));
142 }
143
144 /**
145 * @tc.name: PrivacyControllerTest004
146 * @tc.desc: allowPrivacy policy test.
147 * @tc.type: FUNC
148 * @tc.require: issueI9TJGM
149 */
150 HWTEST_F(PrivacyControllerTest, PrivacyControllerTest004, TestSize.Level0)
151 {
152 AreaPolicy areaPolicy(CONFIG_PATH3);
153 auto event = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::FAULT);
154 event->SetPrivacy(SECRET_PRIVACY);
155 ASSERT_FALSE(areaPolicy.IsAllowed(event));
156
157 event->SetPrivacy(SENSITIVE_PRIVACY);
158 ASSERT_FALSE(areaPolicy.IsAllowed(event));
159
160 event->SetPrivacy(PROTECTED_PRIVACY);
161 ASSERT_TRUE(areaPolicy.IsAllowed(event));
162
163 event->SetPrivacy(PUBLIC_PRIVACY);
164 ASSERT_TRUE(areaPolicy.IsAllowed(event));
165 }
166
167 /**
168 * @tc.name: PrivacyControllerTest005
169 * @tc.desc: allowSysUe policy test.
170 * @tc.type: FUNC
171 * @tc.require: issueI9TJGM
172 */
173 HWTEST_F(PrivacyControllerTest, PrivacyControllerTest005, TestSize.Level0)
174 {
175 AreaPolicy areaPolicy(CONFIG_PATH4);
176 auto event1 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::FAULT);
177 ASSERT_TRUE(areaPolicy.IsAllowed(event1));
178
179 auto event2 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::STATISTIC);
180 ASSERT_TRUE(areaPolicy.IsAllowed(event2));
181
182 auto event3 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::SECURITY);
183 ASSERT_TRUE(areaPolicy.IsAllowed(event3));
184
185 auto event4 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::BEHAVIOR);
186 ASSERT_FALSE(areaPolicy.IsAllowed(event4));
187 }
188
189 /**
190 * @tc.name: PrivacyControllerTest006
191 * @tc.desc: allowUe policy test.
192 * @tc.type: FUNC
193 * @tc.require: issueI9TJGM
194 */
195 HWTEST_F(PrivacyControllerTest, PrivacyControllerTest006, TestSize.Level0)
196 {
197 AreaPolicy areaPolicy(CONFIG_PATH5);
198 const std::string testUeDomain = "DOMAIN_UE";
199 auto event = CreateSysEvent(testUeDomain, TEST_NAME, SysEventCreator::BEHAVIOR);
200 ASSERT_FALSE(areaPolicy.IsAllowed(event));
201
202 auto event1 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::FAULT);
203 ASSERT_TRUE(areaPolicy.IsAllowed(event1));
204
205 auto event2 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::STATISTIC);
206 ASSERT_TRUE(areaPolicy.IsAllowed(event2));
207
208 auto event3 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::SECURITY);
209 ASSERT_TRUE(areaPolicy.IsAllowed(event3));
210
211 auto event4 = CreateSysEvent(TEST_DOMAIN, TEST_NAME, SysEventCreator::BEHAVIOR);
212 ASSERT_TRUE(areaPolicy.IsAllowed(event4));
213 }
214