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