• 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 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