• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "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