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