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 "device_manager_adapter.h" 21 #include "kvstore_meta_manager.h" 22 #include "metadata/appid_meta_data.h" 23 #include "metadata/corrupted_meta_data.h" 24 #include "metadata/capability_range.h" 25 #include "metadata/meta_data.h" 26 #include "metadata/meta_data_manager.h" 27 #include "metadata/secret_key_meta_data.h" 28 #include "metadata/store_meta_data.h" 29 #include "metadata/store_meta_data_local.h" 30 #include "metadata/strategy_meta_data.h" 31 32 using namespace testing::ext; 33 using namespace OHOS; 34 using namespace OHOS::DistributedKv; 35 using namespace OHOS::DistributedData; 36 using DmAdapter = OHOS::DistributedData::DeviceManagerAdapter; 37 namespace OHOS::Test { 38 class ServiceMetaDataTest : public testing::Test { 39 public: 40 static constexpr size_t NUM_MIN = 5; 41 static constexpr size_t NUM_MAX = 12; 42 static constexpr uint32_t TEST_CURRENT_VERSION = 0x03000002; SetUpTestCase()43 static void SetUpTestCase() 44 { 45 auto executors = std::make_shared<ExecutorPool>(NUM_MAX, NUM_MIN); 46 Bootstrap::GetInstance().LoadComponents(); 47 Bootstrap::GetInstance().LoadDirectory(); 48 Bootstrap::GetInstance().LoadCheckers(); 49 KvStoreMetaManager::GetInstance().BindExecutor(executors); 50 KvStoreMetaManager::GetInstance().InitMetaParameter(); 51 KvStoreMetaManager::GetInstance().InitMetaListener(); 52 DmAdapter::GetInstance().Init(executors); 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 466 /** 467 * @tc.name: StoreMetaData 468 * @tc.desc: 469 * @tc.type: FUNC 470 * @tc.require: 471 * @tc.author: SQL 472 */ 473 HWTEST_F(ServiceMetaDataTest, StoreMetaData007, TestSize.Level1) 474 { 475 StoreMetaData storemetaData1("100", "appid", "test_store"); 476 StoreMetaData storemetaData2("100", "appid", "test_store"); 477 StoreMetaData storemetaData3("10", "appid1", "storeid"); 478 EXPECT_TRUE(storemetaData1 != storemetaData3); 479 EXPECT_FALSE(storemetaData1 != storemetaData2); 480 481 storemetaData1.isAutoSync = true; 482 EXPECT_TRUE(storemetaData1 != storemetaData2); 483 storemetaData2.isAutoSync = true; 484 EXPECT_FALSE(storemetaData1 != storemetaData2); 485 486 storemetaData1.isBackup = true; 487 EXPECT_TRUE(storemetaData1 != storemetaData2); 488 storemetaData2.isBackup = true; 489 EXPECT_FALSE(storemetaData1 != storemetaData2); 490 491 storemetaData1.isDirty = true; 492 EXPECT_TRUE(storemetaData1 != storemetaData2); 493 storemetaData2.isDirty = true; 494 EXPECT_FALSE(storemetaData1 != storemetaData2); 495 496 storemetaData1.isEncrypt = true; 497 EXPECT_TRUE(storemetaData1 != storemetaData2); 498 storemetaData2.isEncrypt = true; 499 EXPECT_FALSE(storemetaData1 != storemetaData2); 500 501 storemetaData1.isSearchable = true; 502 EXPECT_TRUE(storemetaData1 != storemetaData2); 503 storemetaData2.isSearchable = true; 504 EXPECT_FALSE(storemetaData1 != storemetaData2); 505 506 storemetaData1.isNeedCompress = true; 507 EXPECT_TRUE(storemetaData1 != storemetaData2); 508 storemetaData2.isNeedCompress = true; 509 EXPECT_FALSE(storemetaData1 != storemetaData2); 510 } 511 512 /** 513 * @tc.name: StrategyMeta001 514 * @tc.desc: 515 * @tc.type: FUNC 516 * @tc.require: 517 * @tc.author: SQL 518 */ 519 HWTEST_F(ServiceMetaDataTest, StrategyMeta001, TestSize.Level1) 520 { 521 auto deviceId = DmAdapter::GetInstance().GetLocalDevice().uuid; 522 StrategyMeta strategyMeta(deviceId, "100", "ohos.test.demo", "test_store"); 523 std::vector<std::string> local = {"local1"}; 524 std::vector<std::string> remote = {"remote1"}; 525 strategyMeta.capabilityRange.localLabel = local; 526 strategyMeta.capabilityRange.remoteLabel = remote; 527 strategyMeta.capabilityEnabled = true; 528 auto result = strategyMeta.IsEffect(); 529 EXPECT_TRUE(result); 530 StrategyMeta strategyMetaData(deviceId, "200", "ohos.test.test", "test_stores"); 531 532 std::string key = strategyMeta.GetKey(); 533 EXPECT_EQ(key, "StrategyMetaData######100###default###ohos.test.demo###test_store"); 534 std::initializer_list<std::string> fields = { deviceId, "100", "default", "ohos.test.demo", "test_store" }; 535 std::string prefix = strategyMeta.GetPrefix(fields); 536 EXPECT_EQ(prefix, "StrategyMetaData######100###default###ohos.test.demo###test_store"); 537 538 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta, true); 539 EXPECT_TRUE(result); 540 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData, true); 541 EXPECT_TRUE(result); 542 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 543 EXPECT_EQ(strategyMeta.GetPrefix(fields), strategyMetaData.GetPrefix(fields)); 544 545 result = MetaDataManager::GetInstance().DelMeta(key, true); 546 EXPECT_TRUE(result); 547 548 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta); 549 EXPECT_TRUE(result); 550 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData); 551 EXPECT_TRUE(result); 552 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 553 EXPECT_EQ(strategyMeta.GetPrefix(fields), strategyMetaData.GetPrefix(fields)); 554 555 result = MetaDataManager::GetInstance().DelMeta(key); 556 EXPECT_TRUE(result); 557 } 558 559 /** 560 * @tc.name: StrategyMeta 561 * @tc.desc: 562 * @tc.type: FUNC 563 * @tc.require: 564 * @tc.author: SQL 565 */ 566 HWTEST_F(ServiceMetaDataTest, StrategyMeta002, TestSize.Level1) 567 { 568 auto deviceId = DmAdapter::GetInstance().GetLocalDevice().uuid; 569 StrategyMeta strategyMeta(deviceId, "100", "ohos.test.demo", "test_store"); 570 std::vector<std::string> local = {"local1"}; 571 std::vector<std::string> remote = {"remote1"}; 572 strategyMeta.capabilityRange.localLabel = local; 573 strategyMeta.capabilityRange.remoteLabel = remote; 574 strategyMeta.capabilityEnabled = true; 575 auto result = strategyMeta.IsEffect(); 576 EXPECT_TRUE(result); 577 strategyMeta.instanceId = 1; 578 StrategyMeta strategyMetaData(deviceId, "200", "ohos.test.test", "test_stores"); 579 580 std::string key = strategyMeta.GetKey(); 581 EXPECT_EQ(key, "StrategyMetaData######100###default###ohos.test.demo###test_store###1"); 582 583 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta, true); 584 EXPECT_TRUE(result); 585 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData, true); 586 EXPECT_TRUE(result); 587 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 588 result = MetaDataManager::GetInstance().DelMeta(key, true); 589 EXPECT_TRUE(result); 590 591 result = MetaDataManager::GetInstance().SaveMeta(key, strategyMeta); 592 EXPECT_TRUE(result); 593 result = MetaDataManager::GetInstance().LoadMeta(key, strategyMetaData); 594 EXPECT_TRUE(result); 595 EXPECT_EQ(strategyMeta.GetKey(), strategyMetaData.GetKey()); 596 result = MetaDataManager::GetInstance().DelMeta(key); 597 EXPECT_TRUE(result); 598 } 599 600 /** 601 * @tc.name: MetaData 602 * @tc.desc: 603 * @tc.type: FUNC 604 * @tc.require: 605 * @tc.author: SQL 606 */ 607 HWTEST_F(ServiceMetaDataTest, MetaData, TestSize.Level1) 608 { 609 StoreMetaData storeMetaData("100", "appid", "test_store"); 610 SecretKeyMetaData secretKeyMetaData; 611 MetaData metaData; 612 MetaData metaDataLoad; 613 metaData.storeMetaData = storeMetaData; 614 metaData.secretKeyMetaData = secretKeyMetaData; 615 metaData.storeType = 1; 616 std::initializer_list<std::string> fields = {"time", "skey"}; 617 std::string key = metaData.storeMetaData.GetKey(); 618 std::string secretkey = metaData.secretKeyMetaData.GetKey(fields); 619 620 auto result = MetaDataManager::GetInstance().SaveMeta(key, metaData, true); 621 EXPECT_TRUE(result); 622 result = MetaDataManager::GetInstance().LoadMeta(key, metaDataLoad, true); 623 EXPECT_TRUE(result); 624 EXPECT_EQ(key, metaDataLoad.storeMetaData.GetKey()); 625 EXPECT_EQ(secretkey, metaDataLoad.secretKeyMetaData.GetKey(fields)); 626 result = MetaDataManager::GetInstance().DelMeta(key, true); 627 EXPECT_TRUE(result); 628 629 result = MetaDataManager::GetInstance().SaveMeta(key, metaData); 630 EXPECT_TRUE(result); 631 result = MetaDataManager::GetInstance().LoadMeta(key, metaDataLoad); 632 EXPECT_TRUE(result); 633 EXPECT_EQ(key, metaDataLoad.storeMetaData.GetKey()); 634 EXPECT_EQ(secretkey, metaDataLoad.secretKeyMetaData.GetKey(fields)); 635 result = MetaDataManager::GetInstance().DelMeta(key); 636 EXPECT_TRUE(result); 637 } 638 } // namespace OHOS::Test