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 "gtest/gtest.h" 17 #include "utils/constant.h" 18 #include <nlohmann/json.hpp> 19 #include "bootstrap.h" 20 #include "kvstore_meta_manager.h" 21 #include "metadata/appid_meta_data.h" 22 #include "metadata/corrupted_meta_data.h" 23 #include "metadata/capability_range.h" 24 #include "metadata/meta_data.h" 25 #include "metadata/meta_data_manager.h" 26 #include "metadata/secret_key_meta_data.h" 27 #include "metadata/store_meta_data.h" 28 #include "metadata/store_meta_data_local.h" 29 #include "metadata/strategy_meta_data.h" 30 #include "metadata/capability_meta_data.h" 31 #include "metadata/user_meta_data.h" 32 #include "metadata/matrix_meta_data.h" 33 using namespace testing::ext; 34 using namespace OHOS; 35 using namespace OHOS::DistributedKv; 36 using namespace OHOS::DistributedData; 37 namespace OHOS::Test { 38 class ServiceMetaDataTest : public testing::Test { 39 public: 40 static constexpr size_t NUM_MIN = 1; 41 static constexpr size_t NUM_MAX = 2; 42 static constexpr uint32_t USER_ID1 = 101; 43 static constexpr uint32_t USER_ID2 = 100; 44 static constexpr uint32_t TEST_CURRENT_VERSION = 0x03000002; SetUpTestCase()45 static void SetUpTestCase() 46 { 47 std::shared_ptr<ExecutorPool> executors = std::make_shared<ExecutorPool>(NUM_MAX, NUM_MIN); 48 Bootstrap::GetInstance().LoadDirectory(); 49 Bootstrap::GetInstance().LoadCheckers(); 50 KvStoreMetaManager::GetInstance().BindExecutor(executors); 51 KvStoreMetaManager::GetInstance().InitMetaParameter(); 52 KvStoreMetaManager::GetInstance().InitMetaListener(); 53 } TearDownTestCase(void)54 static void TearDownTestCase(void) {}; SetUp()55 void SetUp() {}; TearDown()56 void TearDown() {}; 57 }; 58 59 /** 60 * @tc.name: AppIDMetaData 61 * @tc.desc: 62 * @tc.type: FUNC 63 * @tc.require: 64 * @tc.author: SQL 65 */ 66 HWTEST_F(ServiceMetaDataTest, AppIDMetaData, TestSize.Level1) 67 { 68 AppIDMetaData appIdMetaData("appid", "ohos.test.demo"); 69 AppIDMetaData appIdMeta; 70 71 std::string key = appIdMetaData.GetKey(); 72 EXPECT_EQ(key, "appid"); 73 auto result = MetaDataManager::GetInstance().SaveMeta(key, appIdMetaData, true); 74 EXPECT_TRUE(result); 75 result = MetaDataManager::GetInstance().LoadMeta(key, appIdMeta, true); 76 EXPECT_TRUE(result); 77 EXPECT_EQ(appIdMetaData.appId, appIdMeta.appId); 78 EXPECT_EQ(appIdMetaData.bundleName, appIdMeta.bundleName); 79 EXPECT_EQ(appIdMetaData.GetKey(), appIdMeta.GetKey()); 80 result = MetaDataManager::GetInstance().DelMeta(key, true); 81 EXPECT_TRUE(result); 82 83 result = MetaDataManager::GetInstance().SaveMeta(key, appIdMetaData); 84 EXPECT_TRUE(result); 85 result = MetaDataManager::GetInstance().LoadMeta(key, appIdMeta); 86 EXPECT_TRUE(result); 87 EXPECT_EQ(appIdMetaData.appId, appIdMeta.appId); 88 EXPECT_EQ(appIdMetaData.bundleName, appIdMeta.bundleName); 89 EXPECT_EQ(appIdMetaData.GetKey(), appIdMeta.GetKey()); 90 result = MetaDataManager::GetInstance().DelMeta(key); 91 EXPECT_TRUE(result); 92 } 93 94 /** 95 * @tc.name: corruptedMeta 96 * @tc.desc: 97 * @tc.type: FUNC 98 * @tc.require: 99 * @tc.author: SQL 100 */ 101 HWTEST_F(ServiceMetaDataTest, corruptedMeta, TestSize.Level1) 102 { 103 CorruptedMetaData corruptedMeta("appid", "ohos.test.demo", "test_store"); 104 CorruptedMetaData corruptedMetaData; 105 corruptedMeta.isCorrupted = true; 106 std::string key = corruptedMeta.GetKey(); 107 EXPECT_EQ(key, "CorruptedMetaData###appid###ohos.test.demo###test_store"); 108 109 auto result = MetaDataManager::GetInstance().SaveMeta(key, corruptedMeta, true); 110 EXPECT_TRUE(result); 111 result = MetaDataManager::GetInstance().LoadMeta(key, corruptedMetaData, true); 112 EXPECT_TRUE(result); 113 EXPECT_EQ(corruptedMeta.appId, corruptedMetaData.appId); 114 EXPECT_EQ(corruptedMeta.bundleName, corruptedMetaData.bundleName); 115 EXPECT_EQ(corruptedMeta.storeId, corruptedMetaData.storeId); 116 EXPECT_EQ(corruptedMeta.GetKey(), corruptedMetaData.GetKey()); 117 result = MetaDataManager::GetInstance().DelMeta(key, true); 118 EXPECT_TRUE(result); 119 120 result = MetaDataManager::GetInstance().SaveMeta(key, corruptedMeta); 121 EXPECT_TRUE(result); 122 result = MetaDataManager::GetInstance().LoadMeta(key, corruptedMetaData); 123 EXPECT_TRUE(result); 124 EXPECT_EQ(corruptedMeta.appId, corruptedMetaData.appId); 125 EXPECT_EQ(corruptedMeta.bundleName, corruptedMetaData.bundleName); 126 EXPECT_EQ(corruptedMeta.storeId, corruptedMetaData.storeId); 127 EXPECT_EQ(corruptedMeta.GetKey(), corruptedMetaData.GetKey()); 128 result = MetaDataManager::GetInstance().DelMeta(key); 129 EXPECT_TRUE(result); 130 } 131 132 /** 133 * @tc.name: SecretKeyMetaData 134 * @tc.desc: 135 * @tc.type: FUNC 136 * @tc.require: 137 * @tc.author: SQL 138 */ 139 HWTEST_F(ServiceMetaDataTest, SecretKeyMetaData001, TestSize.Level1) 140 { 141 SecretKeyMetaData secretKeyMeta; 142 SecretKeyMetaData secretKeyMetaData; 143 secretKeyMeta.storeType = 1; 144 std::initializer_list<std::string> fields = {"time", "skey"}; 145 146 std::string key = secretKeyMeta.GetKey(fields); 147 EXPECT_EQ(key, "SecretKey###time###skey###SINGLE_KEY"); 148 std::string backupkey = secretKeyMeta.GetBackupKey(fields); 149 EXPECT_EQ(backupkey, "BackupSecretKey###time###skey###"); 150 151 auto result = MetaDataManager::GetInstance().SaveMeta(key, secretKeyMeta, true); 152 EXPECT_TRUE(result); 153 result = MetaDataManager::GetInstance().LoadMeta(key, secretKeyMetaData, true); 154 EXPECT_TRUE(result); 155 EXPECT_EQ(secretKeyMeta.GetKey(fields), secretKeyMetaData.GetKey(fields)); 156 EXPECT_EQ(secretKeyMeta.GetBackupKey(fields), secretKeyMetaData.GetBackupKey(fields)); 157 158 result = MetaDataManager::GetInstance().DelMeta(key, true); 159 EXPECT_TRUE(result); 160 161 result = MetaDataManager::GetInstance().SaveMeta(key, secretKeyMeta); 162 EXPECT_TRUE(result); 163 result = MetaDataManager::GetInstance().LoadMeta(key, secretKeyMetaData); 164 EXPECT_TRUE(result); 165 EXPECT_EQ(secretKeyMeta.GetKey(fields), secretKeyMetaData.GetKey(fields)); 166 EXPECT_EQ(secretKeyMeta.GetBackupKey(fields), secretKeyMetaData.GetBackupKey(fields)); 167 168 result = MetaDataManager::GetInstance().DelMeta(key); 169 EXPECT_TRUE(result); 170 } 171 172 /** 173 * @tc.name: SecretKeyMetaData 174 * @tc.desc: 175 * @tc.type: FUNC 176 * @tc.require: 177 * @tc.author: SQL 178 */ 179 HWTEST_F(ServiceMetaDataTest, SecretKeyMetaData002, TestSize.Level1) 180 { 181 SecretKeyMetaData secretKeyMeta; 182 SecretKeyMetaData secretKeyMetaData; 183 secretKeyMeta.storeType = 1; 184 std::initializer_list<std::string> fields = {"time", "skey"}; 185 186 std::string prefix = secretKeyMeta.GetPrefix(fields); 187 EXPECT_EQ(prefix, "SecretKey###time###skey###"); 188 std::string backupprefix = secretKeyMeta.GetBackupPrefix(fields); 189 EXPECT_EQ(backupprefix, "BackupSecretKey###time###skey###"); 190 191 auto result = MetaDataManager::GetInstance().SaveMeta(prefix, secretKeyMeta, true); 192 EXPECT_TRUE(result); 193 result = MetaDataManager::GetInstance().LoadMeta(prefix, secretKeyMetaData, true); 194 EXPECT_TRUE(result); 195 EXPECT_EQ(secretKeyMeta.GetPrefix(fields), secretKeyMetaData.GetPrefix(fields)); 196 EXPECT_EQ(secretKeyMeta.GetBackupPrefix(fields), secretKeyMetaData.GetBackupPrefix(fields)); 197 198 result = MetaDataManager::GetInstance().DelMeta(prefix, true); 199 EXPECT_TRUE(result); 200 201 result = MetaDataManager::GetInstance().SaveMeta(prefix, secretKeyMeta); 202 EXPECT_TRUE(result); 203 result = MetaDataManager::GetInstance().LoadMeta(prefix, secretKeyMetaData); 204 EXPECT_TRUE(result); 205 EXPECT_EQ(secretKeyMeta.GetPrefix(fields), secretKeyMetaData.GetPrefix(fields)); 206 EXPECT_EQ(secretKeyMeta.GetBackupPrefix(fields), secretKeyMetaData.GetBackupPrefix(fields)); 207 208 result = MetaDataManager::GetInstance().DelMeta(prefix); 209 EXPECT_TRUE(result); 210 } 211 212 /** 213 * @tc.name: StoreMetaData 214 * @tc.desc: 215 * @tc.type: FUNC 216 * @tc.require: 217 * @tc.author: SQL 218 */ 219 HWTEST_F(ServiceMetaDataTest, StoreMetaData001, TestSize.Level1) 220 { 221 StoreMetaData storeMetaData("100", "appid", "test_store"); 222 StoreMetaData storeMeta; 223 224 std::string key = storeMetaData.GetKey(); 225 EXPECT_EQ(key, "KvStoreMetaData######100###default######test_store"); 226 std::string keylocal = storeMetaData.GetKeyLocal(); 227 EXPECT_EQ(keylocal, "KvStoreMetaDataLocal######100###default######test_store"); 228 std::initializer_list<std::string> fields = {"100", "appid", "test_store"}; 229 std::string keyfields = storeMetaData.GetKey(fields); 230 EXPECT_EQ(keyfields, "KvStoreMetaData###100###appid###test_store"); 231 232 auto result = MetaDataManager::GetInstance().SaveMeta(key, storeMetaData, true); 233 EXPECT_TRUE(result); 234 result = MetaDataManager::GetInstance().LoadMeta(key, storeMeta, true); 235 EXPECT_TRUE(result); 236 EXPECT_EQ(storeMetaData.GetKey(), storeMeta.GetKey()); 237 EXPECT_EQ(storeMetaData.GetKeyLocal(), storeMeta.GetKeyLocal()); 238 EXPECT_EQ(storeMetaData.GetKey(fields), storeMeta.GetKey(fields)); 239 240 result = MetaDataManager::GetInstance().DelMeta(key, true); 241 EXPECT_TRUE(result); 242 243 result = MetaDataManager::GetInstance().SaveMeta(key, storeMetaData); 244 EXPECT_TRUE(result); 245 result = MetaDataManager::GetInstance().LoadMeta(key, storeMeta); 246 EXPECT_TRUE(result); 247 EXPECT_EQ(storeMetaData.GetKey(), storeMeta.GetKey()); 248 EXPECT_EQ(storeMetaData.GetKeyLocal(), storeMeta.GetKeyLocal()); 249 EXPECT_EQ(storeMetaData.GetKey(fields), storeMeta.GetKey(fields)); 250 251 result = MetaDataManager::GetInstance().DelMeta(key); 252 EXPECT_TRUE(result); 253 } 254 255 /** 256 * @tc.name: StoreMetaData 257 * @tc.desc: 258 * @tc.type: FUNC 259 * @tc.require: 260 * @tc.author: SQL 261 */ 262 HWTEST_F(ServiceMetaDataTest, StoreMetaData002, TestSize.Level1) 263 { 264 StoreMetaData storeMetaData("100", "appid", "test_store"); 265 StoreMetaData storeMeta; 266 267 std::string secretkey = storeMetaData.GetSecretKey(); 268 EXPECT_EQ(secretkey, "SecretKey###100###default######test_store###0###SINGLE_KEY"); 269 std::string backupsecretkey = storeMetaData.GetBackupSecretKey(); 270 EXPECT_EQ(backupsecretkey, "BackupSecretKey###100###default######test_store###0###"); 271 272 auto result = MetaDataManager::GetInstance().SaveMeta(secretkey, storeMetaData, true); 273 EXPECT_TRUE(result); 274 result = MetaDataManager::GetInstance().LoadMeta(secretkey, storeMeta, true); 275 EXPECT_TRUE(result); 276 EXPECT_EQ(storeMetaData.GetSecretKey(), storeMeta.GetSecretKey()); 277 EXPECT_EQ(storeMetaData.GetBackupSecretKey(), storeMeta.GetBackupSecretKey()); 278 279 result = MetaDataManager::GetInstance().DelMeta(secretkey, true); 280 EXPECT_TRUE(result); 281 282 result = MetaDataManager::GetInstance().SaveMeta(secretkey, storeMetaData); 283 EXPECT_TRUE(result); 284 result = MetaDataManager::GetInstance().LoadMeta(secretkey, storeMeta); 285 EXPECT_TRUE(result); 286 EXPECT_EQ(storeMetaData.GetSecretKey(), storeMeta.GetSecretKey()); 287 EXPECT_EQ(storeMetaData.GetBackupSecretKey(), storeMeta.GetBackupSecretKey()); 288 289 result = MetaDataManager::GetInstance().DelMeta(secretkey); 290 EXPECT_TRUE(result); 291 } 292 293 /** 294 * @tc.name: StoreMetaData 295 * @tc.desc: 296 * @tc.type: FUNC 297 * @tc.require: 298 * @tc.author: SQL 299 */ 300 HWTEST_F(ServiceMetaDataTest, StoreMetaData003, TestSize.Level1) 301 { 302 StoreMetaData storeMetaData("100", "appid", "test_store"); 303 StoreMetaData storeMeta; 304 305 auto storealias = storeMetaData.GetStoreAlias(); 306 EXPECT_EQ(storealias, "tes***ore"); 307 std::string strategykey = storeMetaData.GetStrategyKey(); 308 EXPECT_EQ(strategykey, "StrategyMetaData######100###default######test_store"); 309 std::initializer_list<std::string> fields = {"100", "appid", "test_store"}; 310 std::string prefix = storeMetaData.GetPrefix(fields); 311 EXPECT_EQ(prefix, "KvStoreMetaData###100###appid###test_store###"); 312 313 auto result = MetaDataManager::GetInstance().SaveMeta(strategykey, storeMetaData, true); 314 EXPECT_TRUE(result); 315 result = MetaDataManager::GetInstance().LoadMeta(strategykey, storeMeta, true); 316 EXPECT_TRUE(result); 317 EXPECT_EQ(storeMetaData.GetStrategyKey(), storeMeta.GetStrategyKey()); 318 EXPECT_EQ(storeMetaData.GetStoreAlias(), storeMeta.GetStoreAlias()); 319 EXPECT_EQ(storeMetaData.GetPrefix(fields), storeMeta.GetPrefix(fields)); 320 321 result = MetaDataManager::GetInstance().DelMeta(strategykey, true); 322 EXPECT_TRUE(result); 323 324 result = MetaDataManager::GetInstance().SaveMeta(strategykey, storeMetaData); 325 EXPECT_TRUE(result); 326 result = MetaDataManager::GetInstance().LoadMeta(strategykey, storeMeta); 327 EXPECT_TRUE(result); 328 EXPECT_EQ(storeMetaData.GetStrategyKey(), storeMeta.GetStrategyKey()); 329 EXPECT_EQ(storeMetaData.GetStoreAlias(), storeMeta.GetStoreAlias()); 330 EXPECT_EQ(storeMetaData.GetPrefix(fields), storeMeta.GetPrefix(fields)); 331 332 result = MetaDataManager::GetInstance().DelMeta(strategykey); 333 EXPECT_TRUE(result); 334 } 335 336 /** 337 * @tc.name: StoreMetaData 338 * @tc.desc: 339 * @tc.type: FUNC 340 * @tc.require: 341 * @tc.author: SQL 342 */ 343 HWTEST_F(ServiceMetaDataTest, StoreMetaData004, TestSize.Level1) 344 { 345 StoreMetaData storeMetaData("100", "appid", "test_store"); 346 storeMetaData.version = TEST_CURRENT_VERSION; 347 storeMetaData.instanceId = 1; 348 StoreMetaData storeMeta; 349 350 std::string key = storeMetaData.GetKey(); 351 EXPECT_EQ(key, "KvStoreMetaData######100###default######test_store###1"); 352 std::string keylocal = storeMetaData.GetKeyLocal(); 353 EXPECT_EQ(keylocal, "KvStoreMetaDataLocal######100###default######test_store###1"); 354 355 auto result = MetaDataManager::GetInstance().SaveMeta(key, storeMetaData, true); 356 EXPECT_TRUE(result); 357 result = MetaDataManager::GetInstance().LoadMeta(key, storeMeta, true); 358 EXPECT_TRUE(result); 359 EXPECT_EQ(storeMetaData.GetKey(), storeMeta.GetKey()); 360 EXPECT_EQ(storeMetaData.GetKeyLocal(), storeMeta.GetKeyLocal()); 361 362 result = MetaDataManager::GetInstance().DelMeta(key, true); 363 EXPECT_TRUE(result); 364 365 result = MetaDataManager::GetInstance().SaveMeta(key, storeMetaData); 366 EXPECT_TRUE(result); 367 result = MetaDataManager::GetInstance().LoadMeta(key, storeMeta); 368 EXPECT_TRUE(result); 369 EXPECT_EQ(storeMetaData.GetKey(), storeMeta.GetKey()); 370 EXPECT_EQ(storeMetaData.GetKeyLocal(), storeMeta.GetKeyLocal()); 371 372 result = MetaDataManager::GetInstance().DelMeta(key); 373 EXPECT_TRUE(result); 374 } 375 376 /** 377 * @tc.name: StoreMetaData 378 * @tc.desc: 379 * @tc.type: FUNC 380 * @tc.require: 381 * @tc.author: SQL 382 */ 383 HWTEST_F(ServiceMetaDataTest, StoreMetaData005, TestSize.Level1) 384 { 385 StoreMetaData storeMetaData("100", "appid", "test_store"); 386 storeMetaData.version = TEST_CURRENT_VERSION; 387 storeMetaData.instanceId = 1; 388 StoreMetaData storeMeta; 389 390 std::string secretkey = storeMetaData.GetSecretKey(); 391 EXPECT_EQ(secretkey, "SecretKey###100###default######test_store###SINGLE_KEY"); 392 std::string backupsecretkey = storeMetaData.GetBackupSecretKey(); 393 EXPECT_EQ(backupsecretkey, "BackupSecretKey###100###default######test_store###"); 394 std::string strategykey = storeMetaData.GetStrategyKey(); 395 EXPECT_EQ(strategykey, "StrategyMetaData######100###default######test_store###1"); 396 397 auto result = MetaDataManager::GetInstance().SaveMeta(secretkey, storeMetaData, true); 398 EXPECT_TRUE(result); 399 result = MetaDataManager::GetInstance().LoadMeta(secretkey, storeMeta, true); 400 EXPECT_TRUE(result); 401 EXPECT_EQ(storeMetaData.GetSecretKey(), storeMeta.GetSecretKey()); 402 EXPECT_EQ(storeMetaData.GetBackupSecretKey(), storeMeta.GetBackupSecretKey()); 403 EXPECT_EQ(storeMetaData.GetStrategyKey(), storeMeta.GetStrategyKey()); 404 405 result = MetaDataManager::GetInstance().DelMeta(secretkey, true); 406 EXPECT_TRUE(result); 407 408 result = MetaDataManager::GetInstance().SaveMeta(secretkey, storeMetaData); 409 EXPECT_TRUE(result); 410 result = MetaDataManager::GetInstance().LoadMeta(secretkey, storeMeta); 411 EXPECT_TRUE(result); 412 EXPECT_EQ(storeMetaData.GetSecretKey(), storeMeta.GetSecretKey()); 413 EXPECT_EQ(storeMetaData.GetBackupSecretKey(), storeMeta.GetBackupSecretKey()); 414 EXPECT_EQ(storeMetaData.GetStrategyKey(), storeMeta.GetStrategyKey()); 415 416 result = MetaDataManager::GetInstance().DelMeta(secretkey); 417 EXPECT_TRUE(result); 418 } 419 420 /** 421 * @tc.name: StoreMetaData 422 * @tc.desc: 423 * @tc.type: FUNC 424 * @tc.require: 425 * @tc.author: SQL 426 */ 427 HWTEST_F(ServiceMetaDataTest, StoreMetaData006, TestSize.Level1) 428 { 429 StoreMetaData storemetaData1("100", "appid", "test_store"); 430 StoreMetaData storemetaData2("100", "appid", "test_store"); 431 StoreMetaData storemetaData3("10", "appid1", "storeid"); 432 EXPECT_TRUE(storemetaData1 == storemetaData2); 433 EXPECT_FALSE(storemetaData1 == storemetaData3); 434 435 storemetaData1.isAutoSync = true; 436 EXPECT_FALSE(storemetaData1 == storemetaData2); 437 storemetaData2.isAutoSync = true; 438 EXPECT_TRUE(storemetaData1 == storemetaData2); 439 440 storemetaData1.isBackup = true; 441 EXPECT_FALSE(storemetaData1 == storemetaData2); 442 storemetaData2.isBackup = true; 443 EXPECT_TRUE(storemetaData1 == storemetaData2); 444 445 storemetaData1.isDirty = true; 446 EXPECT_FALSE(storemetaData1 == storemetaData2); 447 storemetaData2.isDirty = true; 448 EXPECT_TRUE(storemetaData1 == storemetaData2); 449 450 storemetaData1.isEncrypt = true; 451 EXPECT_FALSE(storemetaData1 == storemetaData2); 452 storemetaData2.isEncrypt = true; 453 EXPECT_TRUE(storemetaData1 == storemetaData2); 454 455 storemetaData1.isSearchable = true; 456 EXPECT_FALSE(storemetaData1 == storemetaData2); 457 storemetaData2.isSearchable = true; 458 EXPECT_TRUE(storemetaData1 == storemetaData2); 459 460 storemetaData1.isNeedCompress = true; 461 EXPECT_FALSE(storemetaData1 == storemetaData2); 462 storemetaData2.isNeedCompress = true; 463 EXPECT_TRUE(storemetaData1 == storemetaData2); 464 465 storemetaData1.enableCloud = true; 466 EXPECT_FALSE(storemetaData1 == storemetaData2); 467 storemetaData2.enableCloud = true; 468 EXPECT_TRUE(storemetaData1 == storemetaData2); 469 470 storemetaData1.cloudAutoSync = true; 471 EXPECT_FALSE(storemetaData1 == storemetaData2); 472 storemetaData2.cloudAutoSync = true; 473 EXPECT_TRUE(storemetaData1 == storemetaData2); 474 } 475 476 /** 477 * @tc.name: StoreMetaData 478 * @tc.desc: 479 * @tc.type: FUNC 480 * @tc.require: 481 * @tc.author: SQL 482 */ 483 HWTEST_F(ServiceMetaDataTest, StoreMetaData007, TestSize.Level1) 484 { 485 StoreMetaData storemetaData1("100", "appid", "test_store"); 486 StoreMetaData storemetaData2("100", "appid", "test_store"); 487 StoreMetaData storemetaData3("10", "appid1", "storeid"); 488 EXPECT_TRUE(storemetaData1 != storemetaData3); 489 EXPECT_FALSE(storemetaData1 != storemetaData2); 490 491 storemetaData1.isAutoSync = true; 492 EXPECT_TRUE(storemetaData1 != storemetaData2); 493 storemetaData2.isAutoSync = true; 494 EXPECT_FALSE(storemetaData1 != storemetaData2); 495 496 storemetaData1.isBackup = true; 497 EXPECT_TRUE(storemetaData1 != storemetaData2); 498 storemetaData2.isBackup = true; 499 EXPECT_FALSE(storemetaData1 != storemetaData2); 500 501 storemetaData1.isDirty = true; 502 EXPECT_TRUE(storemetaData1 != storemetaData2); 503 storemetaData2.isDirty = true; 504 EXPECT_FALSE(storemetaData1 != storemetaData2); 505 506 storemetaData1.isEncrypt = true; 507 EXPECT_TRUE(storemetaData1 != storemetaData2); 508 storemetaData2.isEncrypt = true; 509 EXPECT_FALSE(storemetaData1 != storemetaData2); 510 511 storemetaData1.isSearchable = true; 512 EXPECT_TRUE(storemetaData1 != storemetaData2); 513 storemetaData2.isSearchable = true; 514 EXPECT_FALSE(storemetaData1 != storemetaData2); 515 516 storemetaData1.isNeedCompress = true; 517 EXPECT_TRUE(storemetaData1 != storemetaData2); 518 storemetaData2.isNeedCompress = true; 519 EXPECT_FALSE(storemetaData1 != storemetaData2); 520 521 storemetaData1.enableCloud = true; 522 EXPECT_TRUE(storemetaData1 != storemetaData2); 523 storemetaData2.enableCloud = true; 524 EXPECT_FALSE(storemetaData1 != storemetaData2); 525 526 storemetaData1.cloudAutoSync = true; 527 EXPECT_TRUE(storemetaData1 != storemetaData2); 528 storemetaData2.cloudAutoSync = true; 529 EXPECT_FALSE(storemetaData1 != storemetaData2); 530 } 531 532 /** 533 * @tc.name: GetStoreInfo 534 * @tc.desc: test StoreMetaData GetStoreInfo function 535 * @tc.type: FUNC 536 * @tc.require: 537 * @tc.author: SQL 538 */ 539 HWTEST_F(ServiceMetaDataTest, GetStoreInfo, TestSize.Level1) 540 { 541 StoreMetaData storeMetaData("100", "appid", "test_store"); 542 storeMetaData.version = TEST_CURRENT_VERSION; 543 storeMetaData.instanceId = 1; 544 545 auto result = storeMetaData.GetStoreInfo(); 546 EXPECT_EQ(result.instanceId, storeMetaData.instanceId); 547 EXPECT_EQ(result.bundleName, storeMetaData.bundleName); 548 EXPECT_EQ(result.storeName, storeMetaData.storeId); 549 } 550 551 /** 552 * @tc.name: StrategyMeta001 553 * @tc.desc: 554 * @tc.type: FUNC 555 * @tc.require: 556 * @tc.author: SQL 557 */ 558 HWTEST_F(ServiceMetaDataTest, StrategyMeta001, TestSize.Level1) 559 { 560 auto deviceId = "deviceId"; 561 StrategyMeta strategyMeta(deviceId, "100", "ohos.test.demo", "test_store"); 562 std::vector<std::string> local = {"local1"}; 563 std::vector<std::string> remote = {"remote1"}; 564 strategyMeta.capabilityRange.localLabel = local; 565 strategyMeta.capabilityRange.remoteLabel = remote; 566 strategyMeta.capabilityEnabled = true; 567 auto result = strategyMeta.IsEffect(); 568 EXPECT_TRUE(result); 569 StrategyMeta strategyMetaData(deviceId, "200", "ohos.test.test", "test_stores"); 570 571 std::string key = strategyMeta.GetKey(); 572 EXPECT_EQ(key, "StrategyMetaData###deviceId###100###default###ohos.test.demo###test_store"); 573 std::initializer_list<std::string> fields = { deviceId, "100", "default", "ohos.test.demo", "test_store" }; 574 std::string prefix = strategyMeta.GetPrefix(fields); 575 EXPECT_EQ(prefix, "StrategyMetaData###deviceId###100###default###ohos.test.demo###test_store"); 576 577 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta, true); 578 EXPECT_TRUE(result); 579 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData, true); 580 EXPECT_TRUE(result); 581 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 582 EXPECT_EQ(strategyMeta.GetPrefix(fields), strategyMetaData.GetPrefix(fields)); 583 584 result = MetaDataManager::GetInstance().DelMeta(key, true); 585 EXPECT_TRUE(result); 586 587 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta); 588 EXPECT_TRUE(result); 589 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData); 590 EXPECT_TRUE(result); 591 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 592 EXPECT_EQ(strategyMeta.GetPrefix(fields), strategyMetaData.GetPrefix(fields)); 593 594 result = MetaDataManager::GetInstance().DelMeta(key); 595 EXPECT_TRUE(result); 596 } 597 598 /** 599 * @tc.name: StrategyMeta 600 * @tc.desc: 601 * @tc.type: FUNC 602 * @tc.require: 603 * @tc.author: SQL 604 */ 605 HWTEST_F(ServiceMetaDataTest, StrategyMeta002, TestSize.Level1) 606 { 607 auto deviceId = "deviceId"; 608 StrategyMeta strategyMeta(deviceId, "100", "ohos.test.demo", "test_store"); 609 std::vector<std::string> local = {"local1"}; 610 std::vector<std::string> remote = {"remote1"}; 611 strategyMeta.capabilityRange.localLabel = local; 612 strategyMeta.capabilityRange.remoteLabel = remote; 613 strategyMeta.capabilityEnabled = true; 614 auto result = strategyMeta.IsEffect(); 615 EXPECT_TRUE(result); 616 strategyMeta.instanceId = 1; 617 StrategyMeta strategyMetaData(deviceId, "200", "ohos.test.test", "test_stores"); 618 619 std::string key = strategyMeta.GetKey(); 620 EXPECT_EQ(key, "StrategyMetaData###deviceId###100###default###ohos.test.demo###test_store###1"); 621 622 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta, true); 623 EXPECT_TRUE(result); 624 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData, true); 625 EXPECT_TRUE(result); 626 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 627 result = MetaDataManager::GetInstance().DelMeta(key, true); 628 EXPECT_TRUE(result); 629 630 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta); 631 EXPECT_TRUE(result); 632 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData); 633 EXPECT_TRUE(result); 634 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 635 result = MetaDataManager::GetInstance().DelMeta(key); 636 EXPECT_TRUE(result); 637 } 638 639 /** 640 * @tc.name: MetaData 641 * @tc.desc: 642 * @tc.type: FUNC 643 * @tc.require: 644 * @tc.author: SQL 645 */ 646 HWTEST_F(ServiceMetaDataTest, MetaData, TestSize.Level1) 647 { 648 StoreMetaData storeMetaData("100", "appid", "test_store"); 649 SecretKeyMetaData secretKeyMetaData; 650 MetaData metaData; 651 MetaData metaDataLoad; 652 metaData.storeMetaData = storeMetaData; 653 metaData.secretKeyMetaData = secretKeyMetaData; 654 metaData.storeType = 1; 655 std::initializer_list<std::string> fields = {"time", "skey"}; 656 std::string key = metaData.storeMetaData.GetKey(); 657 std::string secretkey = metaData.secretKeyMetaData.GetKey(fields); 658 659 auto result = MetaDataManager::GetInstance().SaveMeta(key, metaData, true); 660 EXPECT_TRUE(result); 661 result = MetaDataManager::GetInstance().LoadMeta(key, metaDataLoad, true); 662 EXPECT_TRUE(result); 663 EXPECT_EQ(key, metaDataLoad.storeMetaData.GetKey()); 664 EXPECT_EQ(secretkey, metaDataLoad.secretKeyMetaData.GetKey(fields)); 665 result = MetaDataManager::GetInstance().DelMeta(key, true); 666 EXPECT_TRUE(result); 667 668 result = MetaDataManager::GetInstance().SaveMeta(key, metaData); 669 EXPECT_TRUE(result); 670 result = MetaDataManager::GetInstance().LoadMeta(key, metaDataLoad); 671 EXPECT_TRUE(result); 672 EXPECT_EQ(key, metaDataLoad.storeMetaData.GetKey()); 673 EXPECT_EQ(secretkey, metaDataLoad.secretKeyMetaData.GetKey(fields)); 674 result = MetaDataManager::GetInstance().DelMeta(key); 675 EXPECT_TRUE(result); 676 } 677 678 /** 679 * @tc.name: CapMetaData 680 * @tc.desc: test CapMetaData function 681 * @tc.type: FUNC 682 * @tc.require: 683 * @tc.author: SQL 684 */ 685 HWTEST_F(ServiceMetaDataTest, CapMetaData, TestSize.Level1) 686 { 687 CapMetaData capMetaData; 688 capMetaData.version = CapMetaData::CURRENT_VERSION; 689 Serializable::json node1; 690 capMetaData.Marshal(node1); 691 EXPECT_EQ(node1["version"], CapMetaData::CURRENT_VERSION); 692 693 CapMetaData capMeta; 694 capMeta.Unmarshal(node1); 695 EXPECT_EQ(capMeta.version, CapMetaData::CURRENT_VERSION); 696 697 CapMetaRow capMetaRow; 698 auto key = capMetaRow.GetKeyFor("PEER_DEVICE_ID"); 699 std::string str = "CapabilityMeta###PEER_DEVICE_ID"; 700 std::vector<uint8_t> testKey = { str.begin(), str.end() }; 701 EXPECT_EQ(key, testKey); 702 } 703 704 /** 705 * @tc.name: UserMetaData 706 * @tc.desc: test UserMetaData function 707 * @tc.type: FUNC 708 * @tc.require: 709 * @tc.author: SQL 710 */ 711 HWTEST_F(ServiceMetaDataTest, UserMetaData, TestSize.Level1) 712 { 713 UserMetaData userMetaData; 714 userMetaData.deviceId = "PEER_DEVICE_ID"; 715 716 UserStatus userStatus; 717 userStatus.isActive = true; 718 userStatus.id = USER_ID1; 719 userMetaData.users = { userStatus }; 720 userStatus.id = USER_ID2; 721 userMetaData.users.emplace_back(userStatus); 722 723 Serializable::json node1; 724 userMetaData.Marshal(node1); 725 EXPECT_EQ(node1["deviceId"], "PEER_DEVICE_ID"); 726 727 UserMetaData userMeta; 728 userMeta.Unmarshal(node1); 729 EXPECT_EQ(userMeta.deviceId, "PEER_DEVICE_ID"); 730 731 Serializable::json node2; 732 userStatus.Marshal(node2); 733 EXPECT_EQ(node2["isActive"], true); 734 EXPECT_EQ(node2["id"], USER_ID2); 735 736 UserStatus userUnmarshal; 737 userUnmarshal.Unmarshal(node2); 738 EXPECT_EQ(userUnmarshal.isActive, true); 739 EXPECT_EQ(userUnmarshal.id, USER_ID2); 740 741 UserMetaRow userMetaRow; 742 auto key = userMetaRow.GetKeyFor(userMetaData.deviceId); 743 EXPECT_EQ(key, "UserMeta###PEER_DEVICE_ID"); 744 } 745 746 /** 747 * @tc.name: CapabilityRange 748 * @tc.desc: test CapabilityRange function 749 * @tc.type: FUNC 750 * @tc.require: 751 * @tc.author: SQL 752 */ 753 HWTEST_F(ServiceMetaDataTest, CapabilityRange, TestSize.Level1) 754 { 755 CapabilityRange capabilityRange; 756 std::vector<std::string> local = {"local1"}; 757 std::vector<std::string> remote = {"remote1"}; 758 capabilityRange.localLabel = local; 759 capabilityRange.remoteLabel = remote; 760 Serializable::json node1; 761 capabilityRange.Marshal(node1); 762 EXPECT_EQ(node1["localLabel"], local); 763 EXPECT_EQ(node1["remoteLabel"], remote); 764 765 CapabilityRange capRange; 766 capRange.Unmarshal(node1); 767 EXPECT_EQ(capRange.localLabel, local); 768 EXPECT_EQ(capRange.remoteLabel, remote); 769 } 770 771 /** 772 * @tc.name: MatrixMetaData 773 * @tc.desc: test MatrixMetaData operator!= function 774 * @tc.type: FUNC 775 * @tc.require: 776 * @tc.author: nhj 777 */ 778 HWTEST_F(ServiceMetaDataTest, MatrixMetaData, TestSize.Level1) 779 { 780 MatrixMetaData matrixMetaData1; 781 matrixMetaData1.version = 0; 782 matrixMetaData1.deviceId = "PEER_DEVICE_ID"; 783 784 MatrixMetaData matrixMetaData2; 785 matrixMetaData2.version = 0; 786 matrixMetaData2.deviceId = "PEER_DEVICE_ID"; 787 788 MatrixMetaData matrixMetaData3; 789 matrixMetaData3.version = 1; 790 matrixMetaData3.deviceId = "DEVICE_ID"; 791 EXPECT_TRUE(matrixMetaData1 != matrixMetaData3); 792 EXPECT_FALSE(matrixMetaData1 != matrixMetaData2); 793 794 std::string key = matrixMetaData3.GetConsistentKey(); 795 EXPECT_EQ(key, "MatrixMeta###DEVICE_ID###Consistent"); 796 } 797 } // namespace OHOS::Test