• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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