1 /*
2 * Copyright (c) 2021-2022 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 <functional>
17 #include <gtest/gtest.h>
18
19 #define private public
20 #define protected public
21 #include "common_event_data.h"
22 #include "common_event_manager.h"
23 #include "common_event_support.h"
24 #include "matching_skills.h"
25 #include "reminder_data_manager.h"
26 #include "reminder_event_manager.h"
27 #include "reminder_request_timer.h"
28 #undef private
29 #undef protected
30
31 using namespace testing::ext;
32 using namespace OHOS::EventFwk;
33 namespace OHOS {
34 namespace Notification {
35 static auto manager = std::make_shared<ReminderDataManager>();
36 class ReminderDataManagerTest : public testing::Test {
37 public:
SetUpTestCase()38 static void SetUpTestCase() {};
TearDownTestCase()39 static void TearDownTestCase() {};
SetUp()40 void SetUp() {};
TearDown()41 void TearDown() {};
42 };
43
44 /**
45 * @tc.name: ReminderDataManagerTest_001
46 * @tc.desc: Reminder data manager test
47 * @tc.type: FUNC
48 * @tc.require: issueI5YTF3
49 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_001,Level1)50 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_001, Level1)
51 {
52 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
53 sptr<NotificationBundleOption> option = new NotificationBundleOption();
54 manager->PublishReminder(reminder, option);
55 manager->CancelReminder(-1, option);
56 manager->CancelAllReminders("", -1);
57 manager->CancelAllReminders(-1);
58 manager->IsMatched(reminder, "", -1);
59 system("rm -rf /data/service/el1/public/notification/");
60 EXPECT_TRUE(manager != nullptr);
61 }
62
63 /**
64 * @tc.name: ReminderDataManagerTest_002
65 * @tc.desc: Reminder data manager test
66 * @tc.type: FUNC
67 * @tc.require: issueI5YTF3
68 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_002,Level1)69 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_002, Level1)
70 {
71 sptr<NotificationBundleOption> option = new NotificationBundleOption();
72 std::vector<sptr<ReminderRequest>> vec;
73 manager->GetValidReminders(option, vec);
74 manager->CheckReminderLimitExceededLocked(option);
75 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
76 manager->CancelNotification(reminder);
77 reminder->SetReminderId(10);
78 manager->AddToShowedReminders(reminder);
79 manager->AddToShowedReminders(reminder);
80 system("rm -rf /data/service/el1/public/notification/");
81 EXPECT_TRUE(manager != nullptr);
82 }
83
84 /**
85 * @tc.name: ReminderDataManagerTest_003
86 * @tc.desc: Reminder data manager test
87 * @tc.type: FUNC
88 * @tc.require: issueI5YTF3
89 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_003,Level1)90 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_003, Level1)
91 {
92 manager->isReminderAgentReady_ = false;
93 manager->alertingReminderId_ = -1;
94 manager->OnUserSwitch(0);
95 manager->OnUserRemove(0);
96 manager->alertingReminderId_ = 1;
97 manager->OnUserSwitch(0);
98 manager->isReminderAgentReady_ = true;
99 manager->OnUserSwitch(0);
100 manager->alertingReminderId_ = -1;
101 manager->OnUserSwitch(0);
102 manager->OnUserRemove(0);
103 manager->OnServiceStart();
104 system("rm -rf /data/service/el1/public/notification/");
105 EXPECT_TRUE(manager != nullptr);
106 }
107
108 /**
109 * @tc.name: ReminderDataManagerTest_004
110 * @tc.desc: Reminder data manager test
111 * @tc.type: FUNC
112 * @tc.require: issueI5YTF3
113 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_004,Level1)114 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_004, Level1)
115 {
116 sptr<NotificationBundleOption> option = new NotificationBundleOption();
117 manager->OnProcessDiedLocked(option);
118 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
119 manager->CreateTimerInfo(ReminderDataManager::TimerType::TRIGGER_TIMER, reminder);
120 manager->CreateTimerInfo(ReminderDataManager::TimerType::ALERTING_TIMER, reminder);
121 manager->FindReminderRequestLocked(0, "");
122 reminder->SetReminderId(10);
123 manager->reminderVector_.push_back(reminder);
124 manager->FindReminderRequestLocked(10, "");
125 option->SetBundleName("test");
126 manager->notificationBundleOptionMap_[10] = option;
127 manager->FindReminderRequestLocked(10, "");
128 manager->FindReminderRequestLocked(10, "test");
129 system("rm -rf /data/service/el1/public/notification/");
130 EXPECT_TRUE(manager != nullptr);
131 }
132
133 /**
134 * @tc.name: ReminderDataManagerTest_005
135 * @tc.desc: Reminder data manager test
136 * @tc.type: FUNC
137 * @tc.require: issueI5YTF3
138 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_005,Level1)139 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_005, Level1)
140 {
141 EventFwk::Want want;
142 manager->CloseReminder(want, true);
143 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
144 reminder->SetReminderId(1);
145 manager->activeReminderId_ = 1;
146 manager->activeReminder_ = reminder;
147 manager->CloseReminder(reminder, true);
148 reminder->SetReminderId(2);
149 manager->alertingReminderId_ = 2;
150 manager->CloseReminder(reminder, true);
151 reminder->SetReminderId(3);
152 manager->CloseReminder(reminder, true);
153 manager->CloseReminder(reminder, false);
154 system("rm -rf /data/service/el1/public/notification/");
155 EXPECT_TRUE(manager != nullptr);
156 }
157
158 /**
159 * @tc.name: ReminderDataManagerTest_006
160 * @tc.desc: Reminder data manager test
161 * @tc.type: FUNC
162 * @tc.require: issueI5YTF3
163 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_006,Level1)164 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_006, Level1)
165 {
166 manager->RefreshRemindersDueToSysTimeChange(0);
167 manager->RefreshRemindersDueToSysTimeChange(1);
168 manager->activeReminderId_ = 1;
169 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
170 manager->activeReminder_ = reminder;
171 manager->RefreshRemindersDueToSysTimeChange(1);
172 system("rm -rf /data/service/el1/public/notification/");
173 EXPECT_TRUE(manager != nullptr);
174 }
175
176 /**
177 * @tc.name: ReminderDataManagerTest_007
178 * @tc.desc: Reminder data manager test
179 * @tc.type: FUNC
180 * @tc.require: issueI5YTF3
181 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_007,Level1)182 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_007, Level1)
183 {
184 EventFwk::Want want;
185 want.SetParam(ReminderRequest::PARAM_REMINDER_ID, 10);
186 manager->ShowActiveReminder(want);
187 manager->CloseReminder(want, true);
188 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
189 reminder->SetReminderId(10);
190 manager->reminderVector_.push_back(reminder);
191 manager->ShowActiveReminder(want);
192 manager->activeReminderId_ = 10;
193 manager->activeReminder_ = reminder;
194 manager->ShowActiveReminder(want);
195 manager->CloseReminder(want, true);
196 system("rm -rf /data/service/el1/public/notification/");
197 EXPECT_TRUE(manager != nullptr);
198 }
199
200 /**
201 * @tc.name: ReminderDataManagerTest_008
202 * @tc.desc: Reminder data manager test
203 * @tc.type: FUNC
204 * @tc.require: issueI5YTF3
205 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_008,Level1)206 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_008, Level1)
207 {
208 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
209 manager->TerminateAlerting(0, reminder);
210 manager->TerminateAlerting(nullptr, "");
211 manager->TerminateAlerting(reminder, "");
212 reminder->state_ = 2;
213 manager->TerminateAlerting(reminder, "");
214 system("rm -rf /data/service/el1/public/notification/");
215 EXPECT_TRUE(manager != nullptr);
216 }
217
218 /**
219 * @tc.name: ReminderDataManagerTest_009
220 * @tc.desc: Reminder data manager test
221 * @tc.type: FUNC
222 * @tc.require: issueI5YTF3
223 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_009,Level1)224 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_009, Level1)
225 {
226 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
227 sptr<NotificationBundleOption> option = new NotificationBundleOption();
228 manager->UpdateAndSaveReminderLocked(reminder, option);
229 AdvancedNotificationService service;
230 manager->SetService(&service);
231 manager->ShouldAlert(nullptr);
232 manager->currentUserId_ = 0;
233 option->SetUid(1);
234 manager->ShouldAlert(reminder);
235 system("rm -rf /data/service/el1/public/notification/");
236 EXPECT_TRUE(manager != nullptr);
237 }
238
239 /**
240 * @tc.name: ReminderDataManagerTest_010
241 * @tc.desc: Reminder data manager test
242 * @tc.type: FUNC
243 * @tc.require: issueI5YTF3
244 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_010,Level1)245 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_010, Level1)
246 {
247 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
248 manager->HandleSysTimeChange(reminder);
249 manager->SetActiveReminder(nullptr);
250 manager->SetActiveReminder(reminder);
251 manager->SetAlertingReminder(nullptr);
252 manager->SetAlertingReminder(reminder);
253 system("rm -rf /data/service/el1/public/notification/");
254 EXPECT_TRUE(manager != nullptr);
255 }
256
257 /**
258 * @tc.name: ReminderDataManagerTest_011
259 * @tc.desc: Reminder data manager test
260 * @tc.type: FUNC
261 * @tc.require: issueI5YTF3
262 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_011,Level1)263 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_011, Level1)
264 {
265 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
266 reminder->SetReminderId(0);
267 sptr<NotificationBundleOption> option = new NotificationBundleOption();
268 manager->notificationBundleOptionMap_[10] = option;
269 manager->ShowReminder(reminder, true, true, true, true);
270 reminder->SetReminderId(10);
271 manager->ShowReminder(reminder, true, true, true, true);
272 manager->ShowReminder(reminder, true, true, true, true);
273 manager->alertingReminderId_ = 1;
274 manager->ShowReminder(reminder, true, true, true, true);
275 manager->alertingReminderId_ = -1;
276 manager->ShowReminder(reminder, true, true, true, true);
277 system("rm -rf /data/service/el1/public/notification/");
278 EXPECT_TRUE(manager != nullptr);
279 }
280
281 /**
282 * @tc.name: ReminderDataManagerTest_012
283 * @tc.desc: Reminder data manager test
284 * @tc.type: FUNC
285 * @tc.require: issueI5YTF3
286 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_012,Level1)287 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_012, Level1)
288 {
289 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
290 manager->activeReminderId_ = 10;
291 manager->activeReminder_ = reminder;
292 reminder->SetReminderId(10);
293 manager->activeReminderId_ = 1;
294 system("rm -rf /data/service/el1/public/notification/");
295 EXPECT_TRUE(manager != nullptr);
296 }
297
298 /**
299 * @tc.name: ReminderDataManagerTest_013
300 * @tc.desc: Reminder data manager test
301 * @tc.type: FUNC
302 * @tc.require: issueI5YTF3
303 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_013,Level1)304 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_013, Level1)
305 {
306 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
307 manager->activeReminderId_ = 10;
308 manager->activeReminder_ = reminder;
309 reminder->SetReminderId(10);
310 system("rm -rf /data/service/el1/public/notification/");
311 EXPECT_TRUE(manager != nullptr);
312 }
313
314 /**
315 * @tc.name: ReminderDataManagerTest_014
316 * @tc.desc: Reminder data manager test
317 * @tc.type: FUNC
318 * @tc.require: issueI5YTF3
319 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_014,Level1)320 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_014, Level1)
321 {
322 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
323 reminder->SetReminderId(0);
324 manager->StartRecentReminder();
325 manager->StopAlertingReminder(nullptr);
326 manager->alertingReminderId_ = -1;
327 manager->StopAlertingReminder(reminder);
328 manager->alertingReminderId_ = 1;
329 manager->StopAlertingReminder(reminder);
330 reminder->SetReminderId(1);
331 manager->StopAlertingReminder(reminder);
332 manager->Dump();
333 system("rm -rf /data/service/el1/public/notification/");
334 EXPECT_TRUE(manager != nullptr);
335 }
336
337 /**
338 * @tc.name: ReminderDataManagerTest_015
339 * @tc.desc: Reminder data manager test
340 * @tc.type: FUNC
341 * @tc.require: issueI5YTF3
342 */
HWTEST_F(ReminderDataManagerTest,ReminderDataManagerTest_015,Level1)343 HWTEST_F(ReminderDataManagerTest, ReminderDataManagerTest_015, Level1)
344 {
345 sptr<ReminderRequest> reminder = new ReminderRequestTimer(10);
346 std::vector<sptr<ReminderRequest>> vec;
347 vec.push_back(reminder);
348 manager->HandleImmediatelyShow(vec, true);
349 manager->HandleRefreshReminder(0, reminder);
350 manager->HandleSameNotificationIdShowing(reminder);
351 manager->Init(true);
352 manager->InitUserId();
353 manager->GetImmediatelyShowRemindersLocked(vec);
354 manager->IsAllowedNotify(reminder);
355 manager->IsAllowedNotify(nullptr);
356 manager->IsReminderAgentReady();
357 system("rm -rf /data/service/el1/public/notification/");
358 EXPECT_TRUE(manager != nullptr);
359 }
360
361 /**
362 * @tc.name: ReminderEventManagerTest_001
363 * @tc.desc: Reminder data manager test
364 * @tc.type: FUNC
365 * @tc.require: issueI5YTF3
366 */
HWTEST_F(ReminderDataManagerTest,ReminderEventManagerTest_001,Level1)367 HWTEST_F(ReminderDataManagerTest, ReminderEventManagerTest_001, Level1)
368 {
369 MatchingSkills matchingSkills;
370 matchingSkills.AddEvent(ReminderRequest::REMINDER_EVENT_ALARM_ALERT);
371 matchingSkills.AddEvent(ReminderRequest::REMINDER_EVENT_ALERT_TIMEOUT);
372 matchingSkills.AddEvent(ReminderRequest::REMINDER_EVENT_CLOSE_ALERT);
373 matchingSkills.AddEvent(ReminderRequest::REMINDER_EVENT_SNOOZE_ALERT);
374 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_BOOT_COMPLETED);
375 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_REMOVED);
376 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_DATA_CLEARED);
377 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_PACKAGE_RESTARTED);
378 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_TIMEZONE_CHANGED);
379 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_TIME_CHANGED);
380 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_USER_SWITCHED);
381 matchingSkills.AddEvent(CommonEventSupport::COMMON_EVENT_USER_REMOVED);
382 CommonEventSubscribeInfo subscriberInfo(matchingSkills);
383 auto subscriber = std::make_shared<ReminderEventManager::ReminderEventSubscriber>(subscriberInfo, manager);
384 EventFwk::CommonEventData data;
385 Want want;
386 want.SetAction(ReminderRequest::REMINDER_EVENT_ALARM_ALERT);
387 data.SetWant(want);
388 subscriber->OnReceiveEvent(data);
389 want.SetAction(ReminderRequest::REMINDER_EVENT_ALERT_TIMEOUT);
390 data.SetWant(want);
391 subscriber->OnReceiveEvent(data);
392 want.SetAction(ReminderRequest::REMINDER_EVENT_CLOSE_ALERT);
393 data.SetWant(want);
394 subscriber->OnReceiveEvent(data);
395 want.SetAction(ReminderRequest::REMINDER_EVENT_SNOOZE_ALERT);
396 data.SetWant(want);
397 subscriber->OnReceiveEvent(data);
398 want.SetAction(ReminderRequest::REMINDER_EVENT_REMOVE_NOTIFICATION);
399 data.SetWant(want);
400 subscriber->OnReceiveEvent(data);
401 want.SetAction(CommonEventSupport::COMMON_EVENT_BOOT_COMPLETED);
402 data.SetWant(want);
403 subscriber->OnReceiveEvent(data);
404 want.SetAction(CommonEventSupport::COMMON_EVENT_PACKAGE_REMOVED);
405 data.SetWant(want);
406 subscriber->OnReceiveEvent(data);
407 want.SetAction(CommonEventSupport::COMMON_EVENT_PACKAGE_DATA_CLEARED);
408 data.SetWant(want);
409 subscriber->OnReceiveEvent(data);
410 want.SetAction(CommonEventSupport::COMMON_EVENT_PACKAGE_RESTARTED);
411 data.SetWant(want);
412 subscriber->OnReceiveEvent(data);
413 want.SetAction(CommonEventSupport::COMMON_EVENT_TIMEZONE_CHANGED);
414 data.SetWant(want);
415 subscriber->OnReceiveEvent(data);
416 want.SetAction(CommonEventSupport::COMMON_EVENT_TIME_CHANGED);
417 data.SetWant(want);
418 subscriber->OnReceiveEvent(data);
419 want.SetAction(CommonEventSupport::COMMON_EVENT_USER_SWITCHED);
420 data.SetWant(want);
421 subscriber->OnReceiveEvent(data);
422 want.SetAction(CommonEventSupport::COMMON_EVENT_USER_REMOVED);
423 data.SetWant(want);
424 subscriber->OnReceiveEvent(data);
425 system("rm -rf /data/service/el1/public/notification/");
426 EXPECT_TRUE(manager != nullptr);
427 }
428
429 /**
430 * @tc.name: ReminderEventManagerTest_002
431 * @tc.desc: Reminder data manager test
432 * @tc.type: FUNC
433 * @tc.require: issueI5YTF3
434 */
HWTEST_F(ReminderDataManagerTest,ReminderEventManagerTest_002,Level1)435 HWTEST_F(ReminderDataManagerTest, ReminderEventManagerTest_002, Level1)
436 {
437 auto statusChangeListener
438 = std::make_shared<ReminderEventManager::SystemAbilityStatusChangeListener>(manager);
439 statusChangeListener->OnAddSystemAbility(0, "");
440 statusChangeListener->OnRemoveSystemAbility(0, "");
441 system("rm -rf /data/service/el1/public/notification/");
442 EXPECT_TRUE(manager != nullptr);
443 }
444
445 /**
446 * @tc.name: ReminderEventManagerTest_003
447 * @tc.desc: Reminder data manager test
448 * @tc.type: FUNC
449 * @tc.require: issueI5YTF3
450 */
HWTEST_F(ReminderDataManagerTest,ReminderEventManagerTest_003,Level1)451 HWTEST_F(ReminderDataManagerTest, ReminderEventManagerTest_003, Level1)
452 {
453 auto timeInfo = std::make_shared<ReminderTimerInfo>();
454 timeInfo->SetType(0);
455 timeInfo->SetRepeat(false);
456 timeInfo->SetInterval(0);
457 timeInfo->SetWantAgent(nullptr);
458 timeInfo->action_ = ReminderRequest::REMINDER_EVENT_ALARM_ALERT;
459 timeInfo->OnTrigger();
460 timeInfo->action_ = ReminderRequest::REMINDER_EVENT_ALERT_TIMEOUT;
461 timeInfo->OnTrigger();
462 system("rm -rf /data/service/el1/public/notification/");
463 EXPECT_TRUE(manager != nullptr);
464 }
465 } // namespace Notification
466 } // namespace OHOS
467