1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include <memory>
16 
17 #include "gtest/gtest.h"
18 #include "gmock/gmock.h"
19 
20 #include "mock_data_ability_observer_stub.h"
21 #define private public
22 #include "dataobs_mgr_service.h"
23 
24 namespace OHOS {
25 namespace AAFwk {
26 using namespace testing::ext;
27 class DataObsMgrServiceTest : public testing::Test {
28 public:
29     DataObsMgrServiceTest() = default;
30     virtual ~DataObsMgrServiceTest() = default;
31 
32     static void SetUpTestCase(void);
33     static void TearDownTestCase(void);
34     void SetUp();
35     void TearDown();
36 };
SetUpTestCase(void)37 void DataObsMgrServiceTest::SetUpTestCase(void)
38 {}
TearDownTestCase(void)39 void DataObsMgrServiceTest::TearDownTestCase(void)
40 {}
SetUp()41 void DataObsMgrServiceTest::SetUp()
42 {}
TearDown()43 void DataObsMgrServiceTest::TearDown()
44 {}
45 
46 /*
47  * Feature: DataObsMgrService
48  * Function: QueryServiceState
49  * SubFunction: NA
50  * FunctionPoints: DataObsMgrService QueryServiceState
51  * EnvConditions: NA
52  * CaseDescription: Verify that the DataObsMgrService could query service state.
53  */
54 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_QueryServiceState_0100, TestSize.Level1)
55 {
56     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_QueryServiceState_0100 start";
57     const DataObsServiceRunningState testValue = DataObsServiceRunningState::STATE_NOT_START;
58     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
59 
60     EXPECT_EQ(testValue, dataObsMgrServer->QueryServiceState());
61 
62     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_QueryServiceState_0100 end";
63 }
64 
65 /*
66  * Feature: DataObsMgrService
67  * Function: RegisterObserver
68  * SubFunction: NA
69  * FunctionPoints: DataObsMgrService RegisterObserver
70  * EnvConditions: NA
71  * CaseDescription: Verify that the DataObsMgrService RegisterObserver is normal.
72  */
73 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_RegisterObserver_0100, TestSize.Level1)
74 {
75     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_RegisterObserver_0100 start";
76     const int testVal = static_cast<int>(NO_ERROR);
77     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
78     std::shared_ptr<Uri> uri =
79         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
80     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
81 
82     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserver(*uri, dataobsAbility));
83 
84     testing::Mock::AllowLeak(dataobsAbility);
85     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_RegisterObserver_0100 end";
86 }
87 
88 /*
89  * Feature: DataObsMgrService
90  * Function: RegisterObserver
91  * SubFunction: NA
92  * FunctionPoints: DataObsMgrService RegisterObserver
93  * EnvConditions: NA
94  * CaseDescription: Verify that the DataObsMgrService RegisterObserver is abnormal.
95  */
96 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_RegisterObserver_0200, TestSize.Level1)
97 {
98     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_RegisterObserver_0200 start";
99     const int testVal = static_cast<int>(DATA_OBSERVER_IS_NULL);
100     std::shared_ptr<Uri> uri =
101         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
102     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
103 
104     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserver(*uri, nullptr));
105 
106     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_RegisterObserver_0200 end";
107 }
108 
109 /*
110  * Feature: DataObsMgrService
111  * Function: RegisterObserver
112  * SubFunction: NA
113  * FunctionPoints: DataObsMgrService RegisterObserver
114  * EnvConditions: NA
115  * CaseDescription: Verify that the DataObsMgrService RegisterObserver is abnormal.
116  */
117 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_RegisterObserver_0300, TestSize.Level1)
118 {
119     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_RegisterObserver_0300 start";
120     const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
121     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
122     std::shared_ptr<Uri> uri =
123         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
124     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
125 
126     dataObsMgrServer->dataObsMgrInner_.reset();
127     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserver(*uri, dataobsAbility));
128     dataObsMgrServer->dataObsMgrInner_ = std::make_shared<DataObsMgrInner>();
129 
130     testing::Mock::AllowLeak(dataobsAbility);
131     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_RegisterObserver_0300 end";
132 }
133 
134 /*
135  * Feature: DataObsMgrService
136  * Function: UnregisterObserver
137  * SubFunction: NA
138  * FunctionPoints: DataObsMgrService UnregisterObserver
139  * EnvConditions: NA
140  * CaseDescription: Verify that the DataObsMgrService UnregisterObserver is normal.
141  */
142 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_UnregisterObserver_0100, TestSize.Level1)
143 {
144     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_UnregisterObserver_0100 start";
145     const int testVal = static_cast<int>(NO_ERROR);
146     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
147     std::shared_ptr<Uri> uri =
148         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
149     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
150 
151     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserver(*uri, dataobsAbility));
152     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserver(*uri, dataobsAbility));
153 
154     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_UnregisterObserver_0100 end";
155 }
156 
157 /*
158  * Feature: DataObsMgrService
159  * Function: UnregisterObserver
160  * SubFunction: NA
161  * FunctionPoints: DataObsMgrService UnregisterObserver
162  * EnvConditions: NA
163  * CaseDescription: Verify that the DataObsMgrService UnregisterObserver is abnormal.
164  */
165 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_UnregisterObserver_0200, TestSize.Level1)
166 {
167     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_UnregisterObserver_0200 start";
168     const int testVal = static_cast<int>(DATA_OBSERVER_IS_NULL);
169     std::shared_ptr<Uri> uri =
170         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
171     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
172 
173     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserver(*uri, nullptr));
174 
175     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_UnregisterObserver_0200 end";
176 }
177 
178 /*
179  * Feature: DataObsMgrService
180  * Function: UnregisterObserver
181  * SubFunction: NA
182  * FunctionPoints: DataObsMgrService UnregisterObserver
183  * EnvConditions: NA
184  * CaseDescription: Verify that the DataObsMgrService UnregisterObserver is abnormal.
185  */
186 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_UnregisterObserver_0300, TestSize.Level1)
187 {
188     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_UnregisterObserver_0300 start";
189     const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
190     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
191     std::shared_ptr<Uri> uri =
192         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
193     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
194 
195     dataObsMgrServer->dataObsMgrInner_.reset();
196     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserver(*uri, dataobsAbility));
197     dataObsMgrServer->dataObsMgrInner_ = std::make_shared<DataObsMgrInner>();
198 
199     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_UnregisterObserver_0300 end";
200 }
201 
202 /*
203  * Feature: DataObsMgrService
204  * Function: NotifyChange
205  * SubFunction: NA
206  * FunctionPoints: DataObsMgrService NotifyChange
207  * EnvConditions: NA
208  * CaseDescription: Verify that the DataObsMgrService NotifyChange is normal.
209  */
210 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_NotifyChange_0100, TestSize.Level1)
211 {
212     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0100 start";
213     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
214     std::shared_ptr<Uri> uri =
215         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
216     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
217 
218     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
219 
220     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0100 end";
221 }
222 
223 /*
224  * Feature: DataObsMgrService
225  * Function: NotifyChange
226  * SubFunction: NA
227  * FunctionPoints: DataObsMgrService NotifyChange
228  * EnvConditions: NA
229  * CaseDescription: Verify that the DataObsMgrService NotifyChange is abnormal.
230  */
231 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_NotifyChange_0200, TestSize.Level1)
232 {
233     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0200 start";
234     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
235     std::shared_ptr<Uri> uri =
236         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
237     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
238 
239     dataObsMgrServer->OnStop();
240     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
241 
242     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0200 end";
243 }
244 
245 /*
246  * Feature: DataObsMgrService
247  * Function: NotifyChange
248  * SubFunction: NA
249  * FunctionPoints: DataObsMgrService NotifyChange
250  * EnvConditions: NA
251  * CaseDescription: Verify that the DataObsMgrService NotifyChange is abnormal.
252  */
253 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_NotifyChange_0300, TestSize.Level1)
254 {
255     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0300 start";
256     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
257     std::shared_ptr<Uri> uri =
258         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
259     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
260 
261     dataObsMgrServer->dataObsMgrInner_.reset();
262     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
263     dataObsMgrServer->dataObsMgrInner_ = std::make_shared<DataObsMgrInner>();
264 
265     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0300 end";
266 }
267 
268 /*
269  * Feature: DataObsMgrService
270  * Function: NotifyChange
271  * SubFunction: NA
272  * FunctionPoints: DataObsMgrService NotifyChange
273  * EnvConditions: NA
274  * CaseDescription: Verify that the DataObsMgrService NotifyChange is abnormal.
275  */
276 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_NotifyChange_0400, TestSize.Level1)
277 {
278     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0400 start";
279     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
280     std::shared_ptr<Uri> uri =
281         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
282     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
283 
284     dataObsMgrServer->taskCount_ = 50;
285     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
286     dataObsMgrServer->taskCount_ = 0;
287 
288     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_NotifyChange_0400 end";
289 }
290 
291 /*
292  * Feature: DataObsMgrService
293  * Function: RegisterObserverExt
294  * SubFunction: NA
295  * FunctionPoints: DataObsMgrService RegisterObserverExt
296  * EnvConditions: NA
297  * CaseDescription: Verify that the DataObsMgrService RegisterObserver is normal.
298  */
299 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_RegisterObserverExt_0100, TestSize.Level1)
300 {
301     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_RegisterObserverExt_0100 start";
302     const int testVal = static_cast<int>(NO_ERROR);
303     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
304     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
305     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
306 
307     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserverExt(uri, dataobsAbility, false));
308     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserverExt(uri, dataobsAbility, true));
309 
310     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_RegisterObserverExt_0100 end";
311 }
312 
313 /*
314  * Feature: DataObsMgrService
315  * Function: RegisterObserverExt
316  * SubFunction: NA
317  * FunctionPoints: DataObsMgrService RegisterObserverExt
318  * EnvConditions: NA
319  * CaseDescription: Verify that the DataObsMgrService RegisterObserver is abnormal.
320  */
321 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_RegisterObserverExt_0200, TestSize.Level1)
322 {
323     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_RegisterObserverExt_0200 start";
324     const int testVal = static_cast<int>(DATA_OBSERVER_IS_NULL);
325     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
326     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
327 
328     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserverExt(uri, nullptr, true));
329 
330     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_RegisterObserverExt_0200 end";
331 }
332 
333 /*
334  * Feature: DataObsMgrService
335  * Function: RegisterObserverExt
336  * SubFunction: NA
337  * FunctionPoints: DataObsMgrService RegisterObserverExt
338  * EnvConditions: NA
339  * CaseDescription: Verify that the DataObsMgrService RegisterObserver is abnormal.
340  */
341 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_RegisterObserverExt_0300, TestSize.Level1)
342 {
343     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_RegisterObserverExt_0300 start";
344     const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
345     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
346     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
347     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
348 
349     dataObsMgrServer->dataObsMgrInnerExt_.reset();
350     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserverExt(uri, dataobsAbility, true));
351     dataObsMgrServer->dataObsMgrInnerExt_ = std::make_shared<DataObsMgrInnerExt>();
352 
353     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_RegisterObserverExt_0300 end";
354 }
355 
356 /*
357  * Feature: DataObsMgrService
358  * Function: UnregisterObserverExt
359  * SubFunction: NA
360  * FunctionPoints: DataObsMgrService UnregisterObserverExt
361  * EnvConditions: NA
362  * CaseDescription: Verify that the DataObsMgrService UnregisterObserverExt is normal.
363  */
364 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_UnregisterObserverExt_0100, TestSize.Level1)
365 {
366     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0100 start";
367     const int testVal = static_cast<int>(NO_ERROR);
368     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
369     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
370     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
371 
372     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserverExt(uri, dataobsAbility, true));
373     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserverExt(uri, dataobsAbility));
374 
375     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0100 end";
376 }
377 
378 /*
379  * Feature: DataObsMgrService
380  * Function: UnregisterObserverExt
381  * SubFunction: NA
382  * FunctionPoints: DataObsMgrService UnregisterObserverExt
383  * EnvConditions: NA
384  * CaseDescription: Verify that the DataObsMgrService UnregisterObserverExt is normal.
385  */
386 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_UnregisterObserverExt_0200, TestSize.Level1)
387 {
388     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0200 start";
389     const int testVal = static_cast<int>(NO_ERROR);
390     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
391     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
392     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
393 
394     EXPECT_EQ(testVal, dataObsMgrServer->RegisterObserverExt(uri, dataobsAbility, true));
395     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserverExt(dataobsAbility));
396 
397     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0200 end";
398 }
399 
400 /*
401  * Feature: DataObsMgrService
402  * Function: UnregisterObserverExt
403  * SubFunction: NA
404  * FunctionPoints: DataObsMgrService UnregisterObserverExt
405  * EnvConditions: NA
406  * CaseDescription: Verify that the DataObsMgrService UnregisterObserverExt is abnormal.
407  */
408 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_UnregisterObserverExt_0300, TestSize.Level1)
409 {
410     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0300 start";
411     const int testVal = static_cast<int>(DATA_OBSERVER_IS_NULL);
412     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
413     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
414 
415     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserverExt(uri, nullptr));
416 
417     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0300 end";
418 }
419 
420 /*
421  * Feature: DataObsMgrService
422  * Function: UnregisterObserverExt
423  * SubFunction: NA
424  * FunctionPoints: DataObsMgrService UnregisterObserverExt
425  * EnvConditions: NA
426  * CaseDescription: Verify that the DataObsMgrService UnregisterObserverExt is abnormal.
427  */
428 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_UnregisterObserverExt_0400, TestSize.Level1)
429 {
430     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0400 start";
431     const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
432     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
433     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
434     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
435 
436     dataObsMgrServer->dataObsMgrInnerExt_.reset();
437     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserverExt(uri, dataobsAbility));
438     dataObsMgrServer->dataObsMgrInnerExt_ = std::make_shared<DataObsMgrInnerExt>();
439 
440     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0400 end";
441 }
442 
443 /*
444  * Feature: DataObsMgrService
445  * Function: UnregisterObserverExt
446  * SubFunction: NA
447  * FunctionPoints: DataObsMgrService UnregisterObserverExt
448  * EnvConditions: NA
449  * CaseDescription: Verify that the DataObsMgrService UnregisterObserverExt is abnormal.
450  */
451 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_UnregisterObserverExt_0500, TestSize.Level1)
452 {
453     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0500 start";
454     const int testVal = static_cast<int>(DATA_OBSERVER_IS_NULL);
455     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
456     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
457 
458     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserverExt(nullptr));
459 
460     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0500 end";
461 }
462 
463 /*
464  * Feature: DataObsMgrService
465  * Function: UnregisterObserverExt
466  * SubFunction: NA
467  * FunctionPoints: DataObsMgrService UnregisterObserverExt
468  * EnvConditions: NA
469  * CaseDescription: Verify that the DataObsMgrService UnregisterObserverExt is abnormal.
470  */
471 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_UnregisterObserverExt_0600, TestSize.Level1)
472 {
473     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0600 start";
474     const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
475     const sptr<MockDataAbilityObserverStub> dataobsAbility(new (std::nothrow) MockDataAbilityObserverStub());
476     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
477     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
478 
479     dataObsMgrServer->dataObsMgrInnerExt_.reset();
480     EXPECT_EQ(testVal, dataObsMgrServer->UnregisterObserverExt(dataobsAbility));
481     dataObsMgrServer->dataObsMgrInnerExt_ = std::make_shared<DataObsMgrInnerExt>();
482 
483     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_UnregisterObserverExt_0600 end";
484 }
485 
486 /*
487  * Feature: DataObsMgrService
488  * Function: NotifyChangeExt
489  * SubFunction: NA
490  * FunctionPoints: DataObsMgrService NotifyChangeExt
491  * EnvConditions: NA
492  * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is normal.
493  */
494 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_NotifyChangeExt_0100, TestSize.Level1)
495 {
496     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_NotifyChangeExt_0100 start";
497     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
498     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
499     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
500 
501     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt({ ChangeInfo::ChangeType::UPDATE, { uri } }));
502     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_NotifyChangeExt_0100 end";
503 }
504 
505 /*
506  * Feature: DataObsMgrService
507  * Function: NotifyChangeExt
508  * SubFunction: NA
509  * FunctionPoints: DataObsMgrService NotifyChangeExt
510  * EnvConditions: NA
511  * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is abnormal.
512  */
513 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_NotifyChangeExt_0200, TestSize.Level1)
514 {
515     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_NotifyChangeExt_0200 start";
516     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
517     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
518     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
519 
520     dataObsMgrServer->OnStop();
521     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt({ ChangeInfo::ChangeType::UPDATE, { uri } }));
522     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_NotifyChangeExt_0200 end";
523 }
524 
525 /*
526  * Feature: DataObsMgrService
527  * Function: NotifyChangeExt
528  * SubFunction: NA
529  * FunctionPoints: DataObsMgrService NotifyChangeExt
530  * EnvConditions: NA
531  * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is abnormal.
532  */
533 HWTEST_F(DataObsMgrServiceTest, DataObsMgrServiceTest_NotifyChangeExt_0300, TestSize.Level1)
534 {
535     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_NotifyChangeExt_0300 start";
536     const int testVal = static_cast<int>(DATAOBS_SERVICE_HANDLER_IS_NULL);
537     Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
538     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
539 
540     dataObsMgrServer->dataObsMgrInner_.reset();
541     EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt({ ChangeInfo::ChangeType::UPDATE, { uri } }));
542     dataObsMgrServer->dataObsMgrInner_ = std::make_shared<DataObsMgrInner>();
543     GTEST_LOG_(INFO) << "DataObsMgrServiceTest_NotifyChangeExt_0300 end";
544 }
545 
546 /*
547  * Feature: DataObsMgrService
548  * Function: OnStop
549  * SubFunction: NA
550  * FunctionPoints: DataObsMgrService OnStop
551  * EnvConditions: NA
552  * CaseDescription: Verify that the DataObsMgrService OnStop is normal.
553  */
554 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_OnStop_0100, TestSize.Level1)
555 {
556     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_OnStop_0100 start";
557     const DataObsServiceRunningState testValue = DataObsServiceRunningState::STATE_NOT_START;
558     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
559 
560     dataObsMgrServer->OnStop();
561     EXPECT_EQ(testValue, dataObsMgrServer->QueryServiceState());
562 
563     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_OnStop_0100 end";
564 }
565 
566 /*
567  * Feature: DataObsMgrService
568  * Function: Dump
569  * SubFunction: NA
570  * FunctionPoints: DataObsMgrService Dump
571  * EnvConditions: NA
572  * CaseDescription: Verify that the DataObsMgrService Dump is normal.
573  */
574 HWTEST_F(DataObsMgrServiceTest, AaFwk_DataObsMgrServiceTest_Dump_0100, TestSize.Level1)
575 {
576     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_Dump_0100 start";
577     const DataObsServiceRunningState testValue = DataObsServiceRunningState::STATE_RUNNING;
578     auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
579 
580     std::string fileName = "test.txt";
581     std::vector<std::u16string> args;
582     args.push_back(u"-h");
583     FILE *fp = fopen(fileName.c_str(), "w");
584     int ret = dataObsMgrServer->Dump(fileno(fp), args);
585     fclose(fp);
586     EXPECT_EQ(SUCCESS, ret);
587 
588     GTEST_LOG_(INFO) << "AaFwk_DataObsMgrServiceTest_Dump_0100 end";
589 }
590 }  // namespace AAFwk
591 }  // namespace OHOS
592