1 /*
2  * Copyright (c) 2022-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 <cstdio>
17 #include <fcntl.h>
18 #include <gtest/gtest.h>
19 #include <string_view>
20 #include <sys/stat.h>
21 #include <sys/types.h>
22 #include <unistd.h>
23 #include <vector>
24 
25 #include "b_json/b_json_cached_entity.h"
26 #include "b_json/b_json_entity_caps.h"
27 #include "b_json/b_json_entity_extension_config.h"
28 #include "b_process/b_process.h"
29 #include "b_resources/b_constants.h"
30 #include "directory_ex.h"
31 #include "file_ex.h"
32 #include "parameter.h"
33 #include "test_manager.h"
34 #include "json/value.h"
35 
36 namespace OHOS::FileManagement::Backup {
37 using namespace std;
38 
39 class BJsonEntityExtensionConfigTest : public testing::Test {
40 public:
SetUpTestCase(void)41     static void SetUpTestCase(void) {};
TearDownTestCase()42     static void TearDownTestCase() {};
SetUp()43     void SetUp() {};
TearDown()44     void TearDown() {};
45 };
46 
47 static vector<string> DEFAULT_INCLUDE_DIR = {
48     "data/storage/el1/database/",
49     "data/storage/el1/base/files/",
50     "data/storage/el1/base/preferences/",
51     "data/storage/el1/base/haps/*/database/",
52     "data/storage/el1/base/haps/*/files/",
53     "data/storage/el1/base/haps/*/preferences/",
54     "data/storage/el2/database/",
55     "data/storage/el2/base/files/",
56     "data/storage/el2/base/preferences/",
57     "data/storage/el2/base/haps/*/database/",
58     "data/storage/el2/base/haps/*/files/",
59     "data/storage/el2/base/haps/*/preferences/",
60     "data/storage/el2/distributedfiles/",
61 };
62 static vector<string> DEFAULT_EXCLUDE_DIR = {};
63 
64 /**
65  * @tc.number: SUB_backup_b_json_entity_extension_config_0100
66  * @tc.name: b_json_entity_extension_config_0100
67  * @tc.desc: 不包含includes和excludes
68  * @tc.size: MEDIUM
69  * @tc.type: FUNC
70  * @tc.level Level 0
71  * @tc.require: I6F3GV
72  */
73 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0100, testing::ext::TestSize.Level0)
74 {
75     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0100";
76     try {
77         TestManager tm("b_json_entity_extension_config_0100");
78 
79         string root = tm.GetRootDirCurTest();
80         string pathConfigFile = root + "config.json";
81         SaveStringToFile(pathConfigFile, "");
82 
83         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
84         auto cache = cachedEntity.Structuralize();
85         vector<string> excludes = cache.GetExcludes();
86         EXPECT_EQ(excludes, DEFAULT_EXCLUDE_DIR);
87         vector<string> includes = cache.GetIncludes();
88         EXPECT_EQ(includes, DEFAULT_INCLUDE_DIR);
89     } catch (...) {
90         EXPECT_TRUE(false);
91         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
92     }
93     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0100";
94 }
95 
96 /**
97  * @tc.number: SUB_backup_b_json_entity_extension_config_0200
98  * @tc.name: b_json_entity_extension_config_0200
99  * @tc.desc: json文件中只包含includes
100  * @tc.size: MEDIUM
101  * @tc.type: FUNC
102  * @tc.level Level 0
103  * @tc.require: I6F3GV
104  */
105 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0200, testing::ext::TestSize.Level0)
106 {
107     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0200";
108     try {
109         TestManager tm("b_json_entity_extension_config_0200");
110 
111         string root = tm.GetRootDirCurTest();
112         string pathConfigFile = root + "config.json";
113         SaveStringToFile(pathConfigFile, R"({"includes":["", "", ""]})");
114 
115         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
116         auto cache = cachedEntity.Structuralize();
117         vector<string> includes = cache.GetIncludes();
118         vector<string> includesExpect = {"", "", ""};
119         EXPECT_EQ(includes, includesExpect);
120     } catch (...) {
121         EXPECT_TRUE(false);
122         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
123     }
124     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0200";
125 }
126 
127 /**
128  * @tc.number: SUB_backup_b_json_entity_extension_config_0300
129  * @tc.name: b_json_entity_extension_config_0300
130  * @tc.desc: json文件中只包含excludes
131  * @tc.size: MEDIUM
132  * @tc.type: FUNC
133  * @tc.level Level 0
134  * @tc.require: I6F3GV
135  */
136 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0300, testing::ext::TestSize.Level0)
137 {
138     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0300";
139     try {
140         TestManager tm("b_json_entity_extension_config_0300");
141 
142         string root = tm.GetRootDirCurTest();
143         string pathConfigFile = root + "config.json";
144         SaveStringToFile(pathConfigFile, R"({"excludes":["", "", ""]})");
145 
146         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
147         auto cache = cachedEntity.Structuralize();
148         vector<string> excludes = cache.GetExcludes();
149         vector<string> excludesExpect = {"", "", ""};
150         EXPECT_EQ(excludes, excludesExpect);
151     } catch (...) {
152         EXPECT_TRUE(false);
153         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
154     }
155     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0300";
156 }
157 
158 /**
159  * @tc.number: SUB_backup_b_json_entity_extension_config_0400
160  * @tc.name: b_json_entity_extension_config_0400
161  * @tc.desc: 同时包含includes和excludes
162  * @tc.size: MEDIUM
163  * @tc.type: FUNC
164  * @tc.level Level 0
165  * @tc.require: I6F3GV
166  */
167 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0400, testing::ext::TestSize.Level0)
168 {
169     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0400";
170     try {
171         TestManager tm("b_json_entity_extension_config_0400");
172 
173         string root = tm.GetRootDirCurTest();
174         string pathConfigFile = root + "config.json";
175         SaveStringToFile(pathConfigFile, R"({"includes":["", "", ""], "excludes":["", "", ""]})");
176 
177         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
178         auto cache = cachedEntity.Structuralize();
179         vector<string> includes = cache.GetIncludes();
180         vector<string> includesExpect = {"", "", ""};
181         EXPECT_EQ(includes, includesExpect);
182         vector<string> excludes = cache.GetExcludes();
183         vector<string> excludesExpect = {"", "", ""};
184         EXPECT_EQ(excludes, excludesExpect);
185     } catch (...) {
186         EXPECT_TRUE(false);
187         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
188     }
189     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0400";
190 }
191 
192 /**
193  * @tc.number: SUB_backup_b_json_entity_extension_config_0500
194  * @tc.name: b_json_entity_extension_config_0500
195  * @tc.desc: json文件中标签为特殊字符
196  * @tc.size: MEDIUM
197  * @tc.type: FUNC
198  * @tc.level Level 2
199  * @tc.require: I6F3GV
200  */
201 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0500, testing::ext::TestSize.Level2)
202 {
203     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0500";
204     try {
205         TestManager tm("b_json_entity_extension_config_0500");
206 
207         string root = tm.GetRootDirCurTest();
208         string pathConfigFile = root + "config.json";
209         SaveStringToFile(pathConfigFile, R"({"%#$%445":["", "", ""]})");
210 
211         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
212         auto cache = cachedEntity.Structuralize();
213         vector<string> includes = cache.GetIncludes();
214         vector<string> includesExpect = {DEFAULT_INCLUDE_DIR};
215         EXPECT_EQ(includes, includesExpect);
216         vector<string> excludes = cache.GetExcludes();
217         vector<string> excludesExpect = {DEFAULT_EXCLUDE_DIR};
218         EXPECT_EQ(excludes, excludesExpect);
219     } catch (...) {
220         EXPECT_TRUE(false);
221         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
222     }
223     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0500";
224 }
225 
226 /**
227  * @tc.number: SUB_backup_b_json_entity_extension_config_0600
228  * @tc.name: b_json_entity_extension_config_0600
229  * @tc.desc: json文件中标签为中文汉字
230  * @tc.size: MEDIUM
231  * @tc.type: FUNC
232  * @tc.level Level 2
233  * @tc.require: I6F3GV
234  */
235 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0600, testing::ext::TestSize.Level2)
236 {
237     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0600";
238     try {
239         TestManager tm("b_json_entity_extension_config_0600");
240 
241         string root = tm.GetRootDirCurTest();
242         string pathConfigFile = root + "config.json";
243         SaveStringToFile(pathConfigFile, R"({"测试代码":["", "", ""]})");
244 
245         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
246         auto cache = cachedEntity.Structuralize();
247         vector<string> includes = cache.GetIncludes();
248         vector<string> excludes = cache.GetExcludes();
249         EXPECT_EQ(includes, DEFAULT_INCLUDE_DIR);
250         EXPECT_EQ(excludes, DEFAULT_EXCLUDE_DIR);
251     } catch (...) {
252         EXPECT_TRUE(false);
253         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
254     }
255     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0600";
256 }
257 
258 /**
259  * @tc.number: SUB_backup_b_json_entity_extension_config_0700
260  * @tc.name: b_json_entity_extension_config_0700
261  * @tc.desc: json文件中无标签
262  * @tc.size: MEDIUM
263  * @tc.type: FUNC
264  * @tc.level Level 2
265  * @tc.require: I6F3GV
266  */
267 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0700, testing::ext::TestSize.Level2)
268 {
269     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0700";
270     try {
271         TestManager tm("b_json_entity_extension_config_0700");
272 
273         string root = tm.GetRootDirCurTest();
274         string pathConfigFile = root + "config.json";
275         SaveStringToFile(pathConfigFile, R"({"":["", "", ""]})");
276 
277         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(UniqueFd(open(pathConfigFile.data(), O_RDONLY, 0)));
278         auto cache = cachedEntity.Structuralize();
279         vector<string> includes = cache.GetIncludes();
280         EXPECT_EQ(includes, DEFAULT_INCLUDE_DIR);
281         vector<string> excludes = cache.GetExcludes();
282         EXPECT_EQ(excludes, DEFAULT_EXCLUDE_DIR);
283     } catch (...) {
284         EXPECT_TRUE(false);
285         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by construction.";
286     }
287     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0700";
288 }
289 
290 /**
291  * @tc.number: SUB_backup_b_json_entity_extension_config_0900
292  * @tc.name: b_json_entity_extension_config_0900
293  * @tc.desc: 测试 GetJSonSource 接口能否在非service进程下正确读取backup_config.json
294  * @tc.size: MEDIUM
295  * @tc.type: FUNC
296  * @tc.level Level 2
297  * @tc.require: I6F3GV
298  */
299 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_0900, testing::ext::TestSize.Level2)
300 {
301     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_0900";
302     try {
303         string jsonContent = R"({"allowToBackupRestore":true})";
304         auto [bFatalErr, ret] = BProcess::ExecuteCmd({"mkdir", "-p", BConstants::BACKUP_CONFIG_EXTENSION_PATH});
305         EXPECT_FALSE(bFatalErr);
306         EXPECT_EQ(ret, 0);
307         string jsonFilePath = string(BConstants::BACKUP_CONFIG_EXTENSION_PATH).append(BConstants::BACKUP_CONFIG_JSON);
308         SaveStringToFile(jsonFilePath, jsonContent);
309         string_view sv = R"({"allowToBackupRestore":false})";
310         SetMockParameter(true);
311         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
312         auto cache = cachedEntity.Structuralize();
313         string jsonRead = cache.GetJSonSource(sv, any());
314         EXPECT_NE(jsonRead, jsonContent);
315     } catch (...) {
316         EXPECT_TRUE(false);
317         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetJSonSource.";
318     }
319     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_0900";
320 }
321 
322 /**
323  * @tc.number: SUB_backup_b_json_entity_extension_config_1000
324  * @tc.name: b_json_entity_extension_config_1000
325  * @tc.desc: 测试GetJSonSource接口能否在service进程下正确读取backup_config.json
326  * @tc.size: MEDIUM
327  * @tc.type: FUNC
328  * @tc.level Level 2
329  * @tc.require: I6F3GV
330  */
331 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1000, testing::ext::TestSize.Level2)
332 {
333     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1000";
334     try {
335         string bundleName = "com.example.app2backup";
336         string jsonFileDir = BConstants::GetSaBundleBackupRootDir(BConstants::DEFAULT_USER_ID).append(bundleName);
337         string jsonContent = R"({"allowToBackupRestore":true})";
338         auto [bFatalErr, ret] = BProcess::ExecuteCmd({"mkdir", "-p", jsonFileDir});
339         EXPECT_FALSE(bFatalErr);
340         EXPECT_EQ(ret, 0);
341         string jsonFilePath = jsonFileDir.append("/").append(BConstants::BACKUP_CONFIG_JSON);
342         SaveStringToFile(jsonFilePath, jsonContent);
343         uid_t currUid = getuid();
344         setuid(BConstants::BACKUP_UID);
345         string_view sv = R"({"allowToBackupRestore":false})";
346         SetMockParameter(true);
347         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv, bundleName);
348         auto cache = cachedEntity.Structuralize();
349         string jsonRead = cache.GetJSonSource(sv, bundleName);
350         setuid(currUid);
351         EXPECT_NE(jsonRead, jsonContent);
352     } catch (...) {
353         EXPECT_TRUE(false);
354         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetJSonSource.";
355     }
356     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1000";
357 }
358 
359 /**
360  * @tc.number: SUB_backup_b_json_entity_extension_config_1100
361  * @tc.name: b_json_entity_extension_config_1100
362  * @tc.desc: 测试GetJSonSource接口能否在backup.debug.overrideExtensionConfig为false的情况下保持原JSon字符串不变
363  * @tc.size: MEDIUM
364  * @tc.type: FUNC
365  * @tc.level Level 2
366  * @tc.require: I6F3GV
367  */
368 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1100, testing::ext::TestSize.Level2)
369 {
370     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1100";
371     try {
372         string_view sv = R"({"allowToBackupRestore":false})";
373         SetMockParameter(false);
374         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
375         auto cache = cachedEntity.Structuralize();
376         string jsonRead = cache.GetJSonSource(sv, any());
377         EXPECT_EQ(jsonRead, string(sv));
378     } catch (...) {
379         EXPECT_TRUE(false);
380         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetJSonSource.";
381     }
382     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1100";
383 }
384 
385 /**
386  * @tc.number: SUB_backup_b_json_entity_extension_config_1200
387  * @tc.name: b_json_entity_extension_config_1200
388  * @tc.desc: 测试GetIncludes接口在Json数据中键为includes的值不为数组时能否成功返回默认目录
389  * @tc.size: MEDIUM
390  * @tc.type: FUNC
391  * @tc.level Level 2
392  * @tc.require: I6F3GV
393  */
394 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1200, testing::ext::TestSize.Level2)
395 {
396     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1200";
397     try {
398         string_view sv = R"({"includes":1})";
399         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
400         auto cache = cachedEntity.Structuralize();
401         vector<string> vs = cache.GetIncludes();
402         EXPECT_EQ(vs, DEFAULT_INCLUDE_DIR);
403     } catch (...) {
404         EXPECT_TRUE(false);
405         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetIncludes.";
406     }
407     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1200";
408 }
409 
410 /**
411  * @tc.number: SUB_backup_b_json_entity_extension_config_1300
412  * @tc.name: b_json_entity_extension_config_1300
413  * @tc.desc: 测试GetIncludes接口在Json数据中键为includes的值为数组且数组元素全都不为字符串时能否成功返回空目录
414  * @tc.size: MEDIUM
415  * @tc.type: FUNC
416  * @tc.level Level 2
417  * @tc.require: I6F3GV
418  */
419 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1300, testing::ext::TestSize.Level2)
420 {
421     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1300";
422     try {
423         string_view sv = R"({"includes":[1]})";
424         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
425         auto cache = cachedEntity.Structuralize();
426         vector<string> includes = cache.GetIncludes();
427         EXPECT_EQ(includes, vector<string>({""}));
428     } catch (...) {
429         EXPECT_TRUE(false);
430         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetIncludes.";
431     }
432     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1300";
433 }
434 
435 /**
436  * @tc.number: SUB_backup_b_json_entity_extension_config_1400
437  * @tc.name: b_json_entity_extension_config_1400
438  * @tc.desc: 测试GetExcludes接口在Json数据中键为excludes的值不为数组时能否成功返回空vector
439  * @tc.size: MEDIUM
440  * @tc.type: FUNC
441  * @tc.level Level 2
442  * @tc.require: I6F3GV
443  */
444 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1400, testing::ext::TestSize.Level2)
445 {
446     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1400";
447     try {
448         string_view sv = R"({"excludes":1})";
449         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
450         auto cache = cachedEntity.Structuralize();
451         vector<string> excludes = cache.GetExcludes();
452         EXPECT_EQ(excludes, vector<string>());
453     } catch (...) {
454         EXPECT_TRUE(false);
455         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetExcludes.";
456     }
457     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1400";
458 }
459 
460 /**
461  * @tc.number: SUB_backup_b_json_entity_extension_config_1500
462  * @tc.name: b_json_entity_extension_config_1500
463  * @tc.desc: 测试GetExcludes接口在Json数据中键为excludes的值为数组且数组元素全都不为字符串时能否成功返回空vector
464  * @tc.size: MEDIUM
465  * @tc.type: FUNC
466  * @tc.level Level 2
467  * @tc.require: I6F3GV
468  */
469 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1500, testing::ext::TestSize.Level2)
470 {
471     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1500";
472     try {
473         string_view sv = R"({"excludes":[1]})";
474         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
475         auto cache = cachedEntity.Structuralize();
476         vector<string> cludes = cache.GetExcludes();
477         EXPECT_EQ(cludes, vector<string>());
478     } catch (...) {
479         EXPECT_TRUE(false);
480         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetExcludes.";
481     }
482     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1500";
483 }
484 
485 /**
486  * @tc.number: SUB_backup_b_json_entity_extension_config_1600
487  * @tc.name: b_json_entity_extension_config_1600
488  * @tc.desc: 测试GetAllowToBackupRestore接口在Json数据对象nullValue时能否成功返回false
489  * @tc.size: MEDIUM
490  * @tc.type: FUNC
491  * @tc.level Level 2
492  * @tc.require: I6F3GV
493  */
494 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1600, testing::ext::TestSize.Level2)
495 {
496     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1600";
497     try {
498         Json::Value jv(Json::nullValue);
499         BJsonEntityExtensionConfig extCfg(jv);
500         EXPECT_FALSE(extCfg.GetAllowToBackupRestore());
501     } catch (...) {
502         EXPECT_TRUE(false);
503         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetAllowToBackupRestore.";
504     }
505     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1600";
506 }
507 
508 /**
509  * @tc.number: SUB_backup_b_json_entity_extension_config_1700
510  * @tc.name: b_json_entity_extension_config_1700
511  * @tc.desc: 测试GetAllowToBackupRestore接口在Json数据对象不含allowToBackupRestore键时能否成功返回false
512  * @tc.size: MEDIUM
513  * @tc.type: FUNC
514  * @tc.level Level 2
515  * @tc.require: I6F3GV
516  */
517 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1700, testing::ext::TestSize.Level2)
518 {
519     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1700";
520     try {
521         string_view sv = R"({"allowToBackupRestore_":true})";
522         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
523         auto cache = cachedEntity.Structuralize();
524         EXPECT_FALSE(cache.GetAllowToBackupRestore());
525     } catch (...) {
526         EXPECT_TRUE(false);
527         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetAllowToBackupRestore.";
528     }
529     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1700";
530 }
531 
532 /**
533  * @tc.number: SUB_backup_b_json_entity_extension_config_1800
534  * @tc.name: b_json_entity_extension_config_1800
535  * @tc.desc: 测试GetAllowToBackupRestore接口在Json数据对象键为allowToBackupRestore的值不为布尔值时能否成功返回false
536  * @tc.size: MEDIUM
537  * @tc.type: FUNC
538  * @tc.level Level 2
539  * @tc.require: I6F3GV
540  */
541 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1800, testing::ext::TestSize.Level2)
542 {
543     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1800";
544     try {
545         string_view sv = R"({"allowToBackupRestore":1})";
546         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
547         auto cache = cachedEntity.Structuralize();
548         EXPECT_FALSE(cache.GetAllowToBackupRestore());
549     } catch (...) {
550         EXPECT_TRUE(false);
551         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetAllowToBackupRestore.";
552     }
553     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1800";
554 }
555 
556 /**
557  * @tc.number: SUB_backup_b_json_entity_extension_config_1900
558  * @tc.name: b_json_entity_extension_config_1900
559  * @tc.desc: 测试GetAllowToBackupRestore接口在Json数据对象键为allowToBackupRestore的值不为TRUE时能否成功返回TRUE
560  * @tc.size: MEDIUM
561  * @tc.type: FUNC
562  * @tc.level Level 2
563  * @tc.require: issuesI8J01W
564  */
565 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_1900, testing::ext::TestSize.Level2)
566 {
567     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_1900";
568     try {
569         string_view sv = R"({"allowToBackupRestore":true})";
570         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
571         auto cache = cachedEntity.Structuralize();
572         EXPECT_TRUE(cache.GetAllowToBackupRestore());
573     } catch (...) {
574         EXPECT_TRUE(false);
575         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetAllowToBackupRestore.";
576     }
577     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_1900";
578 }
579 
580 /**
581  * @tc.number: SUB_backup_b_json_entity_extension_config_2000
582  * @tc.name: b_json_entity_extension_config_2000
583  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象nullValue时能否成功返回false
584  * @tc.size: MEDIUM
585  * @tc.type: FUNC
586  * @tc.level Level 2
587  * @tc.require: issuesI8J01W
588  */
589 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2000, testing::ext::TestSize.Level2)
590 {
591     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2000";
592     try {
593         Json::Value jv(Json::nullValue);
594         BJsonEntityExtensionConfig extCfg(jv);
595         EXPECT_FALSE(extCfg.GetFullBackupOnly());
596     } catch (...) {
597         EXPECT_TRUE(false);
598         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetFullBackupOnly.";
599     }
600     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2000";
601 }
602 
603 /**
604  * @tc.number: SUB_backup_b_json_entity_extension_config_2100
605  * @tc.name: b_json_entity_extension_config_2100
606  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象不含fullBackupOnly键时能否成功返回false
607  * @tc.size: MEDIUM
608  * @tc.type: FUNC
609  * @tc.level Level 2
610  * @tc.require: issuesI8J01W
611  */
612 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2100, testing::ext::TestSize.Level2)
613 {
614     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2100";
615     try {
616         string_view sv = R"({"fullBackupOnly_":true})";
617         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
618         auto cache = cachedEntity.Structuralize();
619         EXPECT_FALSE(cache.GetFullBackupOnly());
620     } catch (...) {
621         EXPECT_TRUE(false);
622         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetFullBackupOnly.";
623     }
624     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2100";
625 }
626 
627 /**
628  * @tc.number: SUB_backup_b_json_entity_extension_config_2200
629  * @tc.name: b_json_entity_extension_config_2200
630  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象键为fullBackupOnly的值不为布尔值时能否成功返回false
631  * @tc.size: MEDIUM
632  * @tc.type: FUNC
633  * @tc.level Level 2
634  * @tc.require: issuesI8J01W
635  */
636 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2200, testing::ext::TestSize.Level2)
637 {
638     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2200";
639     try {
640         string_view sv = R"({"fullBackupOnly":1})";
641         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
642         auto cache = cachedEntity.Structuralize();
643         EXPECT_FALSE(cache.GetFullBackupOnly());
644     } catch (...) {
645         EXPECT_TRUE(false);
646         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetFullBackupOnly.";
647     }
648     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2200";
649 }
650 
651 /**
652  * @tc.number: SUB_backup_b_json_entity_extension_config_2300
653  * @tc.name: b_json_entity_extension_config_2300
654  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象键为fullBackupOnly的值为TRUE时能否成功返回TRUE
655  * @tc.size: MEDIUM
656  * @tc.type: FUNC
657  * @tc.level Level 2
658  * @tc.require: issuesI8J01W
659  */
660 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2300, testing::ext::TestSize.Level2)
661 {
662     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2300";
663     try {
664         string_view sv = R"({"fullBackupOnly":true})";
665         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
666         auto cache = cachedEntity.Structuralize();
667         EXPECT_TRUE(cache.GetFullBackupOnly());
668     } catch (...) {
669         EXPECT_TRUE(false);
670         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetFullBackupOnly.";
671     }
672     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2300";
673 }
674 
675 /**
676  * @tc.number: SUB_backup_b_json_entity_extension_config_2400
677  * @tc.name: b_json_entity_extension_config_2400
678  * @tc.desc: 测试GetRestoreDeps接口在Json数据对象nullValue时能否成功返回空串
679  * @tc.size: MEDIUM
680  * @tc.type: FUNC
681  * @tc.level Level 2
682  * @tc.require: issuesI8J01W
683  */
684 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2400, testing::ext::TestSize.Level2)
685 {
686     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2400";
687     try {
688         Json::Value jv(Json::nullValue);
689         BJsonEntityExtensionConfig extCfg(jv);
690         EXPECT_TRUE(extCfg.GetRestoreDeps().empty());
691     } catch (...) {
692         EXPECT_TRUE(false);
693         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
694     }
695     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2400";
696 }
697 
698 /**
699  * @tc.number: SUB_backup_b_json_entity_extension_config_2500
700  * @tc.name: b_json_entity_extension_config_2500
701  * @tc.desc: 测试GetRestoreDeps接口在Json数据对象不含restoreDeps键时能否成功返回空串
702  * @tc.size: MEDIUM
703  * @tc.type: FUNC
704  * @tc.level Level 2
705  * @tc.require: issuesI8J01W
706  */
707 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2500, testing::ext::TestSize.Level2)
708 {
709     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2500";
710     try {
711         string_view sv = R"({"restoreDeps_":true})";
712         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
713         auto cache = cachedEntity.Structuralize();
714         EXPECT_TRUE(cache.GetRestoreDeps().empty());
715     } catch (...) {
716         EXPECT_TRUE(false);
717         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
718     }
719     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2500";
720 }
721 
722 /**
723  * @tc.number: SUB_backup_b_json_entity_extension_config_2600
724  * @tc.name: b_json_entity_extension_config_2600
725  * @tc.desc: 测试GetRestoreDeps接口在Json数据对象键为restoreDeps的值不为字符串时能否成功返回空串
726  * @tc.size: MEDIUM
727  * @tc.type: FUNC
728  * @tc.level Level 2
729  * @tc.require: issuesI8J01W
730  */
731 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2600, testing::ext::TestSize.Level2)
732 {
733     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2600";
734     try {
735         string_view sv = R"({"restoreDeps":1})";
736         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
737         auto cache = cachedEntity.Structuralize();
738         EXPECT_TRUE(cache.GetRestoreDeps().empty());
739     } catch (...) {
740         EXPECT_TRUE(false);
741         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
742     }
743     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2600";
744 }
745 
746 /**
747  * @tc.number: SUB_backup_b_json_entity_extension_config_2700
748  * @tc.name: b_json_entity_extension_config_2700
749  * @tc.desc: 测试GetRestoreDeps接口在Json数据对象键为restoreDeps的值为"true"时能否成功返回字符串"true"
750  * @tc.size: MEDIUM
751  * @tc.type: FUNC
752  * @tc.level Level 2
753  * @tc.require: issuesI8J01W
754  */
755 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2700, testing::ext::TestSize.Level2)
756 {
757     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2700";
758     try {
759         string_view sv = R"({"restoreDeps":"true"})";
760         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
761         auto cache = cachedEntity.Structuralize();
762         EXPECT_EQ(cache.GetRestoreDeps(), "true");
763     } catch (...) {
764         EXPECT_TRUE(false);
765         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
766     }
767     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2700";
768 }
769 
770 /**
771  * @tc.number: SUB_backup_b_json_entity_extension_config_2800
772  * @tc.name: b_json_entity_extension_config_2800
773  * @tc.desc: 测试 GetIncludes 接口在Json数据中键为includes的值为数组且数组元素为空时能否成功返回空目录
774  * @tc.size: MEDIUM
775  * @tc.type: FUNC
776  * @tc.level Level 2
777  * @tc.require: I6F3GV
778  */
779 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2800, testing::ext::TestSize.Level2)
780 {
781     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2800";
782     try {
783         string_view sv = R"({"includes":[]})";
784         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
785         auto cache = cachedEntity.Structuralize();
786         vector<string> vs = cache.GetIncludes();
787         EXPECT_EQ(vs, vector<string>({""}));
788     } catch (...) {
789         EXPECT_TRUE(false);
790         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetIncludes.";
791     }
792     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2800";
793 }
794 
795 /**
796  * @tc.number: SUB_backup_b_json_entity_extension_config_2900
797  * @tc.name: b_json_entity_extension_config_2900
798  * @tc.desc: 测试GetExcludes接口在Json数据中键为excludes的值为数组且数组元素为空时能否成功返回空vector
799  * @tc.size: MEDIUM
800  * @tc.type: FUNC
801  * @tc.level Level 2
802  * @tc.require: I6F3GV
803  */
804 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_2900, testing::ext::TestSize.Level2)
805 {
806     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_2900";
807     try {
808         string_view sv = R"({"excludes":[]})";
809         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
810         auto cache = cachedEntity.Structuralize();
811         vector<string> vs = cache.GetExcludes();
812         EXPECT_EQ(vs, vector<string>());
813     } catch (...) {
814         EXPECT_TRUE(false);
815         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetExcludes.";
816     }
817     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_2900";
818 }
819 
820 
821 /**
822  * @tc.number: SUB_backup_b_json_entity_extension_config_3000
823  * @tc.name: b_json_entity_extension_config_3000
824  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象键为fullBackupOnly的值不为布尔值时能否成功返回false
825  * @tc.size: MEDIUM
826  * @tc.type: FUNC
827  * @tc.level Level 2
828  * @tc.require: I6F3GV
829  */
830 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3000, testing::ext::TestSize.Level2)
831 {
832     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3000";
833     try {
834         string_view sv = R"({"fullBackupOnly":1})";
835         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
836         auto cache = cachedEntity.Structuralize();
837         EXPECT_FALSE(cache.GetFullBackupOnly());
838     } catch (...) {
839         EXPECT_TRUE(false);
840         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetFullBackupOnly.";
841     }
842     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3000";
843 }
844 
845 /**
846  * @tc.number: SUB_backup_b_json_entity_extension_config_3100
847  * @tc.name: b_json_entity_extension_config_3100
848  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象不含fullBackupOnly键时能否成功返回TRUE
849  * @tc.size: MEDIUM
850  * @tc.type: FUNC
851  * @tc.level Level 2
852  * @tc.require: I6F3GV
853  */
854 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3100, testing::ext::TestSize.Level2)
855 {
856     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3100";
857     try {
858         string_view sv = R"({"fullBackupOnly":true})";
859         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
860         auto cache = cachedEntity.Structuralize();
861         EXPECT_TRUE(cache.GetFullBackupOnly());
862     } catch (...) {
863         EXPECT_TRUE(false);
864         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetAllowToBackupRestore.";
865     }
866     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3100";
867 }
868 
869 /**
870  * @tc.number: SUB_backup_b_json_entity_extension_config_3200
871  * @tc.name: b_json_entity_extension_config_3200
872  * @tc.desc: 测试GetFullBackupOnly接口在Json数据对象nullValue时能否成功返回false
873  * @tc.size: MEDIUM
874  * @tc.type: FUNC
875  * @tc.level Level 2
876  * @tc.require: I6F3GV
877  */
878 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3200, testing::ext::TestSize.Level2)
879 {
880     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3200";
881     try {
882         Json::Value jv(Json::nullValue);
883         BJsonEntityExtensionConfig extCfg(jv);
884         EXPECT_FALSE(extCfg.GetFullBackupOnly());
885     } catch (...) {
886         EXPECT_TRUE(false);
887         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetFullBackupOnly.";
888     }
889     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3200";
890 }
891 
892 /**
893  * @tc.number: SUB_backup_b_json_entity_extension_config_3300
894  * @tc.name: b_json_entity_extension_config_3300
895  * @tc.desc: 测试GetRestoreDeps接口能否在Json数据对象的键为restoreDeps的值不为字符串值时能否成功返回string
896  * @tc.size: MEDIUM
897  * @tc.type: FUNC
898  * @tc.level Level 2
899  * @tc.require: I6F3GV
900  */
901 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3300, testing::ext::TestSize.Level2)
902 {
903     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3300";
904     try {
905         string_view sv = R"({"restoreDeps":1})";
906         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
907         auto cache = cachedEntity.Structuralize();
908         string restoreDeps = cache.GetRestoreDeps();
909         EXPECT_NE(restoreDeps, string(sv));
910     } catch (...) {
911         EXPECT_TRUE(false);
912         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
913     }
914     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3300";
915 }
916 
917 /**
918  * @tc.number: SUB_backup_b_json_entity_extension_config_3400
919  * @tc.name: b_json_entity_extension_config_3400
920  * @tc.desc: 测试GetRestoreDeps接口能否在Json数据对象不含restoreDeps键时能否成功返回string
921  * @tc.size: MEDIUM
922  * @tc.type: FUNC
923  * @tc.level Level 2
924  * @tc.require: I6F3GV
925  */
926 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3400, testing::ext::TestSize.Level2)
927 {
928     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3400";
929     try {
930         string_view sv = R"({"restoreDeps_":true})";
931         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
932         auto cache = cachedEntity.Structuralize();
933         string depRead = cache.GetRestoreDeps();
934         EXPECT_NE(depRead, string(sv));
935     } catch (...) {
936         EXPECT_TRUE(false);
937         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
938     }
939     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3400";
940 }
941 
942 /**
943  * @tc.number: SUB_backup_b_json_entity_extension_config_3500
944  * @tc.name: b_json_entity_extension_config_3500
945  * @tc.desc: 测试GetRestoreDeps接口能否在Json数据对象不含restoreDeps键时能否成功返回空
946  * @tc.size: MEDIUM
947  * @tc.type: FUNC
948  * @tc.level Level 2
949  * @tc.require: I6F3GV
950  */
951 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3500, testing::ext::TestSize.Level2)
952 {
953     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3500";
954     try {
955         string_view sv = R"({"":true})";
956         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity(sv);
957         auto cache = cachedEntity.Structuralize();
958         string depRead = cache.GetRestoreDeps();
959         EXPECT_EQ(depRead, "");
960     } catch (...) {
961         EXPECT_TRUE(false);
962         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
963     }
964     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3500";
965 }
966 
967 /**
968  * @tc.number: SUB_backup_b_json_entity_extension_config_3600
969  * @tc.name: b_json_entity_extension_config_3600
970  * @tc.desc: 测试GetSupportScene接口能否成功返回
971  * @tc.size: MEDIUM
972  * @tc.type: FUNC
973  * @tc.level Level 2
974  * @tc.require: issuesI9JXNH
975  */
976 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3600, testing::ext::TestSize.Level2)
977 {
978     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3600";
979     try {
980         string_view sv1 = R"({"":true})";
981         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity1(sv1);
982         auto cache1 = cachedEntity1.Structuralize();
983         string supportScene = cache1.GetSupportScene();
984         EXPECT_EQ(supportScene, "");
985 
986         string_view sv2 = R"({"supportScene":true})";
987         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity2(sv2);
988         auto cache2 = cachedEntity2.Structuralize();
989         supportScene = cache2.GetSupportScene();
990         EXPECT_EQ(supportScene, "");
991 
992         string_view sv3 = R"({"supportScene":"true"})";
993         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity3(sv3);
994         auto cache3 = cachedEntity3.Structuralize();
995         supportScene = cache3.GetSupportScene();
996         EXPECT_EQ(supportScene, "true");
997     } catch (...) {
998         EXPECT_TRUE(false);
999         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
1000     }
1001     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3600";
1002 }
1003 
1004 /**
1005  * @tc.number: SUB_backup_b_json_entity_extension_config_3700
1006  * @tc.name: b_json_entity_extension_config_3700
1007  * @tc.desc: 测试GetExtraInfo接口能否成功返回
1008  * @tc.size: MEDIUM
1009  * @tc.type: FUNC
1010  * @tc.level Level 2
1011  * @tc.require: issuesI9JXNH
1012  */
1013 HWTEST_F(BJsonEntityExtensionConfigTest, b_json_entity_extension_config_3700, testing::ext::TestSize.Level2)
1014 {
1015     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-begin b_json_entity_extension_config_3700";
1016     try {
1017         string_view sv1 = R"({"":true})";
1018         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity1(sv1);
1019         auto cache1 = cachedEntity1.Structuralize();
1020         auto extraInfo1 = cache1.GetExtraInfo();
1021         EXPECT_TRUE(extraInfo1.isNull());
1022 
1023         string_view sv2 = R"({"extraInfo":true})";
1024         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity2(sv2);
1025         auto cache2 = cachedEntity2.Structuralize();
1026         auto extraInfo2 = cache2.GetExtraInfo();
1027         EXPECT_TRUE(extraInfo2.isNull());
1028 
1029         string_view sv3 = R"({"extraInfo":{}})";
1030         BJsonCachedEntity<BJsonEntityExtensionConfig> cachedEntity3(sv3);
1031         auto cache3 = cachedEntity3.Structuralize();
1032         auto extraInfo3 = cache3.GetExtraInfo();
1033         EXPECT_TRUE(extraInfo3.isObject());
1034     } catch (...) {
1035         EXPECT_TRUE(false);
1036         GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-an exception occurred by GetRestoreDeps.";
1037     }
1038     GTEST_LOG_(INFO) << "BJsonEntityExtensionConfigTest-end b_json_entity_extension_config_3700";
1039 }
1040 } // namespace OHOS::FileManagement::Backup