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 <iostream>
17 #include <sstream>
18 #include <string>
19 #include <sys/stat.h>
20 #include <unistd.h>
21 #include <vector>
22 #include <fstream>
23
24 #include <gtest/gtest.h>
25 #include "json/value.h"
26
27 #include "b_error/b_error.h"
28 #include "b_error/b_excep_utils.h"
29 #include "b_json/b_json_clear_data_config.h"
30 #include "cJsonMock.h"
31
32 namespace OHOS::FileManagement::Backup {
33 using namespace std;
34 using namespace testing;
35
36 namespace {
37 const string PATH = "/data/service/el2/100/backup/";
38 const string CONFIG_NAME = "ClearDataConfig.json";
39 } // namespace
40
41 class BJsonClearDataConfigTest : public testing::Test {
42 public:
43 static void SetUpTestCase(void);
44 static void TearDownTestCase();
45 void SetUp();
46 void TearDown();
47
48 static inline shared_ptr<CJsonMock> cJsonMock = nullptr;
49 };
50
TearDown()51 void BJsonClearDataConfigTest::TearDown() {}
52
SetUp()53 void BJsonClearDataConfigTest::SetUp()
54 {
55 string filePath = PATH + CONFIG_NAME;
56 bool result = remove(filePath.c_str());
57 if (result) {
58 GTEST_LOG_(INFO) << "delete file success.";
59 } else {
60 GTEST_LOG_(INFO) << "delete file failed.";
61 }
62 }
63
SetUpTestCase()64 void BJsonClearDataConfigTest::SetUpTestCase()
65 {
66 cJsonMock = make_shared<CJsonMock>();
67 CJson::cJsonPtr = cJsonMock;
68 }
69
TearDownTestCase()70 void BJsonClearDataConfigTest::TearDownTestCase()
71 {
72 CJson::cJsonPtr = nullptr;
73 cJsonMock = nullptr;
74 }
75
76 /**
77 * @tc.number: SUB_Clear_Data_Config_Test_0100
78 * @tc.name: Clear_Data_Config_Test_0100
79 * @tc.desc: 测试返回空指针情况
80 * @tc.size: MEDIUM
81 * @tc.type: FUNC
82 * @tc.level Level 1
83 * @tc.require: IAAMIK
84 */
85 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0100, testing::ext::TestSize.Level1)
86 {
87 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0100";
88 try {
89 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
90 BJsonClearDataConfig config;
91 } catch (...) {
92 EXPECT_TRUE(false);
93 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
94 }
95 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0100";
96 }
97
98 /**
99 * @tc.number: SUB_Clear_Data_Config_Test_0200
100 * @tc.name: Clear_Data_Config_Test_0200
101 * @tc.desc: 测试返回空指针情况
102 * @tc.size: MEDIUM
103 * @tc.type: FUNC
104 * @tc.level Level 1
105 * @tc.require: IAAMIK
106 */
107 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0200, testing::ext::TestSize.Level1)
108 {
109 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0200";
110 try {
111 int cjson = 0;
112 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
113 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr));
114 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
115 BJsonClearDataConfig config;
116 } catch (...) {
117 EXPECT_TRUE(false);
118 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
119 }
120 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0200";
121 }
122
123 /**
124 * @tc.number: SUB_Clear_Data_Config_Test_0201
125 * @tc.name: Clear_Data_Config_Test_0201
126 * @tc.desc: 测试返回空指针情况
127 * @tc.size: MEDIUM
128 * @tc.type: FUNC
129 * @tc.level Level 1
130 * @tc.require: IAAMIK
131 */
132 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0201, testing::ext::TestSize.Level1)
133 {
134 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0201";
135 try {
136 string filePath = PATH + CONFIG_NAME;
137 int cjson = 0;
138 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
139 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
140 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
141 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
142 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
143 BJsonClearDataConfig config;
144 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
145 } catch (...) {
146 EXPECT_TRUE(false);
147 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
148 }
149 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0201";
150 }
151
152 /**
153 * @tc.number: SUB_Clear_Data_Config_Test_0300
154 * @tc.name: Clear_Data_Config_Test_0300
155 * @tc.desc: 测试 HasClearBundleRecord 接口失败
156 * @tc.size: MEDIUM
157 * @tc.type: FUNC
158 * @tc.level Level 1
159 * @tc.require: IAAMIK
160 */
161 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0300, testing::ext::TestSize.Level1)
162 {
163 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0300";
164 try {
165 string filePath = PATH + CONFIG_NAME;
166 int cjson = 0;
167 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
168 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
169 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
170 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
171 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
172 BJsonClearDataConfig config;
173 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
174
175 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr));
176 auto ret = config.HasClearBundleRecord();
177 EXPECT_FALSE(ret);
178
179 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
180 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
181 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
182 ret = config.HasClearBundleRecord();
183 EXPECT_FALSE(ret);
184 } catch (...) {
185 EXPECT_TRUE(false);
186 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
187 }
188 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0300";
189 }
190
191 /**
192 * @tc.number: SUB_Clear_Data_Config_Test_0301
193 * @tc.name: Clear_Data_Config_Test_0301
194 * @tc.desc: 测试 HasClearBundleRecord 接口成功
195 * @tc.size: MEDIUM
196 * @tc.type: FUNC
197 * @tc.level Level 1
198 * @tc.require: IAAMIK
199 */
200 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0301, testing::ext::TestSize.Level1)
201 {
202 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0301";
203 try {
204 string filePath = PATH + CONFIG_NAME;
205 int cjson = 0;
206 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
207 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
208 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
209 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
210 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
211 BJsonClearDataConfig config;
212 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
213
214 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
215 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
216 EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1));
217 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
218 auto ret = config.HasClearBundleRecord();
219 EXPECT_TRUE(ret);
220 } catch (...) {
221 EXPECT_TRUE(false);
222 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
223 }
224 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0301";
225 }
226
227 /**
228 * @tc.number: SUB_Clear_Data_Config_Test_0400
229 * @tc.name: Clear_Data_Config_Test_0400
230 * @tc.desc: 测试 FindClearBundleRecord 接口失败
231 * @tc.size: MEDIUM
232 * @tc.type: FUNC
233 * @tc.level Level 1
234 * @tc.require: IAAMIK
235 */
236 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0400, testing::ext::TestSize.Level1)
237 {
238 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0400";
239 try {
240 string bundleName = "test1";
241 string filePath = PATH + CONFIG_NAME;
242 int cjson = 0;
243 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
244 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
245 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
246 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
247 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
248 BJsonClearDataConfig config;
249 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
250
251 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr));
252 auto ret = config.FindClearBundleRecord(bundleName);
253 EXPECT_FALSE(ret);
254
255 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
256 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
257 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
258 ret = config.FindClearBundleRecord(bundleName);
259 EXPECT_FALSE(ret);
260 } catch (...) {
261 EXPECT_TRUE(false);
262 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
263 }
264 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0400";
265 }
266
267 /**
268 * @tc.number: SUB_Clear_Data_Config_Test_0401
269 * @tc.name: Clear_Data_Config_Test_0401
270 * @tc.desc: 测试 FindClearBundleRecord 接口失败
271 * @tc.size: MEDIUM
272 * @tc.type: FUNC
273 * @tc.level Level 1
274 * @tc.require: IAAMIK
275 */
276 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0401, testing::ext::TestSize.Level1)
277 {
278 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0401";
279 try {
280 string bundleName = "test1";
281 string filePath = PATH + CONFIG_NAME;
282 int cjson = 0;
283 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
284 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
285 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
286 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
287 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
288 BJsonClearDataConfig config;
289 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
290
291 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
292 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _))
293 .WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)))
294 .WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)))
295 .WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
296 EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)).WillOnce(Return(1));
297 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
298 auto ret = config.FindClearBundleRecord(bundleName);
299 EXPECT_FALSE(ret);
300
301 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
302 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
303 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
304 ret = config.FindClearBundleRecord(bundleName);
305 EXPECT_FALSE(ret);
306
307 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
308 EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(1)).WillOnce(Return(1));
309 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _))
310 .WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)))
311 .WillOnce(Return(nullptr));
312 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
313 ret = config.FindClearBundleRecord(bundleName);
314 EXPECT_FALSE(ret);
315 } catch (...) {
316 EXPECT_TRUE(false);
317 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
318 }
319 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0401";
320 }
321
322 /**
323 * @tc.number: SUB_Clear_Data_Config_Test_0500
324 * @tc.name: Clear_Data_Config_Test_0500
325 * @tc.desc: 测试 WriteClearBundleRecord 接口失败
326 * @tc.size: MEDIUM
327 * @tc.type: FUNC
328 * @tc.level Level 1
329 * @tc.require: IAAMIK
330 */
331 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0500, testing::ext::TestSize.Level1)
332 {
333 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0500";
334 try {
335 string bundleName = "test1";
336 string filePath = PATH + CONFIG_NAME;
337 int cjson = 0;
338 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
339 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
340 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
341 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
342 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
343 BJsonClearDataConfig config;
344 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
345
346 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr));
347 auto ret = config.WriteClearBundleRecord(bundleName);
348 EXPECT_FALSE(ret);
349
350 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
351 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
352 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
353 ret = config.WriteClearBundleRecord(bundleName);
354 EXPECT_FALSE(ret);
355
356 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
357 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
358 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr));
359 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
360 ret = config.WriteClearBundleRecord(bundleName);
361 EXPECT_FALSE(ret);
362
363 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
364 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
365 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
366 EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr));
367 EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true));
368 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
369 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
370 ret = config.WriteClearBundleRecord(bundleName);
371 EXPECT_FALSE(ret);
372 } catch (...) {
373 EXPECT_TRUE(false);
374 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
375 }
376 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0500";
377 }
378
379 /**
380 * @tc.number: SUB_Clear_Data_Config_Test_0600
381 * @tc.name: Clear_Data_Config_Test_0600
382 * @tc.desc: 测试 DeleteClearBundleRecord 接口
383 * @tc.size: MEDIUM
384 * @tc.type: FUNC
385 * @tc.level Level 1
386 * @tc.require: IAAMIK
387 */
388 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0600, testing::ext::TestSize.Level1)
389 {
390 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0600";
391 try {
392 string bundleName = "test1";
393 string filePath = PATH + CONFIG_NAME;
394 int cjson = 0;
395 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
396 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
397 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
398 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
399 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
400 BJsonClearDataConfig config;
401 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
402
403 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
404 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
405 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
406 auto ret = config.DeleteClearBundleRecord(bundleName);
407 EXPECT_FALSE(ret);
408 } catch (...) {
409 EXPECT_TRUE(false);
410 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
411 }
412 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0600";
413 }
414
415 /**
416 * @tc.number: SUB_Clear_Data_Config_Test_0700
417 * @tc.name: Clear_Data_Config_Test_0700
418 * @tc.desc: 测试 InsertClearBundleRecord 接口
419 * @tc.size: MEDIUM
420 * @tc.type: FUNC
421 * @tc.level Level 1
422 * @tc.require: IAAMIK
423 */
424 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0700, testing::ext::TestSize.Level1)
425 {
426 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0700";
427 try {
428 string bundleName = "test1";
429 string filePath = PATH + CONFIG_NAME;
430 int cjson = 0;
431 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
432 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
433 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
434 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
435 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
436 BJsonClearDataConfig config;
437 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
438
439 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr));
440 auto ret = config.InsertClearBundleRecord(bundleName);
441 EXPECT_FALSE(ret);
442
443 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
444 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
445 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
446 ret = config.InsertClearBundleRecord(bundleName);
447 EXPECT_FALSE(ret);
448 } catch (...) {
449 EXPECT_TRUE(false);
450 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
451 }
452 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0700";
453 }
454
455 /**
456 * @tc.number: SUB_Clear_Data_Config_Test_0800
457 * @tc.name: Clear_Data_Config_Test_0800
458 * @tc.desc: 测试 GetAllClearBundleRecords 接口
459 * @tc.size: MEDIUM
460 * @tc.type: FUNC
461 * @tc.level Level 1
462 * @tc.require: IAAMIK
463 */
464 HWTEST_F(BJsonClearDataConfigTest, Clear_Data_Config_Test_0800, testing::ext::TestSize.Level1)
465 {
466 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-begin Clear_Data_Config_Test_0800";
467 try {
468 string bundleName = "test1";
469 string filePath = PATH + CONFIG_NAME;
470 int cjson = 0;
471 EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
472 EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
473 EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true));
474 EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr));
475 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
476 BJsonClearDataConfig config;
477 EXPECT_EQ(access(filePath.c_str(), F_OK), 0);
478
479 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr));
480 auto ret = config.GetAllClearBundleRecords();
481 EXPECT_EQ(ret.size(), 0);
482
483 EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast<cJSON *>(&cjson)));
484 EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr));
485 EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return());
486 ret = config.GetAllClearBundleRecords();
487 EXPECT_EQ(ret.size(), 0);
488 } catch (...) {
489 EXPECT_TRUE(false);
490 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-an exception occurred by construction.";
491 }
492 GTEST_LOG_(INFO) << "BJsonClearDataConfigTest-end Clear_Data_Config_Test_0800";
493 }
494 } // namespace OHOS::FileManagement::Backup