1 /*
2 * Copyright (c) 2025 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 #include "hilog_tag_wrapper.h"
20
21 #include "dataobs_mgr_service.h"
22
23 namespace OHOS {
24 namespace AAFwk {
25 using namespace testing::ext;
26 class DataObsMgrServiceSecondTest : public testing::Test {
27 public:
28 DataObsMgrServiceSecondTest() = default;
29 virtual ~DataObsMgrServiceSecondTest() = default;
30
31 static void SetUpTestCase(void);
32 static void TearDownTestCase(void);
33 void SetUp();
34 void TearDown();
35 };
SetUpTestCase(void)36 void DataObsMgrServiceSecondTest::SetUpTestCase(void)
37 {}
TearDownTestCase(void)38 void DataObsMgrServiceSecondTest::TearDownTestCase(void)
39 {}
SetUp()40 void DataObsMgrServiceSecondTest::SetUp()
41 {}
TearDown()42 void DataObsMgrServiceSecondTest::TearDown()
43 {}
44
45 /*
46 * Feature: DataObsMgrService
47 * Function: NotifyChange
48 * SubFunction: NA
49 * FunctionPoints: DataObsMgrService NotifyChange
50 * EnvConditions: NA
51 * CaseDescription: Verify that the DataObsMgrService NotifyChange is normal.
52 */
53 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChange_0100, TestSize.Level1)
54 {
55 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChange_0100 start");
56 const int testVal = static_cast<int>(NO_ERROR);
57 std::shared_ptr<Uri> uri =
58 std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
59 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
60 dataObsMgrServer->Init();
61
62 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
63 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChange_0100 end");
64 }
65
66 /*
67 * Feature: DataObsMgrService
68 * Function: NotifyChange
69 * SubFunction: NA
70 * FunctionPoints: DataObsMgrService NotifyChange
71 * EnvConditions: NA
72 * CaseDescription: Verify that the DataObsMgrService NotifyChange is normal.
73 */
74 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChange_0200, TestSize.Level1)
75 {
76 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChange_0200 start");
77 const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
78 std::shared_ptr<Uri> uri =
79 std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
80 auto dataObsMgrServer = std::make_shared<DataObsMgrService>();
81 dataObsMgrServer->Init();
82 auto tmp = dataObsMgrServer->dataObsMgrInner_;
83 dataObsMgrServer->dataObsMgrInner_ = nullptr;
84
85 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
86 dataObsMgrServer->dataObsMgrInner_ = tmp;
87 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChange_0200 end");
88 }
89
90 /*
91 * Feature: DataObsMgrService
92 * Function: NotifyChange
93 * SubFunction: NA
94 * FunctionPoints: DataObsMgrService NotifyChange
95 * EnvConditions: NA
96 * CaseDescription: Verify that the DataObsMgrService NotifyChange is normal.
97 */
98 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChange_0300, TestSize.Level1)
99 {
100 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChange_0300 start");
101 const int testVal = static_cast<int>(DATAOBS_SERVICE_TASK_LIMMIT);
102 std::shared_ptr<Uri> uri =
103 std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
104 auto dataObsMgrServer = std::make_shared<DataObsMgrService>();
105 dataObsMgrServer->Init();
106 auto tmp = dataObsMgrServer->taskCount_;
107 dataObsMgrServer->taskCount_ = DataObsMgrService::TASK_COUNT_MAX;
108
109 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChange(*uri));
110 dataObsMgrServer->taskCount_ = tmp;
111 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChange_0300 end");
112 }
113
114 /*
115 * Feature: DataObsMgrService
116 * Function: DeepCopyChangeInfo
117 * SubFunction: NA
118 * FunctionPoints: DataObsMgrService DeepCopyChangeInfo
119 * EnvConditions: NA
120 * CaseDescription: Verify that the DataObsMgrService DeepCopyChangeInfo is normal.
121 */
122 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0100, TestSize.Level1)
123 {
124 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0100 start");
125 const int testVal = static_cast<int>(SUCCESS);
126 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
127 ChangeInfo src;
128 ChangeInfo dst;
129
130 EXPECT_EQ(testVal, dataObsMgrServer->DeepCopyChangeInfo(src, dst));
131 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0100 end");
132 }
133
134 /*
135 * Feature: DataObsMgrService
136 * Function: DeepCopyChangeInfo
137 * SubFunction: NA
138 * FunctionPoints: DataObsMgrService DeepCopyChangeInfo
139 * EnvConditions: NA
140 * CaseDescription: Verify that the DataObsMgrService DeepCopyChangeInfo is normal.
141 */
142 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0200, TestSize.Level1)
143 {
144 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0200 start");
145 const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
146 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
147 ChangeInfo src;
148 ChangeInfo dst;
149 src.size_ = std::numeric_limits<decltype(src.size_)>::max();
150
151 EXPECT_EQ(testVal, dataObsMgrServer->DeepCopyChangeInfo(src, dst));
152 src.size_ = 0;
153 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0200 end");
154 }
155
156 /*
157 * Feature: DataObsMgrService
158 * Function: DeepCopyChangeInfo
159 * SubFunction: NA
160 * FunctionPoints: DataObsMgrService DeepCopyChangeInfo
161 * EnvConditions: NA
162 * CaseDescription: Verify that the DataObsMgrService DeepCopyChangeInfo is normal.
163 */
164 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0300, TestSize.Level1)
165 {
166 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0300 start");
167 const int testVal = static_cast<int>(SUCCESS);
168 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
169 ChangeInfo src;
170 src.size_ = 1;
171 src.data_ = new uint8_t[src.size_];
172 ChangeInfo dst;
173
174 EXPECT_EQ(testVal, dataObsMgrServer->DeepCopyChangeInfo(src, dst));
175 delete [] static_cast<uint8_t *>(src.data_);
176 src.data_ = nullptr;
177 src.size_ = 0;
178 delete [] static_cast<uint8_t *>(dst.data_);
179 dst.data_ = nullptr;
180 dst.size_ = 0;
181 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_DeepCopyChangeInfo_0300 end");
182 }
183
184 /*
185 * Feature: DataObsMgrService
186 * Function: NotifyChangeExt
187 * SubFunction: NA
188 * FunctionPoints: DataObsMgrService NotifyChangeExt
189 * EnvConditions: NA
190 * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is abnormal.
191 */
192 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChangeExt_0100, TestSize.Level1)
193 {
194 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0100 start");
195 const int testVal = static_cast<int>(SUCCESS);
196 Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
197 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
198 dataObsMgrServer->Init();
199
200 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt({ ChangeInfo::ChangeType::UPDATE, { uri } }));
201 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0100 end");
202 }
203
204 /*
205 * Feature: DataObsMgrService
206 * Function: NotifyChangeExt
207 * SubFunction: NA
208 * FunctionPoints: DataObsMgrService NotifyChangeExt
209 * EnvConditions: NA
210 * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is abnormal.
211 */
212 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChangeExt_0200, TestSize.Level1)
213 {
214 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0200 start");
215 const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
216 Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
217 auto dataObsMgrServer = std::make_shared<DataObsMgrService>();
218 dataObsMgrServer->Init();
219 auto tmp = dataObsMgrServer->dataObsMgrInnerExt_;
220 dataObsMgrServer->dataObsMgrInnerExt_ = nullptr;
221
222 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt({ ChangeInfo::ChangeType::UPDATE, { uri } }));
223 dataObsMgrServer->dataObsMgrInnerExt_ = tmp;
224 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0200 end");
225 }
226
227 /*
228 * Feature: DataObsMgrService
229 * Function: NotifyChangeExt
230 * SubFunction: NA
231 * FunctionPoints: DataObsMgrService NotifyChangeExt
232 * EnvConditions: NA
233 * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is abnormal.
234 */
235 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChangeExt_0300, TestSize.Level1)
236
237
238 {
239 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0300 start");
240 const int testVal = static_cast<int>(DATAOBS_SERVICE_TASK_LIMMIT);
241 Uri uri("dataobs://authority/com.domainname.dataability.persondata/ person/10");
242 auto dataObsMgrServer = std::make_shared<DataObsMgrService>();
243 dataObsMgrServer->Init();
244 auto tmp = dataObsMgrServer->taskCount_;
245 dataObsMgrServer->taskCount_ = DataObsMgrService::TASK_COUNT_MAX;
246
247 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt({ ChangeInfo::ChangeType::UPDATE, { uri } }));
248 dataObsMgrServer->taskCount_ = tmp;
249 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0300 end");
250 }
251
252 /*
253 * Feature: DataObsMgrService
254 * Function: NotifyChangeExt
255 * SubFunction: NA
256 * FunctionPoints: DataObsMgrService NotifyChangeExt
257 * EnvConditions: NA
258 * CaseDescription: Verify that the DataObsMgrService NotifyChangeExt is abnormal.
259 */
260 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyChangeExt_0400, TestSize.Level1)
261 {
262 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0400 start");
263 const int testVal = static_cast<int>(DATAOBS_SERVICE_INNER_IS_NULL);
264 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
265 dataObsMgrServer->Init();
266 ChangeInfo changeInfo;
267 auto tmp = changeInfo.size_;
268 changeInfo.size_ = std::numeric_limits<decltype(changeInfo.size_)>::max();
269
270 EXPECT_EQ(testVal, dataObsMgrServer->NotifyChangeExt(changeInfo));
271 changeInfo.size_ = tmp;
272 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyChangeExt_0400 end");
273 }
274
275 /*
276 * Feature: DataObsMgrService
277 * Function: NotifyProcessObserver
278 * SubFunction: NA
279 * FunctionPoints: DataObsMgrService NotifyProcessObserver
280 * EnvConditions: NA
281 * CaseDescription: Verify that the DataObsMgrService NotifyProcessObserver is abnormal.
282 */
283 HWTEST_F(DataObsMgrServiceSecondTest, DataObsMgrServiceSecondTest_NotifyProcessObserver_0100, TestSize.Level1)
284 {
285 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyProcessObserver_0100 start");
286 const int testVal = static_cast<int>(DATAOBS_PROXY_INNER_ERR);
287 auto dataObsMgrServer = DelayedSingleton<DataObsMgrService>::GetInstance();
288 const std::string key;
289 const sptr<IRemoteObject> observer;
290
291 EXPECT_EQ(testVal, dataObsMgrServer->NotifyProcessObserver(key, observer));
292 TAG_LOGI(AAFwkTag::TEST, "DataObsMgrServiceSecondTest_NotifyProcessObserver_0100 end");
293 }
294
295 } // namespace AAFwk
296 } // namespace OHOS
297