• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
16 #include "security_guard_data_collect_sa_test.h"
17 
18 #include <thread>
19 #include <vector>
20 #include <fcntl.h>
21 #include <sys/stat.h>
22 #include <sys/types.h>
23 #include <unistd.h>
24 #include <fstream>
25 #include "directory_ex.h"
26 #include "file_ex.h"
27 #include "gmock/gmock.h"
28 #include "system_ability_definition.h"
29 #include "security_guard_define.h"
30 #include "security_guard_log.h"
31 #include "security_guard_utils.h"
32 #include "security_config_update_info.h"
33 #include "security_event_info.h"
34 #include "config_define.h"
35 #define private public
36 #define protected public
37 #include "accesstoken_kit.h"
38 #include "acquire_data_subscribe_manager.h"
39 #include "collector_manager.h"
40 #include "config_data_manager.h"
41 #include "data_collect_manager.h"
42 #include "data_format.h"
43 #include "database_manager.h"
44 #include "data_collect_manager_service.h"
45 #include "security_event_query_callback_proxy.h"
46 #undef private
47 #undef protected
48 
49 using namespace testing;
50 using namespace testing::ext;
51 using namespace OHOS::Security::SecurityGuard;
52 using namespace OHOS::Security::SecurityGuardTest;
53 namespace OHOS {
54     std::shared_ptr<Security::SecurityGuard::MockDataFormatInterface> DataFormat::instance_ = nullptr;
55     std::shared_ptr<Security::AccessToken::MockAccessTokenKitInterface>
56         Security::AccessToken::AccessTokenKit::instance_ = nullptr;
57     std::shared_ptr<Security::AccessToken::MockTokenIdKitInterface>
58         Security::AccessToken::TokenIdKit::instance_ = nullptr;
59     std::mutex Security::SecurityGuard::DataFormat::mutex_ {};
60     std::mutex Security::AccessToken::AccessTokenKit::mutex_ {};
61     std::mutex Security::AccessToken::TokenIdKit::mutex_ {};
62 }
63 
64 namespace OHOS::Security::SecurityGuardTest {
65 const std::string &SECURITY_GUARD_EVENT_CFG_FILE = SECURITY_GUARD_EVENT_CFG_SOURCE;
66 
SetUpTestCase()67 void SecurityGuardDataCollectSaTest::SetUpTestCase()
68 {
69 }
70 
TearDownTestCase()71 void SecurityGuardDataCollectSaTest::TearDownTestCase()
72 {
73     DataFormat::DelInterface();
74     AccessToken::AccessTokenKit::DelInterface();
75     AccessToken::TokenIdKit::DelInterface();
76 }
77 
SetUp()78 void SecurityGuardDataCollectSaTest::SetUp()
79 {
80 }
81 
TearDown()82 void SecurityGuardDataCollectSaTest::TearDown()
83 {
84 }
85 
86 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithInvalidFd, TestSize.Level1)
87 {
88     int fd = -1;
89     std::vector<std::u16string> args;
90     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
91 
92     EXPECT_EQ(service.Dump(fd, args), BAD_PARAM);
93 }
94 
95 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithInvalidArgs, TestSize.Level1)
96 {
97     int fd = 1;
98     std::vector<std::u16string> args;
99     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
100     EXPECT_EQ(service.Dump(fd, args), ERR_OK);
101 }
102 
103 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithHelpCommand, TestSize.Level1)
104 {
105     int fd = 1;
106     std::vector<std::u16string> args = { u"-h" };
107     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
108     EXPECT_EQ(service.Dump(fd, args), ERR_OK);
109 }
110 
111 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithOtherCommand, TestSize.Level1)
112 {
113     int fd = 1;
114     std::vector<std::u16string> args = { u"-s" };
115     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
116     EXPECT_EQ(service.Dump(fd, args), ERR_OK);
117 }
118 
119 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithInvalidEventId01, TestSize.Level1)
120 {
121     int fd = 1;
122     std::vector<std::u16string> args = { u"-i", u"invalid" };
123     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
124     EXPECT_EQ(service.Dump(fd, args), BAD_PARAM);
125 }
126 
127 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithInvalidEventId02, TestSize.Level1)
128 {
129     int fd = 1;
130     std::vector<std::u16string> args = { u"-i" };
131     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
132     EXPECT_EQ(service.Dump(fd, args), BAD_PARAM);
133 }
134 
135 HWTEST_F(SecurityGuardDataCollectSaTest, TestDumpWithValidEventId, TestSize.Level1)
136 {
137     int fd = 1;
138     std::vector<std::u16string> args = { u"-i", u"12345" };
139     EXPECT_CALL(DatabaseManager::GetInstance(), QueryRecentEventByEventId(_, _))
140         .WillOnce(Return(SUCCESS));
141     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
142     EXPECT_EQ(service.Dump(fd, args), ERR_OK);
143 }
144 
145 HWTEST_F(SecurityGuardDataCollectSaTest, DumpEventInfo_Success, TestSize.Level1) {
146     SecEvent secEvent;
147     secEvent.eventId = 1;
148     secEvent.date = "2022-01-01";
149     secEvent.version = "1.0";
150 
151     EXPECT_CALL(DatabaseManager::GetInstance(), QueryRecentEventByEventId(1, _))
152         .WillOnce(Return(SUCCESS));
153     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
154     service.DumpEventInfo(1, 1);
155 }
156 
157 HWTEST_F(SecurityGuardDataCollectSaTest, DumpEventInfo_QueryError, TestSize.Level1) {
158     EXPECT_CALL(DatabaseManager::GetInstance(), QueryRecentEventByEventId(1, _))
159         .WillOnce(Return(FAILED));
160     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
161     service.DumpEventInfo(1, 1);
162 }
163 
164 HWTEST_F(SecurityGuardDataCollectSaTest, GetSecEventsFromConditions_NoTimeCondition, TestSize.Level1) {
165     RequestCondition condition{};
166     EXPECT_CALL(DatabaseManager::GetInstance(), QueryEventByEventId(_, _, _))
167         .WillRepeatedly([] (std::string table, std::vector<int64_t> &eventIds,
__anon51d2fecd0102(std::string table, std::vector<int64_t> &eventIds, std::vector<SecEvent> &events) 168             std::vector<SecEvent> &events) {
169             SecEvent event {};
170             event.eventId = 1;
171             events.emplace_back(event);
172             return SUCCESS;
173         });
174     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
175     std::vector<SecEvent> events = service.GetSecEventsFromConditions(condition);
176     EXPECT_EQ(events[0].eventId, 1);
177 }
178 
179 HWTEST_F(SecurityGuardDataCollectSaTest, GetSecEventsFromConditions_WithTimeCondition, TestSize.Level1) {
180     RequestCondition condition;
181     condition.riskEvent = {};
182     condition.auditEvent = {};
183     condition.beginTime = "2022-01-01";
184     condition.endTime = "2022-01-31";
185 
186     EXPECT_CALL(DatabaseManager::GetInstance(), QueryEventByEventIdAndDate(_, _, _, _, _))
187         .WillRepeatedly([] (std::string table, std::vector<int64_t> &eventIds, std::vector<SecEvent> &events,
__anon51d2fecd0202(std::string table, std::vector<int64_t> &eventIds, std::vector<SecEvent> &events, std::string beginTime, std::string endTime) 188         std::string beginTime, std::string endTime) {
189             SecEvent event {};
190             event.eventId = 1;
191             events.emplace_back(event);
192             return SUCCESS;
193         });
194     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
195     std::vector<SecEvent> events = service.GetSecEventsFromConditions(condition);
196     EXPECT_EQ(events[0].eventId, 1);
197 }
198 
199 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventByRuler_GetEventConfigError001, TestSize.Level1)
200 {
201     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
202     EXPECT_TRUE(obj != nullptr);
203     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillOnce(Return(false));
204     sptr<SecurityEventQueryCallbackProxy> mockProxy = new (std::nothrow) SecurityEventQueryCallbackProxy(obj);
205     SecurityCollector::SecurityEventRuler ruler;
206     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
207     EXPECT_FALSE(service.QueryEventByRuler(mockProxy, ruler));
208 }
209 
210 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventByRuler_GetEventConfigError002, TestSize.Level1)
211 {
212     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
213     EXPECT_TRUE(obj != nullptr);
214     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillOnce(Return(false));
215     sptr<SecurityEventQueryCallbackProxy> mockProxy = new (std::nothrow) SecurityEventQueryCallbackProxy(obj);
216     SecurityCollector::SecurityEventRuler ruler;
217     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
218     EXPECT_CALL(*obj, SendRequest).Times(1);
219     mockProxy->OnError("123");
220     EXPECT_FALSE(service.QueryEventByRuler(mockProxy, ruler));
221 }
222 
223 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventByRuler_QueryInDatabase, TestSize.Level1)
224 {
225     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
226     EXPECT_TRUE(obj != nullptr);
227 
__anon51d2fecd0302(int64_t eventId, EventCfg &config) 228     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillOnce([] (int64_t eventId, EventCfg &config) {
229         config.eventType = 0;
230         return true;
231     });
232     SecEvent event;
233     event.eventId = 1;
234     event.version = 1;
235     event.content = "content";
236     std::vector<SecEvent> events{event};
237     EXPECT_CALL(DatabaseManager::GetInstance(), QueryEventByEventId(_, _)).WillRepeatedly(Return(true));
238     sptr<SecurityEventQueryCallbackProxy> mockProxy = new (std::nothrow) SecurityEventQueryCallbackProxy(obj);
239     SecurityCollector::SecurityEventRuler ruler;
240     EXPECT_CALL(*obj, SendRequest).Times(1);
241     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
242     EXPECT_TRUE(service.QueryEventByRuler(mockProxy, ruler));
243 }
244 
245 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventByRuler_QueryInCollector, TestSize.Level1)
246 {
__anon51d2fecd0402(int64_t eventId, EventCfg &config) 247     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillOnce([] (int64_t eventId, EventCfg &config) {
248         config.eventType = 1;
249         return true;
250     });
251     SecurityCollector::SecurityEvent event;
252     event.eventId_ = 1;
253     event.version_ = 1;
254     event.content_ = "content";
255     std::vector<SecurityCollector::SecurityEvent> events{event};
256     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), QuerySecurityEvent(_, _)).WillOnce(Return(SUCCESS));
257     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
258     EXPECT_TRUE(obj != nullptr);
259     sptr<SecurityEventQueryCallbackProxy> mockProxy = new (std::nothrow) SecurityEventQueryCallbackProxy(obj);
260     SecurityCollector::SecurityEventRuler ruler;
261     EXPECT_CALL(*obj, SendRequest).Times(1);
262     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
263     EXPECT_TRUE(service.QueryEventByRuler(mockProxy, ruler));
264 }
265 
266 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventByRuler_NotSupportType, TestSize.Level1)
267 {
268     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly([] (
__anon51d2fecd0502( int64_t eventId, EventCfg &config) 269         int64_t eventId, EventCfg &config) {
270         config.eventType = 2;
271         return true;
272     });
273     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
274     EXPECT_TRUE(obj != nullptr);
275     sptr<SecurityEventQueryCallbackProxy> mockProxy = new (std::nothrow) SecurityEventQueryCallbackProxy(obj);
276     SecurityCollector::SecurityEventRuler ruler;
277     EXPECT_CALL(*obj, SendRequest).Times(1);
278 
279     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
280     EXPECT_TRUE(service.QueryEventByRuler(mockProxy, ruler));
281 }
282 
283 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventByRuler_BeginTimeEmpty, TestSize.Level1)
284 {
285     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly([] (
__anon51d2fecd0602( int64_t eventId, EventCfg &config) 286         int64_t eventId, EventCfg &config) {
287         config.eventType = 2;
288         return true;
289     });
290     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
291     EXPECT_TRUE(obj != nullptr);
292     sptr<SecurityEventQueryCallbackProxy> mockProxy = new (std::nothrow) SecurityEventQueryCallbackProxy(obj);
293     SecurityCollector::SecurityEventRuler ruler(2, "", "11", "tt");
294     EXPECT_CALL(*obj, SendRequest).Times(1);
295 
296     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
297     EXPECT_TRUE(service.QueryEventByRuler(mockProxy, ruler));
298 }
299 
300 HWTEST_F(SecurityGuardDataCollectSaTest, TestPushDataCollectTask_NullProxy, TestSize.Level1)
301 {
302     std::shared_ptr<std::promise<int32_t>> promise = std::make_shared<std::promise<int32_t>>();
303     EXPECT_TRUE(promise != nullptr);
304     sptr<MockRemoteObject> mockObj = nullptr;
305     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
306     service.PushDataCollectTask(mockObj, "conditions", "devId", promise);
307     EXPECT_EQ(0, promise->get_future().get());
308 }
309 
310 HWTEST_F(SecurityGuardDataCollectSaTest, TestPushDataCollectTask_EmptyConditions, TestSize.Level1)
311 {
312     std::shared_ptr<std::promise<int32_t>> promise = std::make_shared<std::promise<int32_t>>();
313     EXPECT_TRUE(promise != nullptr);
314     sptr<MockRemoteObject> mockObj(new (std::nothrow) MockRemoteObject());
315     EXPECT_TRUE(mockObj != nullptr);
316     EXPECT_CALL(*(DataFormat::GetInterface()), ParseConditions).WillOnce([]
__anon51d2fecd0702(std::string conditions, RequestCondition &reqCondition) 317         (std::string conditions, RequestCondition &reqCondition) {
318             reqCondition = {};
319         });
320     EXPECT_CALL(*mockObj, SendRequest).Times(1);
321     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
322     ON_CALL(*mockObj, SendRequest)
__anon51d2fecd0802(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 323         .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) {
324             service.OnRemoteRequest(code, data, reply, option);
325             return SUCCESS;
326         });
327     service.PushDataCollectTask(mockObj, "", "devId", promise);
328     EXPECT_EQ(0, promise->get_future().get());
329 }
330 
331 HWTEST_F(SecurityGuardDataCollectSaTest, TestPushDataCollectTask_ValidConditions01, TestSize.Level1)
332 {
333     std::shared_ptr<std::promise<int32_t>> promise = std::make_shared<std::promise<int32_t>>();
334     EXPECT_TRUE(promise != nullptr);
335     EXPECT_CALL(*(DataFormat::GetInterface()), ParseConditions).WillOnce([]
__anon51d2fecd0902(std::string conditions, RequestCondition &reqCondition) 336         (std::string conditions, RequestCondition &reqCondition) {
337             reqCondition.auditEvent = {1};
338         });
339     EXPECT_CALL(DatabaseManager::GetInstance(), QueryEventByEventId(_, _, _))
340         .WillRepeatedly([] (std::string table, std::vector<int64_t> &eventIds,
__anon51d2fecd0a02(std::string table, std::vector<int64_t> &eventIds, std::vector<SecEvent> &events) 341             std::vector<SecEvent> &events) {
342             SecEvent event {};
343             event.eventId = 1;
344             events.emplace_back(event);
345             return SUCCESS;
346         });
347     sptr<MockRemoteObject> mockObj(new (std::nothrow) MockRemoteObject());
348     EXPECT_CALL(*mockObj, SendRequest).Times(1);
349     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
350     service.PushDataCollectTask(mockObj, "conditions", "devId", promise);
351     EXPECT_EQ(1, promise->get_future().get());
352 }
353 
354 HWTEST_F(SecurityGuardDataCollectSaTest, TestPushDataCollectTask_ValidConditions02, TestSize.Level1)
355 {
356     std::shared_ptr<std::promise<int32_t>> promise = std::make_shared<std::promise<int32_t>>();
357     EXPECT_TRUE(promise != nullptr);
358     sptr<MockRemoteObject> mockObj(new (std::nothrow) MockRemoteObject());
359     EXPECT_TRUE(mockObj != nullptr);
360     EXPECT_CALL(*(DataFormat::GetInterface()), ParseConditions).WillOnce([]
__anon51d2fecd0b02(std::string conditions, RequestCondition &reqCondition) 361         (std::string conditions, RequestCondition &reqCondition) {
362             reqCondition.auditEvent = {1};
363         });
364     EXPECT_CALL(DatabaseManager::GetInstance(), QueryEventByEventId(_, _, _))
365         .WillRepeatedly([] (std::string table, std::vector<int64_t> &eventIds,
__anon51d2fecd0c02(std::string table, std::vector<int64_t> &eventIds, std::vector<SecEvent> &events) 366             std::vector<SecEvent> &events) {
367             SecEvent event {};
368             event.eventId = 1;
369             return SUCCESS;
370         });
371     EXPECT_CALL(*mockObj, SendRequest).Times(1);
372     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
373     service.PushDataCollectTask(mockObj, "conditions", "devId", promise);
374     EXPECT_EQ(0, promise->get_future().get());
375 }
376 
377 HWTEST_F(SecurityGuardDataCollectSaTest, RequestDataSubmit_NoPermission, TestSize.Level1)
378 {
379     int64_t eventId = 1;
380     std::string version = "1.0";
381     std::string time = "2022-01-01";
382     std::string content = "content";
383 
384     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken).WillRepeatedly(
385         Return(AccessToken::PermissionState::PERMISSION_DENIED));
386     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
387     service.OnAddSystemAbility(RISK_ANALYSIS_MANAGER_SA_ID, "deviceId");
388     int32_t result = service.RequestDataSubmit(eventId, version, time, content);
389     EXPECT_EQ(result, NO_PERMISSION);
390 }
391 
392 HWTEST_F(SecurityGuardDataCollectSaTest, RequestDataSubmit_BadParam, TestSize.Level1)
393 {
394     int64_t eventId = 1;
395     std::string version = "1.0";
396     std::string time = "2022-01-01";
397     std::string content = "content";
398 
399     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken).WillOnce(
400         Return(AccessToken::PermissionState::PERMISSION_GRANTED));
401     EXPECT_CALL(*(DataFormat::GetInterface()), CheckRiskContent).WillOnce(Return(false));
402     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
403         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
404     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
405         .WillOnce(Return(true));
406     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
407     int32_t result = service.RequestDataSubmit(eventId, version, time, content);
408     EXPECT_EQ(result, BAD_PARAM);
409 }
410 
411 HWTEST_F(SecurityGuardDataCollectSaTest, RequestDataSubmit_Success01, TestSize.Level1)
412 {
413     int64_t eventId = 1;
414     std::string version = "1.0";
415     std::string time = "2022-01-01";
416     std::string content = "content";
417 
418     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
419         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
420     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
421         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
422     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
423         .WillOnce(Return(true));
424     EXPECT_CALL(*(DataFormat::GetInterface()), CheckRiskContent).WillOnce(Return(true));
425     EXPECT_CALL(DatabaseManager::GetInstance(), InsertEvent).WillRepeatedly(Return(FAILED));
426     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
427     int32_t result = service.RequestDataSubmit(eventId, version, time, content);
428     EXPECT_EQ(result, SUCCESS);
429 }
430 
431 HWTEST_F(SecurityGuardDataCollectSaTest, RequestDataSubmit_Success02, TestSize.Level1)
432 {
433     int64_t eventId = 1;
434     std::string version = "1.0";
435     std::string time = "2022-01-01";
436     std::string content = "content";
437 
438     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
439         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
440     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
441         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
442     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
443         .WillOnce(Return(true));
444     EXPECT_CALL(*(DataFormat::GetInterface()), CheckRiskContent).WillOnce(Return(true));
445     EXPECT_CALL(DatabaseManager::GetInstance(), InsertEvent).WillRepeatedly(Return(SUCCESS));
446     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
447     int32_t result = service.RequestDataSubmit(eventId, version, time, content);
448     EXPECT_EQ(result, SUCCESS);
449 }
450 
451 HWTEST_F(SecurityGuardDataCollectSaTest, RequestDataSubmit_Success03, TestSize.Level1)
452 {
453     int64_t eventId = 1;
454     std::string version = "1.0";
455     std::string time = "2022-01-01";
456     std::string content = "content";
457 
458     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
459         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
460     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
461         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
462     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
463         .WillOnce(Return(true));
464     EXPECT_CALL(*(DataFormat::GetInterface()), CheckRiskContent).WillOnce(Return(true));
465     EXPECT_CALL(DatabaseManager::GetInstance(), InsertEvent).WillRepeatedly(Return(SUCCESS));
466     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
467     int32_t result = service.RequestDataSubmit(eventId, version, time, content, false);
468     EXPECT_EQ(result, SUCCESS);
469 }
470 
471 HWTEST_F(SecurityGuardDataCollectSaTest, RequestRiskData01, TestSize.Level1)
472 {
473     std::string devId = "devId";
474     std::string eventList = "eventList";
475     sptr<IRemoteObject> obj = nullptr;
476 
477     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
478         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_DENIED));
479     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
480     int32_t result = service.RequestRiskData(devId, eventList, obj);
481     EXPECT_EQ(result, NO_PERMISSION);
482 }
483 
484 HWTEST_F(SecurityGuardDataCollectSaTest, RequestRiskData02, TestSize.Level1)
485 {
486     std::string devId = "devId";
487     std::string eventList = "eventList";
488     sptr<IRemoteObject> obj = nullptr;
489 
490     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
491         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
492     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
493         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
494     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
495         .WillOnce(Return(true));
496     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
497     int32_t result = service.RequestRiskData(devId, eventList, obj);
498     service.OnRemoveSystemAbility(0, "dd");
499     EXPECT_EQ(result, SUCCESS);
500 }
501 
502 HWTEST_F(SecurityGuardDataCollectSaTest, RequestRiskData03, TestSize.Level1)
503 {
504     std::string devId = "devId";
505     std::string eventList = "eventList";
506     sptr<IRemoteObject> obj = nullptr;
507 
508     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
509         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
510     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
511         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
512     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
513         .WillOnce(Return(false));
514     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
515     int32_t result = service.RequestRiskData(devId, eventList, obj);
516     EXPECT_EQ(result, NO_SYSTEMCALL);
517 }
518 
519 HWTEST_F(SecurityGuardDataCollectSaTest, Subscribe01, TestSize.Level1)
520 {
521     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
522     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
523 
524     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
525         .WillRepeatedly(Return(AccessToken::PermissionState::PERMISSION_DENIED));
526     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
527     int32_t result = service.Subscribe(subscribeInfo, obj);
528     EXPECT_EQ(result, NO_PERMISSION);
529 }
530 
531 HWTEST_F(SecurityGuardDataCollectSaTest, Unsubscribe01, TestSize.Level1)
532 {
533     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
534     sptr<MockRemoteObject> mockObj(new (std::nothrow) MockRemoteObject());
535 
536     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
537         .WillRepeatedly(Return(AccessToken::PermissionState::PERMISSION_DENIED));
538     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
539     int32_t result = service.Unsubscribe(subscribeInfo, mockObj);
540     EXPECT_EQ(result, NO_PERMISSION);
541 }
542 
543 HWTEST_F(SecurityGuardDataCollectSaTest, Subscribe02, TestSize.Level1)
544 {
545     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
546     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
547 
548     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
549         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
550     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
551         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
552     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
553         .WillOnce(Return(false));
554     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
555     int32_t result = service.Subscribe(subscribeInfo, obj);
556     EXPECT_EQ(result, NO_SYSTEMCALL);
557 }
558 
559 HWTEST_F(SecurityGuardDataCollectSaTest, Unsubscribe02, TestSize.Level1)
560 {
561     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
562     sptr<MockRemoteObject> mockObj(new (std::nothrow) MockRemoteObject());
563 
564     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
565         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
566     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
567         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
568     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
569         .WillOnce(Return(false));
570     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
571     int32_t result = service.Unsubscribe(subscribeInfo, mockObj);
572     EXPECT_EQ(result, NO_SYSTEMCALL);
573 }
574 
575 HWTEST_F(SecurityGuardDataCollectSaTest, Subscribe03, TestSize.Level1)
576 {
577     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
578     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
579     sptr<IPCObjectProxy::DeathRecipient> rec = nullptr;
580     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
581     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
582         .WillRepeatedly(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
583     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
584         .WillRepeatedly(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
585     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
586         .WillRepeatedly(Return(true));
587     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillOnce(Return(false));
588     EXPECT_CALL(*obj, AddDeathRecipient(_))
__anon51d2fecd0d02(const sptr<IPCObjectProxy::DeathRecipient> &recipient) 589         .WillRepeatedly([&rec] (const sptr<IPCObjectProxy::DeathRecipient> &recipient) {
590             rec = recipient;
591             return true;
592         });
593     int32_t result = service.Subscribe(subscribeInfo, obj);
594     EXPECT_NE(result, SUCCESS);
595 
596     EXPECT_CALL(*obj, RemoveDeathRecipient).Times(1);
597     result = service.Unsubscribe(subscribeInfo, obj);
598     EXPECT_EQ(result, SUCCESS);
599 }
600 
601 HWTEST_F(SecurityGuardDataCollectSaTest, InsertSubscribeRecord_Success, TestSize.Level1)
602 {
603     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
604     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
605     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillOnce(Return(SUCCESS));
606     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb).WillOnce(Return(SUCCESS));
607     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(Return(true));
608     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, obj);
609     EXPECT_EQ(result, SUCCESS);
610     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, obj);
611     EXPECT_EQ(result, SUCCESS);
612 }
613 
614 HWTEST_F(SecurityGuardDataCollectSaTest, InsertSubscribeRecord_Fail01, TestSize.Level1)
615 {
616     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
617     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
618     sptr<MockRemoteObject> obj2(new (std::nothrow) MockRemoteObject());
619     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillOnce(Return(FAILED)).WillRepeatedly(Return(SUCCESS));
620     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(Return(true));
621     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, obj);
622     EXPECT_NE(result, SUCCESS);
623     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, obj);
624     EXPECT_EQ(result, SUCCESS);
625     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, obj2);
626     EXPECT_EQ(result, SUCCESS);
627     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, obj);
628     EXPECT_EQ(result, SUCCESS);
629     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, obj2);
630     EXPECT_EQ(result, SUCCESS);
631     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, obj);
632     EXPECT_EQ(result, SUCCESS);
633 }
634 
635 HWTEST_F(SecurityGuardDataCollectSaTest, Publish_WithSubscribers, TestSize.Level1)
636 {
637     SecurityCollector::Event event {
638         .eventId = 1,
639         .version = "version",
640         .content = "content"
641     };
642     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event));
643 }
644 
645 HWTEST_F(SecurityGuardDataCollectSaTest, Publish_NullProxy, TestSize.Level1)
646 {
647     SecurityCollector::Event event2 {
648         .eventId = 2,
649         .version = "version",
650         .content = "content",
651         .extra = ""
652     };
653     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event2);
654     sptr<MockRemoteObject> obj = nullptr;
655     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillRepeatedly(Return(SUCCESS));
656     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb).WillRepeatedly(Return(SUCCESS));
657     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(Return(true));
658     EXPECT_CALL(ConfigDataManager::GetInstance(), GetIsBatchUpload).WillOnce(Return(false)).WillOnce(Return(true));
659     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, obj);
660     EXPECT_EQ(result, SUCCESS);
661     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event2));
662     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event2));
663     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, obj);
664     EXPECT_EQ(result, SUCCESS);
665 }
666 
667 HWTEST_F(SecurityGuardDataCollectSaTest, Publish_NotNullProxy, TestSize.Level1)
668 {
669     SecurityCollector::Event event2 {
670         .eventId = SecurityCollector::FILE_EVENTID,
671         .version = "version",
672         .content = "content",
673         .extra = ""
674     };
675     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event2);
676     sptr<MockRemoteObject> mockObject(new (std::nothrow) MockRemoteObject());
677     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillRepeatedly(Return(SUCCESS));
678     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb).WillRepeatedly(Return(SUCCESS));
679     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
680     EXPECT_CALL(*mockObject, SendRequest)
__anon51d2fecd0e02(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 681         .WillOnce([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) {
682             service.OnRemoteRequest(code, data, reply, option);
683             return SUCCESS;
684         });
685     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(Return(true));
686     EXPECT_CALL(ConfigDataManager::GetInstance(), GetIsBatchUpload).WillRepeatedly(Return(false));
687     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, mockObject);
688     EXPECT_EQ(result, SUCCESS);
689     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event2));
690     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId,
691         mockObject);
692     EXPECT_EQ(result, SUCCESS);
693 }
694 
695 HWTEST_F(SecurityGuardDataCollectSaTest, Publish_DifferentEventId01, TestSize.Level1)
696 {
697     SecurityCollector::Event event2 {
698         .eventId = 1,
699         .version = "version",
700         .content = "content",
701         .extra = ""
702     };
703     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event2);
704     sptr<MockRemoteObject> mockObj(new (std::nothrow) MockRemoteObject());
705     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillRepeatedly(Return(SUCCESS));
706     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb).WillRepeatedly(Return(SUCCESS));
707     EXPECT_CALL(ConfigDataManager::GetInstance(), GetIsBatchUpload).WillRepeatedly(Return(false));
708     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
709     EXPECT_CALL(*mockObj, SendRequest)
__anon51d2fecd0f02(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 710         .WillOnce([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) {
711             service.OnRemoteRequest(code, data, reply, option);
712             return SUCCESS;
713         });
714     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, mockObj);
715     EXPECT_EQ(result, SUCCESS);
716     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event2));
717     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId,
718         mockObj);
719     EXPECT_EQ(result, SUCCESS);
720 }
721 
722 HWTEST_F(SecurityGuardDataCollectSaTest, Publish_DifferentEventId02, TestSize.Level1)
723 {
724     SecurityCollector::Event event2 {
725         .eventId = SecurityCollector::PROCESS_EVENTID,
726         .version = "version",
727         .content = "content",
728         .extra = ""
729     };
730     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event2);
731     sptr<MockRemoteObject> object(new (std::nothrow) MockRemoteObject());
732     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillRepeatedly(Return(SUCCESS));
733     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb).WillRepeatedly(Return(SUCCESS));
734     EXPECT_CALL(ConfigDataManager::GetInstance(), GetIsBatchUpload).WillRepeatedly(Return(false));
735     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
736     EXPECT_CALL(*object, SendRequest)
__anon51d2fecd1002(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 737         .WillOnce([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) {
738             service.OnRemoteRequest(code, data, reply, option);
739             return SUCCESS;
740         });
741     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, object);
742     EXPECT_EQ(result, SUCCESS);
743     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event2));
744     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, object);
745     EXPECT_EQ(result, SUCCESS);
746 }
747 
748 HWTEST_F(SecurityGuardDataCollectSaTest, Publish_DifferentEventId03, TestSize.Level1)
749 {
750     SecurityCollector::Event event2 {
751         .eventId = SecurityCollector::NETWORK_EVENTID,
752         .version = "version",
753         .content = "content",
754         .extra = ""
755     };
756     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event2);
757     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
758     EXPECT_CALL(DatabaseManager::GetInstance(), SubscribeDb).WillRepeatedly(Return(SUCCESS));
759     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb).WillRepeatedly(Return(SUCCESS));
760     EXPECT_CALL(ConfigDataManager::GetInstance(), GetIsBatchUpload).WillRepeatedly(Return(false));
761     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
762     EXPECT_CALL(*obj, SendRequest)
__anon51d2fecd1102(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) 763         .WillOnce([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) {
764             service.OnRemoteRequest(code, data, reply, option);
765             return SUCCESS;
766         });
767     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeRecord(subscribeInfo, obj);
768     EXPECT_EQ(result, SUCCESS);
769     EXPECT_TRUE(AcquireDataSubscribeManager::GetInstance().BatchPublish(event2));
770     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecord(subscribeInfo.GetEvent().eventId, obj);
771     EXPECT_EQ(result, SUCCESS);
772 }
773 
774 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrSubscribeSc01, TestSize.Level1)
775 {
776     AcquireDataSubscribeManager adsm {};
777     SecurityCollector::Event event {
778         .eventId = 111
779     };
780     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
781     adsm.scSubscribeMap_.insert({111,
782         std::make_shared<AcquireDataSubscribeManager::SecurityCollectorSubscriber>(event)});
783     int result = adsm.SubscribeSc(111, obj);
784     EXPECT_EQ(result, SUCCESS);
785 }
786 
787 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrSubscribeSc02, TestSize.Level1)
788 {
789     AcquireDataSubscribeManager adsm {};
790     SecurityCollector::Event event {
791         .eventId = 111
792     };
793     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1202(int64_t eventId, EventCfg &config) 794         [] (int64_t eventId, EventCfg &config) {
795         config.dbTable = "risk_event";
796         config.eventType = 3;
797         config.prog = "security_guard";
798         return true;
799     });
800     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), StartCollectors).WillOnce(
801         Return(false));
802     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
803     int result = adsm.SubscribeSc(111, obj);
804     EXPECT_EQ(result, FAILED);
805     result = adsm.UnSubscribeSc(111);
806     EXPECT_EQ(result, FAILED);
807 }
808 
809 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrSubscribeSc03, TestSize.Level1)
810 {
811     AcquireDataSubscribeManager adsm {};
812     SecurityCollector::Event event {
813         .eventId = 111
814     };
815     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1302(int64_t eventId, EventCfg &config) 816         [] (int64_t eventId, EventCfg &config) {
817         config.dbTable = "risk_event";
818         config.eventType = 3;
819         config.prog = "";
820         return true;
821     });
822     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
823     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Subscribe(_)).WillOnce(Return(FAILED));
824     int result = adsm.SubscribeSc(111, obj);
825     EXPECT_EQ(result, FAILED);
826     result = adsm.UnSubscribeSc(111);
827     EXPECT_EQ(result, FAILED);
828 }
829 
830 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrSubscribeSc04, TestSize.Level1)
831 {
832     AcquireDataSubscribeManager adsm {};
833     SecurityCollector::Event event {
834         .eventId = 111
835     };
836     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1402(int64_t eventId, EventCfg &config) 837         [] (int64_t eventId, EventCfg &config) {
838         config.dbTable = "risk_event";
839         config.eventType = 3;
840         config.prog = "";
841         return true;
842     });
843     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
844     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Subscribe(_)).WillOnce(Return(SUCCESS));
845     int result = adsm.SubscribeSc(111, obj);
846     EXPECT_EQ(result, SUCCESS);
847     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Unsubscribe(_)).WillOnce(
848         Return(SUCCESS)).WillOnce(Return(FAILED));
849     result = adsm.UnSubscribeSc(111);
850     EXPECT_EQ(result, SUCCESS);
851     AcquireDataSubscribeManager::GetInstance().RemoveSubscribeRecordOnRemoteDied(obj);
852     auto subscriber = std::make_shared<AcquireDataSubscribeManager::SecurityCollectorSubscriber>(event);
853     adsm.scSubscribeMap_.emplace(event.eventId, subscriber);
854     result = adsm.UnSubscribeSc(111);
855     EXPECT_EQ(result, FAILED);
856 }
857 
858 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrSubscribeSc05, TestSize.Level1)
859 {
860     AcquireDataSubscribeManager adsm {};
861     SecurityCollector::Event event {
862         .eventId = 111
863     };
864     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1502(int64_t eventId, EventCfg &config) 865         [] (int64_t eventId, EventCfg &config) {
866         return false;
867     });
868     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
869     int result = adsm.SubscribeSc(111, obj);
870     EXPECT_EQ(result, BAD_PARAM);
871 }
872 
873 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrSubscribeSc06, TestSize.Level1)
874 {
875     AcquireDataSubscribeManager adsm {};
876     SecurityCollector::Event event {
877         .eventId = 111
878     };
879     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1602(int64_t eventId, EventCfg &config) 880         [] (int64_t eventId, EventCfg &config) {
881         config.dbTable = "risk_event";
882         config.eventType = 3;
883         config.prog = "security_guard";
884         return true;
885     });
886     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), StartCollectors).WillOnce(
887         Return(false));
888     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
889     int result = adsm.SubscribeSc(111, obj);
890     EXPECT_EQ(result, FAILED);
891 
892     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), StopCollectors).WillOnce(
893         Return(false));
894     auto collectorListenner = std::make_shared<AcquireDataSubscribeManager::CollectorListenner>(event);
895     adsm.eventToListenner_.emplace(event.eventId, collectorListenner);
896     result = adsm.UnSubscribeSc(111);
897     EXPECT_EQ(result, FAILED);
898 }
899 
900 HWTEST_F(SecurityGuardDataCollectSaTest, AcquireDataSubscrUnsubscribeSc01, TestSize.Level1)
901 {
902     AcquireDataSubscribeManager adsm {};
__anon51d2fecd1702(int64_t eventId, EventCfg &config) 903     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillOnce([] (int64_t eventId, EventCfg &config) {
904         config.dbTable = "risk_event";
905         config.eventType = 3;
906         config.prog = "";
907         return false;
908     });
909     int result = adsm.UnSubscribeSc(111);
910     EXPECT_EQ(result, BAD_PARAM);
911 }
912 
913 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd01, TestSize.Level1)
914 {
915     MessageParcel data;
916     MessageParcel reply;
917     MessageOption option;
918 
919     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
920     data.WriteInt32(DataCollectManagerService::CMD_DATA_REQUEST);
921     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
922     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_COLLECT, data, reply, option);
923     EXPECT_EQ(result, BAD_PARAM);
924 }
925 
926 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd02, TestSize.Level1)
927 {
928     MessageParcel data;
929     MessageParcel reply;
930     MessageOption option;
931 
932     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
933     data.WriteInt32(DataCollectManagerService::CMD_DATA_REQUEST);
934     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
935     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_REQUEST, data, reply, option);
936     EXPECT_EQ(result, BAD_PARAM);
937 }
938 
939 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd03, TestSize.Level1)
940 {
941     MessageParcel data;
942     MessageParcel reply;
943     MessageOption option;
944 
945     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
946     data.WriteInt32(DataCollectManagerService::CMD_DATA_SUBSCRIBE);
947     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
948     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_SUBSCRIBE, data, reply, option);
949     EXPECT_EQ(result, BAD_PARAM);
950 }
951 
952 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd04, TestSize.Level1)
953 {
954     MessageParcel data;
955     MessageParcel reply;
956     MessageOption option;
957 
958     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
959     data.WriteInt32(DataCollectManagerService::CMD_DATA_UNSUBSCRIBE);
960     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
961     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_UNSUBSCRIBE, data, reply, option);
962     EXPECT_EQ(result, BAD_PARAM);
963 }
964 
965 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd05, TestSize.Level1)
966 {
967     MessageParcel data;
968     MessageParcel reply;
969     MessageOption option;
970 
971     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
972     data.WriteInt32(DataCollectManagerService::CMD_SECURITY_EVENT_QUERY);
973     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
974     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_EVENT_QUERY,
975         data, reply, option);
976     EXPECT_EQ(result, BAD_PARAM);
977 }
978 
979 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd06, TestSize.Level1)
980 {
981     MessageParcel data;
982     MessageParcel reply;
983     MessageOption option;
984 
985     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
986     data.WriteInt64(0);
987     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
988     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_COLLECT, data, reply, option);
989     EXPECT_EQ(result, BAD_PARAM);
990 }
991 
992 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd07, TestSize.Level1)
993 {
994     MessageParcel data;
995     MessageParcel reply;
996     MessageOption option;
997 
998     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
999     data.WriteInt64(0);
1000     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1001     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_REQUEST, data, reply, option);
1002     EXPECT_EQ(result, BAD_PARAM);
1003 }
1004 
1005 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd08, TestSize.Level1)
1006 {
1007     MessageParcel data;
1008     MessageParcel reply;
1009     MessageOption option;
1010 
1011     SecurityCollector::Event event {
1012         .eventId = 0,
1013         .version = "version",
1014         .content = "content",
1015         .extra = ""
1016     };
1017     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event);
1018     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1019     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1020     data.WriteParcelable(&subscribeInfo);
1021     data.WriteRemoteObject(obj);
1022     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1023     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_SUBSCRIBE, data, reply, option);
1024     EXPECT_EQ(result, BAD_PARAM);
1025 }
1026 
1027 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd09, TestSize.Level1)
1028 {
1029     MessageParcel data;
1030     MessageParcel reply;
1031     MessageOption option;
1032 
1033     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1034     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1035     data.WriteRemoteObject(obj);
1036 
1037     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken).WillRepeatedly(
1038         Return(AccessToken::PermissionState::PERMISSION_DENIED));
1039     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(Return(true));
1040     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1041     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_UNSUBSCRIBE, data, reply, option);
1042     EXPECT_EQ(result, BAD_PARAM);
1043 }
1044 
1045 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd10, TestSize.Level1)
1046 {
1047     MessageParcel data;
1048     MessageParcel reply;
1049     MessageOption option;
1050 
1051     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1052     data.WriteUint32(MAX_QUERY_EVENT_SIZE + 1);
1053     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1054     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_EVENT_QUERY,
1055         data, reply, option);
1056     EXPECT_EQ(result, BAD_PARAM);
1057 }
1058 
1059 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd11, TestSize.Level1)
1060 {
1061     MessageParcel data;
1062     MessageParcel reply;
1063     MessageOption option;
1064 
1065     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1066     data.WriteUint32(1);
1067     SecurityCollector::SecurityEventRuler ruler;
1068     data.WriteParcelable(&ruler);
1069     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1070     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_EVENT_QUERY,
1071         data, reply, option);
1072     EXPECT_EQ(result, BAD_PARAM);
1073 }
1074 
1075 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd12, TestSize.Level1)
1076 {
1077     MessageParcel data;
1078     MessageParcel reply;
1079     MessageOption option;
1080 
1081     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1082     data.WriteUint32(1);
1083     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1084     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_COLLECTOR_START,
1085         data, reply, option);
1086     EXPECT_EQ(result, BAD_PARAM);
1087 }
1088 
1089 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd13, TestSize.Level1)
1090 {
1091     MessageParcel data;
1092     MessageParcel reply;
1093     MessageOption option;
1094     SecurityCollector::Event event {};
1095     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event, -1, false);
1096     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1097     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1098     data.WriteRemoteObject(obj);
1099 
1100     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1101     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_COLLECTOR_START,
1102         data, reply, option);
1103     EXPECT_EQ(result, BAD_PARAM);
1104 }
1105 
1106 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd14, TestSize.Level1)
1107 {
1108     MessageParcel data;
1109     MessageParcel reply;
1110     MessageOption option;
1111 
1112     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1113     data.WriteUint32(1);
1114     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1115     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_COLLECTOR_START,
1116         data, reply, option);
1117     EXPECT_EQ(result, BAD_PARAM);
1118 }
1119 
1120 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd15, TestSize.Level1)
1121 {
1122     MessageParcel data;
1123     MessageParcel reply;
1124     MessageOption option;
1125 
1126     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1127     data.WriteFileDescriptor(-1);
1128     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1129     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_CONFIG_UPDATE,
1130         data, reply, option);
1131     EXPECT_EQ(result, BAD_PARAM);
1132 }
1133 
1134 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd16, TestSize.Level1)
1135 {
1136     MessageParcel data;
1137     MessageParcel reply;
1138     MessageOption option;
1139 
1140     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1141     data.WriteString("test");
1142     data.WriteFileDescriptor(-1);
1143     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1144     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_CONFIG_UPDATE,
1145         data, reply, option);
1146     EXPECT_EQ(result, BAD_PARAM);
1147 }
1148 
1149 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd17, TestSize.Level1)
1150 {
1151     MessageParcel data;
1152     MessageParcel reply;
1153     MessageOption option;
1154 
1155     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1156     data.WriteString("test");
1157     data.WriteFileDescriptor(1);
1158     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1159     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken).WillOnce(
1160         Return(AccessToken::PermissionState::PERMISSION_DENIED));
1161     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_CONFIG_UPDATE,
1162         data, reply, option);
1163     EXPECT_EQ(result, NO_PERMISSION);
1164 }
1165 
1166 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd19, TestSize.Level1)
1167 {
1168     MessageParcel data;
1169     MessageParcel reply;
1170     MessageOption option;
1171     SecurityCollector::Event event {};
1172     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo(event, -1, false);
1173     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1174     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1175     data.WriteRemoteObject(obj);
1176 
1177     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1178     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_COLLECTOR_STOP,
1179         data, reply, option);
1180     EXPECT_EQ(result, BAD_PARAM);
1181 }
1182 
1183 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithDataRequestCmd20, TestSize.Level1)
1184 {
1185     MessageParcel data;
1186     MessageParcel reply;
1187     MessageOption option;
1188 
1189     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1190     data.WriteUint32(1);
1191     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1192     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_SECURITY_COLLECTOR_STOP,
1193         data, reply, option);
1194     EXPECT_EQ(result, BAD_PARAM);
1195 }
1196 
1197 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithInvalidCmd, TestSize.Level1)
1198 {
1199     MessageParcel data;
1200     MessageParcel reply;
1201     MessageOption option;
1202 
1203     data.WriteInterfaceToken(IDataCollectManager::GetDescriptor());
1204     data.WriteInt32(100);
1205     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1206     int32_t result = service.OnRemoteRequest(100, data, reply, option);
1207 
1208     EXPECT_EQ(result, 305);
1209 }
1210 
1211 HWTEST_F(SecurityGuardDataCollectSaTest, TestOnRemoteRequestWithInvalidToken, TestSize.Level1)
1212 {
1213     MessageParcel data;
1214     MessageParcel reply;
1215     MessageOption option;
1216     data.WriteInterfaceToken(u"InvalidToken");
1217     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1218     int32_t result = service.OnRemoteRequest(DataCollectManagerService::CMD_DATA_COLLECT, data, reply, option);
1219 
1220     EXPECT_EQ(result, 305);
1221 }
1222 
1223 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent, TestSize.Level1)
1224 {
1225     SecurityCollector::SecurityEventRuler rule(11111);
1226     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1227     rules.emplace_back(rule);
1228     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1229 
1230     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1231         .WillRepeatedly(Return(AccessToken::PermissionState::PERMISSION_DENIED));
1232     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1233     int32_t result = service.QuerySecurityEvent(rules, obj, "");
1234     EXPECT_EQ(result, NO_PERMISSION);
1235 }
1236 
1237 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent01, TestSize.Level1)
1238 {
1239     SecurityCollector::SecurityEventRuler rule(11111);
1240     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1241     rules.emplace_back(rule);
1242     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1243     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillRepeatedly(Return(false));
1244     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1245         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1246     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1247         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1248     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1249         .WillOnce(Return(true));
1250     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1251     int32_t result = service.QuerySecurityEvent(rules, obj, "");
1252     EXPECT_EQ(result, SUCCESS);
1253 }
1254 
1255 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent02, TestSize.Level1)
1256 {
1257     SecurityCollector::SecurityEventRuler rule(11111);
1258     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1259     rules.emplace_back(rule);
1260     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1261     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillRepeatedly(Return(false));
1262     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1263         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1264     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1265         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1266     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1267         .WillOnce(Return(false));
1268     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1269     int32_t result = service.QuerySecurityEvent(rules, obj, "");
1270     EXPECT_EQ(result, NO_SYSTEMCALL);
1271 }
1272 
1273 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent03, TestSize.Level1)
1274 {
1275     SecurityCollector::SecurityEventRuler rule(11111);
1276     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1277     rules.emplace_back(rule);
1278     sptr<MockRemoteObject> obj = nullptr;
1279 
1280     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1281         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1282     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1283         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1284     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1285         .WillOnce(Return(true));
1286     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1287     int32_t result = service.QuerySecurityEvent(rules, obj, "");
1288     EXPECT_EQ(result, NULL_OBJECT);
1289 }
1290 
1291 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent04, TestSize.Level1)
1292 {
1293     SecurityCollector::SecurityEventRuler rule(11111);
1294     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1295     rules.emplace_back(rule);
1296     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1297     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillRepeatedly(Return(true));
1298     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1299         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1300     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1301         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1302     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1303         .WillOnce(Return(true));
1304     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1305     int32_t result = service.QuerySecurityEvent(rules, obj, "");
1306     EXPECT_EQ(result, SUCCESS);
1307 }
1308 
1309 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent05, TestSize.Level1)
1310 {
1311     SecurityCollector::SecurityEventRuler rule(11111);
1312     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1313     rules.emplace_back(rule);
1314     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1315     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillRepeatedly(Return(false));
1316     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1317     int32_t result = service.QuerySecurityEvent(rules, obj, "securityGroup");
1318     EXPECT_EQ(result, BAD_PARAM);
1319 }
1320 
1321 HWTEST_F(SecurityGuardDataCollectSaTest, QuerySecurityEvent07, TestSize.Level1)
1322 {
1323     SecurityCollector::SecurityEventRuler rule(11111);
1324     std::vector<SecurityCollector::SecurityEventRuler> rules {};
1325     rules.emplace_back(rule);
1326     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1327     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillRepeatedly(
__anon51d2fecd1802(const std::string &groupName, EventGroupCfg &config) 1328         [] (const std::string &groupName, EventGroupCfg &config) {
1329         config.eventList.insert(11111);
1330         config.permissionList.insert("testPermission");
1331         return true;
1332     });
1333     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1334         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED)).WillOnce(
1335             Return(AccessToken::PermissionState::PERMISSION_DENIED)).WillOnce(
1336             Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1337     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1338         .WillRepeatedly(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1339     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1340         .WillOnce(Return(true)).WillOnce(Return(false));
1341     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1342     int32_t result = service.QuerySecurityEvent(rules, obj, "securityGroup");
1343     EXPECT_EQ(result, SUCCESS);
1344     result = service.QuerySecurityEvent(rules, obj, "securityGroup");
1345     EXPECT_EQ(result, NO_PERMISSION);
1346     result = service.QuerySecurityEvent(rules, obj, "securityGroup");
1347     EXPECT_EQ(result, NO_SYSTEMCALL);
1348 }
1349 
1350 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStart01, TestSize.Level1)
1351 {
1352     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1353     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1354 
1355     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1356         .WillRepeatedly(Return(AccessToken::PermissionState::PERMISSION_DENIED));
1357     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1358     int32_t result = service.CollectorStart(subscribeInfo, obj);
1359     EXPECT_EQ(result, NO_PERMISSION);
1360 }
1361 
1362 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStart02, TestSize.Level1)
1363 {
1364     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1365     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1366 
1367     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1368         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1369     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1370         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1371     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1372         .WillOnce(Return(false));
1373     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1374     int32_t result = service.CollectorStart(subscribeInfo, obj);
1375     EXPECT_EQ(result, NO_SYSTEMCALL);
1376 }
1377 
1378 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStart03, TestSize.Level1)
1379 {
1380     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1381     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1382 
1383     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1384         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1385     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1386         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1387     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1388         .WillOnce(Return(true));
1389     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), CollectorStart(_)).WillOnce(Return(FAILED));
1390     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1391     int32_t result = service.CollectorStart(subscribeInfo, obj);
1392     EXPECT_EQ(result, FAILED);
1393 }
1394 
1395 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStart04, TestSize.Level1)
1396 {
1397     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1398     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1399 
1400     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1401         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1402     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1403         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1404     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1405         .WillOnce(Return(true));
1406     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), CollectorStart(_)).WillOnce(Return(SUCCESS));
1407     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1408     int32_t result = service.CollectorStart(subscribeInfo, obj);
1409     EXPECT_EQ(result, SUCCESS);
1410 }
1411 
1412 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStop01, TestSize.Level1)
1413 {
1414     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1415     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1416 
1417     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1418         .WillRepeatedly(Return(AccessToken::PermissionState::PERMISSION_DENIED));
1419     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1420     int32_t result = service.CollectorStop(subscribeInfo, obj);
1421     EXPECT_EQ(result, NO_PERMISSION);
1422 }
1423 
1424 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStop02, TestSize.Level1)
1425 {
1426     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1427     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1428 
1429     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1430         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1431     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1432         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1433     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1434         .WillOnce(Return(false));
1435     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1436     int32_t result = service.CollectorStop(subscribeInfo, obj);
1437     EXPECT_EQ(result, NO_SYSTEMCALL);
1438 }
1439 
1440 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStop03, TestSize.Level1)
1441 {
1442     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1443     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1444 
1445     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1446         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1447     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1448         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1449     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1450         .WillOnce(Return(true));
1451     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), CollectorStop(_)).WillOnce(Return(FAILED));
1452     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1453     int32_t result = service.CollectorStop(subscribeInfo, obj);
1454     EXPECT_EQ(result, FAILED);
1455 }
1456 
1457 HWTEST_F(SecurityGuardDataCollectSaTest, CollectorStop04, TestSize.Level1)
1458 {
1459     SecurityCollector::SecurityCollectorSubscribeInfo subscribeInfo{};
1460     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1461 
1462     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1463         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1464     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1465         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1466     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1467         .WillOnce(Return(true));
1468     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), CollectorStop(_)).WillOnce(Return(SUCCESS));
1469     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1470     int32_t result = service.CollectorStop(subscribeInfo, obj);
1471     EXPECT_EQ(result, SUCCESS);
1472 }
1473 
1474 HWTEST_F(SecurityGuardDataCollectSaTest, IsApiHasPermission01, TestSize.Level1)
1475 {
1476     const std::string api = "testString";
1477     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1478     int32_t result = service.IsApiHasPermission(api);
1479     EXPECT_EQ(result, FAILED);
1480 }
1481 
1482 HWTEST_F(SecurityGuardDataCollectSaTest, ConfigUpdate01, TestSize.Level1)
1483 {
1484     SecurityGuard::SecurityConfigUpdateInfo  subscribeInfo{};
1485     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1486         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_DENIED));
1487     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1488     int32_t result = service.ConfigUpdate(subscribeInfo);
1489     EXPECT_EQ(result, NO_PERMISSION);
1490 }
1491 
1492 HWTEST_F(SecurityGuardDataCollectSaTest, ConfigUpdate02, TestSize.Level1)
1493 {
1494     SecurityGuard::SecurityConfigUpdateInfo subscribeInfo{};
1495     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1496         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1497     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1498         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1499     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1500         .WillOnce(Return(false));
1501     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1502     int32_t result = service.ConfigUpdate(subscribeInfo);
1503     EXPECT_EQ(result, NO_SYSTEMCALL);
1504 }
1505 
1506 HWTEST_F(SecurityGuardDataCollectSaTest, ConfigUpdate03, TestSize.Level1)
1507 {
1508     SecurityGuard::SecurityConfigUpdateInfo subscribeInfo{};
1509     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1510         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1511     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1512         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1513     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1514         .WillOnce(Return(true));
1515     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1516     int32_t result = service.ConfigUpdate(subscribeInfo);
1517     EXPECT_EQ(result, BAD_PARAM);
1518 }
1519 
1520 HWTEST_F(SecurityGuardDataCollectSaTest, ConfigUpdate04, TestSize.Level1)
1521 {
1522     SecurityGuard::SecurityConfigUpdateInfo subscribeInfo(-1,
1523         SECURITY_GUARD_EVENT_CFG_FILE);
1524     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1525 
1526     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1527         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1528     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1529         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1530     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1531         .WillOnce(Return(true));
1532     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1533     int32_t result = service.ConfigUpdate(subscribeInfo);
1534     EXPECT_EQ(result, FAILED);
1535 }
1536 
1537 HWTEST_F(SecurityGuardDataCollectSaTest, WriteRemoteFileToLocal01, TestSize.Level1)
1538 {
1539     std::ofstream out("/data/test/unittest/resource/test.json");
1540     std::string errtmp = R"({
1541     "version":"001",
1542     "apps":""
1543     })";
1544     out << errtmp << std::endl;
1545     int32_t fd = open("/data/test/unittest/resource/test.json", O_RDONLY);
1546     SecurityGuard::SecurityConfigUpdateInfo subscribeInfo(fd, "test.json");
1547 
1548     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1549     std::string toPath = "/data/test/unittest/resource/";
1550     int32_t result = service.WriteRemoteFileToLocal(subscribeInfo, toPath + "testFile.json");
1551     close(fd);
1552     EXPECT_EQ(result, FAILED);
1553 }
1554 
1555 HWTEST_F(SecurityGuardDataCollectSaTest, WriteRemoteFileToLocal02, TestSize.Level1)
1556 {
1557     std::ofstream out("/data/test/unittest/resource/test.json");
1558     std::string errtmp = R"({
1559     "version":"001",
1560     "apps":""
1561     })";
1562     out << errtmp << std::endl;
1563     int32_t fd = 0;
1564     SecurityGuard::SecurityConfigUpdateInfo subscribeInfo(fd, "test.json");
1565 
1566     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1567     std::string toPath = "/data/test/unittest/resource/";
1568     int32_t result = service.WriteRemoteFileToLocal(subscribeInfo, toPath + "testFile.json");
1569     EXPECT_EQ(result, FAILED);
1570 }
1571 
1572 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventConfig001, TestSize.Level1)
1573 {
1574     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1575     std::string queryInfo;
1576     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1577         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_DENIED));
1578     int32_t ret = service.QuerySecurityEventConfig(queryInfo);
1579     EXPECT_EQ(ret, NO_PERMISSION);
1580 }
1581 
1582 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventConfig002, TestSize.Level1)
1583 {
1584     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1585     std::string queryInfo;
1586     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), VerifyAccessToken)
1587         .WillOnce(Return(AccessToken::PermissionState::PERMISSION_GRANTED));
1588     EXPECT_CALL(*(AccessToken::AccessTokenKit::GetInterface()), GetTokenType)
1589         .WillOnce(Return(AccessToken::TypeATokenTypeEnum::TOKEN_HAP));
1590     EXPECT_CALL(*(AccessToken::TokenIdKit::GetInterface()), IsSystemAppByFullTokenID)
1591         .WillOnce(Return(true));
1592     std::vector<EventCfg> emptyVector{};
1593     EXPECT_CALL(ConfigDataManager::GetInstance(), GetAllEventConfigs).WillOnce(Return(emptyVector));
1594     int32_t ret = service.QuerySecurityEventConfig(queryInfo);
1595     EXPECT_EQ(ret, SUCCESS);
1596 }
1597 
1598 HWTEST_F(SecurityGuardDataCollectSaTest, QueryEventConfig003, TestSize.Level1)
1599 {
1600     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1601     EventCfg cfg {};
1602     std::string queryInfo;
1603     std::vector<EventCfg> vector{};
1604     vector.emplace_back(cfg);
1605     EXPECT_CALL(ConfigDataManager::GetInstance(), GetAllEventConfigs).WillOnce(Return(vector));
1606     int32_t ret = service.QueryEventConfig(queryInfo);
1607     EXPECT_EQ(ret, SUCCESS);
1608 }
1609 
1610 HWTEST_F(SecurityGuardDataCollectSaTest, ParseTrustListFile001, TestSize.Level1)
1611 {
1612     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1613     EXPECT_FALSE(service.ParseTrustListFile(""));
1614 }
1615 
1616 HWTEST_F(SecurityGuardDataCollectSaTest, SubscribeScInSg, TestSize.Level1)
1617 {
1618     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1619     SecurityCollector::Event event {};
1620     event.eventId = 0;
1621     auto collectorListenner = std::make_shared<AcquireDataSubscribeManager::CollectorListenner>(event);
1622     AcquireDataSubscribeManager::GetInstance().eventToListenner_.emplace(event.eventId, collectorListenner);
1623     int ret = AcquireDataSubscribeManager::GetInstance().SubscribeScInSg(0, obj);
1624     EXPECT_CALL(*(DataFormat::GetInterface()), CheckRiskContent).WillOnce(Return(false)).WillOnce(Return(true));
1625     AcquireDataSubscribeManager::GetInstance().UploadEvent(event);
1626     AcquireDataSubscribeManager::GetInstance().UploadEvent(event);
1627     EXPECT_EQ(ret, SUCCESS);
1628     AcquireDataSubscribeManager::GetInstance().eventToListenner_.clear();
1629 }
1630 
1631 HWTEST_F(SecurityGuardDataCollectSaTest, SubscribeScInSg01, TestSize.Level1)
1632 {
1633     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1634     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), StartCollectors).WillOnce(
1635         Return(true));
1636     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), Mute).WillOnce(
1637         Return(SUCCESS));
1638     SecurityCollector::SecurityCollectorEventMuteFilter collectorFilter {};
1639     collectorFilter.eventId = 1;
1640     collectorFilter.isSetMute = true;
1641     AcquireDataSubscribeManager::GetInstance().muteCache_[1][obj].emplace_back(collectorFilter);
1642     int ret = AcquireDataSubscribeManager::GetInstance().SubscribeScInSg(1, obj);
1643     EXPECT_EQ(ret, SUCCESS);
1644     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1645     AcquireDataSubscribeManager::GetInstance().eventToListenner_.clear();
1646 }
1647 
1648 HWTEST_F(SecurityGuardDataCollectSaTest, SubscribeScInSg02, TestSize.Level1)
1649 {
1650     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1651     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), StartCollectors).WillOnce(
1652         Return(true));
1653     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), Unmute).WillOnce(
1654         Return(FAILED));
1655     SecurityCollector::SecurityCollectorEventMuteFilter collectorFilter {};
1656     collectorFilter.eventId = 1;
1657     collectorFilter.isSetMute = false;
1658     AcquireDataSubscribeManager::GetInstance().muteCache_[1][obj].emplace_back(collectorFilter);
1659     int ret = AcquireDataSubscribeManager::GetInstance().SubscribeScInSg(1, obj);
1660     EXPECT_EQ(ret, SUCCESS);
1661     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1662 }
1663 
1664 HWTEST_F(SecurityGuardDataCollectSaTest, SubscribeScInSc, TestSize.Level1)
1665 {
1666     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1667     SecurityCollector::Event event {};
1668     event.eventId = 0;
1669     auto subscriber = std::make_shared<AcquireDataSubscribeManager::SecurityCollectorSubscriber>(event);
1670     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.emplace(event.eventId, subscriber);
1671     int ret = AcquireDataSubscribeManager::GetInstance().SubscribeScInSc(0, obj);
1672     EXPECT_EQ(ret, SUCCESS);
1673     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.clear();
1674 }
1675 
1676 HWTEST_F(SecurityGuardDataCollectSaTest, SubscribeScInSc01, TestSize.Level1)
1677 {
1678     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1679     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Subscribe).WillOnce(
1680         Return(SecurityCollector::SUCCESS));
1681     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Mute).WillOnce(
1682         Return(SecurityCollector::SUCCESS));
1683     SecurityCollector::SecurityCollectorEventMuteFilter collectorFilter {};
1684     collectorFilter.eventId = 1;
1685     collectorFilter.isSetMute = true;
1686     AcquireDataSubscribeManager::GetInstance().muteCache_[1][obj].emplace_back(collectorFilter);
1687     int ret = AcquireDataSubscribeManager::GetInstance().SubscribeScInSc(1, obj);
1688     EXPECT_EQ(ret, SUCCESS);
1689     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.clear();
1690     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1691 }
1692 
1693 HWTEST_F(SecurityGuardDataCollectSaTest, SubscribeScInSc02, TestSize.Level1)
1694 {
1695     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1696     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Subscribe).WillOnce(
1697         Return(SecurityCollector::SUCCESS));
1698     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Unmute).WillOnce(
1699         Return(SecurityCollector::SUCCESS));
1700     SecurityCollector::SecurityCollectorEventMuteFilter collectorFilter {};
1701     collectorFilter.eventId = 1;
1702     collectorFilter.isSetMute = false;
1703     AcquireDataSubscribeManager::GetInstance().muteCache_[1][obj].emplace_back(collectorFilter);
1704     int ret = AcquireDataSubscribeManager::GetInstance().SubscribeScInSc(1, obj);
1705     EXPECT_EQ(ret, SUCCESS);
1706     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.clear();
1707     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1708 }
1709 
1710 HWTEST_F(SecurityGuardDataCollectSaTest, UnSubscribeScAndDb, TestSize.Level1)
1711 {
1712     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1713     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb(_, _))
1714         .WillOnce(Return(FAILED));
1715     int ret = AcquireDataSubscribeManager::GetInstance().UnSubscribeScAndDb(111);
1716     EXPECT_EQ(ret, FAILED);
1717 }
1718 
1719 HWTEST_F(SecurityGuardDataCollectSaTest, UnSubscribeScAndDb01, TestSize.Level1)
1720 {
1721     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1722     EXPECT_CALL(DatabaseManager::GetInstance(), UnSubscribeDb(_, _)).WillOnce(Return(SUCCESS));
1723     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(Return(false));
1724     int ret = AcquireDataSubscribeManager::GetInstance().UnSubscribeScAndDb(111);
1725     EXPECT_EQ(ret, BAD_PARAM);
1726 }
1727 
1728 HWTEST_F(SecurityGuardDataCollectSaTest, IsEventGroupHasPermission, TestSize.Level1)
1729 {
1730     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillRepeatedly(
__anon51d2fecd1902(const std::string &groupName, EventGroupCfg &config) 1731         [] (const std::string &groupName, EventGroupCfg &config) {
1732         config.permissionList.insert("testPermission");
1733         return true;
1734     });
1735 
1736     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1737     int32_t result = service.IsEventGroupHasPermission("securityGroup", {11111});
1738     EXPECT_EQ(result, BAD_PARAM);
1739 }
1740 
1741 HWTEST_F(SecurityGuardDataCollectSaTest, Mute, TestSize.Level1)
1742 {
1743     SecurityEventFilter subscribeMute {};
1744     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1745     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1746     int32_t result = service.Mute(subscribeMute, obj, "111");
1747     EXPECT_EQ(result, BAD_PARAM);
1748     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillOnce(Return(false));
1749     subscribeMute.filter_.eventGroup = "securityGroup";
1750     result = service.Mute(subscribeMute, obj, "111");
1751     EXPECT_EQ(result, BAD_PARAM);
1752 }
1753 
1754 HWTEST_F(SecurityGuardDataCollectSaTest, Unmute, TestSize.Level1)
1755 {
1756     SecurityEventFilter subscribeMute {};
1757     DataCollectManagerService service(DATA_COLLECT_MANAGER_SA_ID, true);
1758     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1759     int32_t result = service.Unmute(subscribeMute, obj, "111");
1760     EXPECT_EQ(result, BAD_PARAM);
1761     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventGroupConfig).WillOnce(Return(false));
1762     subscribeMute.filter_.eventGroup = "securityGroup";
1763     result = service.Unmute(subscribeMute, obj, "111");
1764     EXPECT_EQ(result, BAD_PARAM);
1765 }
1766 
1767 HWTEST_F(SecurityGuardDataCollectSaTest, InsertSubscribeMute, TestSize.Level1)
1768 {
1769     SecurityEventFilter subscribeMute {};
1770     subscribeMute.filter_.eventId = 111;
1771     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1a02(int64_t eventId, EventCfg &config) 1772         [] (int64_t eventId, EventCfg &config) {
1773         config.dbTable = "risk_event";
1774         config.eventType = 3;
1775         config.prog = "security_guard";
1776         return true;
1777     });
1778     SecurityCollector::SecurityCollectorEventMuteFilter collectorFilter {};
1779     collectorFilter.eventId = 111;
1780     SecurityCollector::Event event {
1781         .eventId = 111
1782     };
1783     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1784     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1785     EXPECT_EQ(result, SUCCESS);
1786 
1787     auto collectorListenner = std::make_shared<AcquireDataSubscribeManager::CollectorListenner>(event);
1788     AcquireDataSubscribeManager::GetInstance().eventToListenner_.emplace(event.eventId, collectorListenner);
1789     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), Mute).WillOnce(
1790         Return(false)).WillOnce(Return(true));
1791     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1792     EXPECT_EQ(result, FAILED);
1793     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1794     EXPECT_EQ(result, SUCCESS);
1795     constexpr size_t maxMute = 255;
1796     for (size_t i = 0; i < maxMute; i++) {
1797         AcquireDataSubscribeManager::GetInstance().muteCache_[111][obj].emplace_back(collectorFilter);
1798     }
1799     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1800     EXPECT_EQ(result, BAD_PARAM);
1801     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1802     EXPECT_EQ(result, BAD_PARAM);
1803     AcquireDataSubscribeManager::GetInstance().eventToListenner_.clear();
1804     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1805 }
1806 
1807 HWTEST_F(SecurityGuardDataCollectSaTest, InsertSubscribeMute01, TestSize.Level1)
1808 {
1809     SecurityEventFilter subscribeMute {};
1810     subscribeMute.filter_.eventId = 111;
1811     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1b02(int64_t eventId, EventCfg &config) 1812         [] (int64_t eventId, EventCfg &config) {
1813         config.dbTable = "risk_event";
1814         config.eventType = 3;
1815         config.prog = "";
1816         return true;
1817     });
1818     SecurityCollector::Event event {
1819         .eventId = 111
1820     };
1821     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1822     int32_t result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1823     EXPECT_EQ(result, SUCCESS);
1824     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.insert({111,
1825         std::make_shared<AcquireDataSubscribeManager::SecurityCollectorSubscriber>(event)});
1826 
1827     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Mute).WillOnce(
1828         Return(FAILED)).WillOnce(Return(SUCCESS));
1829     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1830     EXPECT_EQ(result, FAILED);
1831     result = AcquireDataSubscribeManager::GetInstance().InsertSubscribeMute(subscribeMute, obj, "1111");
1832     EXPECT_EQ(result, SUCCESS);
1833     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.clear();
1834     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1835 }
1836 
1837 HWTEST_F(SecurityGuardDataCollectSaTest, RemoveSubscribeMute, TestSize.Level1)
1838 {
1839     SecurityEventFilter subscribeMute {};
1840     subscribeMute.filter_.eventId = 111;
1841     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1c02(int64_t eventId, EventCfg &config) 1842         [] (int64_t eventId, EventCfg &config) {
1843         config.dbTable = "risk_event";
1844         config.eventType = 3;
1845         config.prog = "security_guard";
1846         return true;
1847     });
1848     SecurityCollector::SecurityCollectorEventMuteFilter collectorFilter {};
1849     collectorFilter.eventId = 111;
1850     SecurityCollector::Event event {
1851         .eventId = 111
1852     };
1853     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1854     int32_t result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1855     EXPECT_EQ(result, SUCCESS);
1856 
1857     auto collectorListenner = std::make_shared<AcquireDataSubscribeManager::CollectorListenner>(event);
1858     AcquireDataSubscribeManager::GetInstance().eventToListenner_.emplace(event.eventId, collectorListenner);
1859     EXPECT_CALL(SecurityCollector::DataCollection::GetInstance(), Unmute).WillOnce(
1860         Return(false)).WillOnce(Return(true));
1861     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1862     EXPECT_EQ(result, FAILED);
1863     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1864     EXPECT_EQ(result, SUCCESS);
1865     constexpr size_t maxMute = 255;
1866     for (size_t i = 0; i < maxMute; i++) {
1867         AcquireDataSubscribeManager::GetInstance().muteCache_[111][obj].emplace_back(collectorFilter);
1868     }
1869     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1870     EXPECT_EQ(result, BAD_PARAM);
1871     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1872     EXPECT_EQ(result, BAD_PARAM);
1873     AcquireDataSubscribeManager::GetInstance().eventToListenner_.clear();
1874     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1875 }
1876 
1877 HWTEST_F(SecurityGuardDataCollectSaTest, RemoveSubscribeMute01, TestSize.Level1)
1878 {
1879     SecurityEventFilter subscribeMute {};
1880     subscribeMute.filter_.eventId = 111;
1881     EXPECT_CALL(ConfigDataManager::GetInstance(), GetEventConfig).WillRepeatedly(
__anon51d2fecd1d02(int64_t eventId, EventCfg &config) 1882         [] (int64_t eventId, EventCfg &config) {
1883         config.dbTable = "risk_event";
1884         config.eventType = 3;
1885         config.prog = "";
1886         return true;
1887     });
1888     SecurityCollector::Event event {
1889         .eventId = 111
1890     };
1891     sptr<MockRemoteObject> obj(new (std::nothrow) MockRemoteObject());
1892     int32_t result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1893     EXPECT_EQ(result, SUCCESS);
1894     AcquireDataSubscribeManager::GetInstance().scSubscribeMap_.insert({111,
1895         std::make_shared<AcquireDataSubscribeManager::SecurityCollectorSubscriber>(event)});
1896 
1897     EXPECT_CALL(SecurityCollector::CollectorManager::GetInstance(), Unmute).WillOnce(
1898         Return(FAILED)).WillOnce(Return(SUCCESS));
1899     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1900     EXPECT_EQ(result, FAILED);
1901     result = AcquireDataSubscribeManager::GetInstance().RemoveSubscribeMute(subscribeMute, obj, "1111");
1902     EXPECT_EQ(result, SUCCESS);
1903     AcquireDataSubscribeManager::GetInstance().eventToListenner_.clear();
1904     AcquireDataSubscribeManager::GetInstance().muteCache_.clear();
1905 }
1906 }
1907