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