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