• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022 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 */
15import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index'
16import factory from '@ohos.data.distributedKVStore'
17import abilityFeatureAbility from '@ohos.ability.featureAbility';
18
19var context = abilityFeatureAbility.getContext();
20var contextApplication = context.getApplicationContext()
21
22const TEST_BUNDLE_NAME = 'com.example.myapplication';
23const TEST_STORE_ID = 'storeId';
24var kvManager = null;
25var kvStore = null;
26const STORE_KEY = 'key_test_string';
27const STORE_VALUE = 'value-test-string';
28
29describe('KVManagerPromiseTest', function () {
30    const config = {
31        bundleName: TEST_BUNDLE_NAME,
32        context: context
33    }
34
35    const options = {
36        createIfMissing: true,
37        encrypt: false,
38        backup: false,
39        autoSync: true,
40        kvStoreType: factory.KVStoreType.SINGLE_VERSION,
41        schema: '',
42        securityLevel: factory.SecurityLevel.S2,
43    }
44
45    beforeAll(async function (done) {
46        console.info('beforeAll');
47        kvManager = factory.createKVManager(config);
48        console.info('beforeAll end');
49        done();
50    })
51
52    afterAll(async function (done) {
53        console.info('afterAll');
54        done();
55    })
56
57    beforeEach(async function (done) {
58        console.info('beforeEach');
59        done();
60    })
61
62    afterEach(async function (done) {
63        console.info('afterEach');
64        await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => {
65            console.info('afterEach closeKVStore success');
66            await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => {
67                console.info('afterEach deleteKVStore success');
68            }).catch((err) => {
69                console.error('afterEach deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
70            });
71        }).catch((err) => {
72            console.error('afterEach closeKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
73        });
74        kvStore = null;
75        done();
76    })
77
78    /**
79     * @tc.name KVManagerGetKVStorePromiseSucTest
80     * @tc.desc Test Js Api KVManager.GetKVStore() successfully
81     * @tc.type: FUNC
82     * @tc.require: issueNumber
83     */
84    it('KVManagerGetKVStorePromiseSucTest', 0, async function (done) {
85        console.info('KVManagerGetKVStorePromiseSucTest');
86        try {
87            await kvManager.getKVStore(TEST_STORE_ID, options).then((store) => {
88                console.info('KVManagerGetKVStorePromiseSucTest getKVStore success');
89                expect(store != undefined && store != null).assertTrue();
90            }).catch((err) => {
91                console.error('KVManagerGetKVStorePromiseSucTest getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
92                expect(null).assertFail();
93            });
94        } catch (e) {
95            console.error('KVManagerGetKVStorePromiseSucTest getKVStore e ' + `, error code is ${e.code}, message is ${e.message}`);
96            expect(null).assertFail();
97        }
98        done();
99    })
100
101    /**
102     * @tc.name KVManagerGetKVStorePromiseParaError1Test
103     * @tc.desc Test Js Api KVManager.GetKVStore() with parameter error
104     * @tc.type: FUNC
105     * @tc.require: issueNumber
106     */
107    it('KVManagerGetKVStorePromiseParaError1Test', 0, async function (done) {
108        console.info('KVManagerGetKVStorePromiseParaError1Test');
109        try {
110            await kvManager.getKVStore(TEST_STORE_ID).then((store) => {
111                console.info('KVManagerGetKVStorePromiseParaError1Test getKVStore success');
112                expect(null).assertFail();
113            }).catch((err) => {
114                console.error('KVManagerGetKVStorePromiseParaError1Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
115                expect(null).assertFail();
116            });
117        } catch (e) {
118            console.error('KVManagerGetKVStorePromiseParaError1Test getKVStore e ' + `, error code is ${e.code}, message is ${e.message}`);
119            expect(e.code == 401).assertTrue();
120        }
121        done();
122    })
123
124    /**
125     * @tc.name KVManagerGetKVStorePromiseParaError2Test
126     * @tc.desc Test Js Api KVManager.GetKVStore()with parameter error
127     * @tc.type: FUNC
128     * @tc.require: issueNumber
129     */
130    it('KVManagerGetKVStorePromiseParaError2Test', 0, async function (done) {
131        console.info('KVManagerGetKVStorePromiseParaError2Test');
132        try {
133            await kvManager.getKVStore(options).then((store) => {
134                console.info('KVManagerGetKVStorePromiseParaError2Test getKVStore success');
135                expect(null).assertFail();
136            }).catch((err) => {
137                console.error('KVManagerGetKVStorePromiseParaError2Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
138                expect(null).assertFail();
139            });
140        } catch (e) {
141            console.error('KVManagerGetKVStorePromiseParaError2Test getKVStore e ' + `, error code is ${e.code}, message is ${e.message}`);
142            expect(e.code == 401).assertTrue();
143        }
144        done();
145    })
146
147    /**
148     * @tc.name KVManagerGetKVStorePromiseAlreadyOpenTest
149     * @tc.desc Test Js Api KVManager.GetKVStore() get an already open kvstore
150     * @tc.type: FUNC
151     * @tc.require: issueNumber
152     */
153    it('KVManagerGetKVStorePromiseAlreadyOpenTest', 0, async function (done) {
154        console.info('KVManagerGetKVStoreCallbackSucTest');
155        try {
156           await kvManager.getKVStore(TEST_STORE_ID, options).then(async (store) => {
157                expect(store != undefined).assertTrue();
158                kvStore = store;
159                const optionsInfo = {
160                    createIfMissing: true,
161                    encrypt: false,
162                    backup: false,
163                    autoSync: true,
164                    kvStoreType: factory.KVStoreType.DEVICE_COLLABORATION,
165                    schema: '',
166                    securityLevel: factory.SecurityLevel.S1,
167                }
168                await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then(() => {
169                    expect(null).assertFail();
170                }).catch((error) => {
171                    console.info("throw exception success");
172                    expect(error.code == 15100002).assertTrue();
173                });
174            }).catch((err) => {
175                expect(null).assertFail();
176            });
177        } catch (e) {
178            expect(null).assertFail();
179        }
180        await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => {
181            await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => {
182                expect(true).assertTrue();
183            }).catch((err) => {
184                console.error('deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
185                expect(null).assertFail();
186            });
187        })
188        done();
189    })
190
191    /**
192     * @tc.name KVManagerGetKVStorePromiseSingleS1Test
193     * @tc.desc Test Js Api KVManager.GetKVStore() single s1
194     * @tc.type: FUNC
195     * @tc.require: issueNumber
196     */
197    it('KVManagerGetKVStorePromiseSingleS1Test', 0, async function (done) {
198        console.info('KVManagerGetKVStorePromiseSingleS1Test');
199        const optionsInfo = {
200            createIfMissing: true,
201            encrypt: false,
202            backup: false,
203            autoSync: true,
204            kvStoreType: factory.KVStoreType.SINGLE_VERSION,
205            schema: '',
206            securityLevel: factory.SecurityLevel.S1,
207        };
208        try {
209            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
210                console.info('KVManagerGetKVStorePromiseSingleS1Test getKVStore success');
211                expect(store != null && store != undefined).assertTrue();
212            }).catch((err) => {
213                console.error('KVManagerGetKVStorePromiseSingleS1Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
214                expect(null).assertFail();
215            });
216        } catch (e) {
217            expect(null).assertFail();
218        }
219        done();
220    })
221
222    /**
223     * @tc.name KVManagerGetKVStorePromiseSingleS2Test
224     * @tc.desc Test Js Api KVManager.GetKVStore() single s2
225     * @tc.type: FUNC
226     * @tc.require: issueNumber
227     */
228    it('KVManagerGetKVStorePromiseSingleS2Test', 0, async function (done) {
229        console.info('KVManagerGetKVStorePromiseSingleS2Test');
230        const optionsInfo = {
231            createIfMissing: true,
232            encrypt: true,
233            backup: false,
234            autoSync: true,
235            kvStoreType: factory.KVStoreType.SINGLE_VERSION,
236            schema: '',
237            securityLevel: factory.SecurityLevel.S2,
238        }
239        try {
240            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
241                console.info('KVManagerGetKVStorePromiseSingleS2Test getKVStore success');
242                expect(store != null && store != undefined).assertTrue();
243            }).catch((err) => {
244                console.error('KVManagerGetKVStorePromiseSingleS2Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
245                expect(null).assertFail();
246            });
247        } catch (e) {
248            expect(null).assertFail();
249        }
250        done();
251    })
252
253    /**
254     * @tc.name KVManagerGetKVStorePromiseSingleS3Test
255     * @tc.desc Test Js Api KVManager.GetKVStore() single s3
256     * @tc.type: FUNC
257     * @tc.require: issueNumber
258     */
259    it('KVManagerGetKVStorePromiseSingleS3Test', 0, async function (done) {
260        console.info('KVManagerGetKVStorePromiseSingleS3Test');
261        const optionsInfo = {
262            createIfMissing: true,
263            encrypt: false,
264            backup: false,
265            autoSync: true,
266            kvStoreType: factory.KVStoreType.SINGLE_VERSION,
267            schema: '',
268            securityLevel: factory.SecurityLevel.S3,
269        }
270        try {
271            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
272                console.info('KVManagerGetKVStorePromiseSingleS3Test getKVStore success');
273                expect(store != null && store != undefined).assertTrue();
274            }).catch((err) => {
275                console.error('KVManagerGetKVStorePromiseSingleS3Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
276                expect(null).assertFail();
277            });
278        } catch (e) {
279            expect(null).assertFail();
280        }
281        done();
282    })
283
284    /**
285     * @tc.name KVManagerGetKVStorePromiseSingleS4Test
286     * @tc.desc Test Js Api KVManager.GetKVStore() single s4
287     * @tc.type: FUNC
288     * @tc.require: issueNumber
289     */
290    it('KVManagerGetKVStorePromiseSingleS4Test', 0, async function (done) {
291        console.info('KVManagerGetKVStorePromiseSingleS4Test');
292        const optionsInfo = {
293            createIfMissing: true,
294            encrypt: false,
295            backup: true,
296            autoSync: true,
297            kvStoreType: factory.KVStoreType.SINGLE_VERSION,
298            schema: '',
299            securityLevel: factory.SecurityLevel.S4,
300        }
301        try {
302            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
303                console.info('KVManagerGetKVStorePromiseSingleS4Test getKVStore success');
304                expect(store != null && store != undefined).assertTrue();
305            }).catch((err) => {
306                console.error('KVManagerGetKVStorePromiseSingleS4Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
307                expect(null).assertFail();
308            });
309        } catch (e) {
310            expect(null).assertFail();
311        }
312        done();
313    })
314
315    /**
316     * @tc.name KVManagerGetKVStorePromiseDeviceS1Test
317     * @tc.desc Test Js Api KVManager.GetKVStore() device s1
318     * @tc.type: FUNC
319     * @tc.require: issueNumber
320     */
321    it('KVManagerGetKVStorePromiseDeviceS1Test', 0, async function (done) {
322        console.info('KVManagerGetKVStorePromiseDeviceS1Test');
323        const optionsInfo = {
324            createIfMissing: true,
325            encrypt: false,
326            backup: false,
327            autoSync: false,
328            kvStoreType: factory.KVStoreType.DEVICE_COLLABORATION,
329            schema: '',
330            securityLevel: factory.SecurityLevel.S1,
331        }
332        try {
333            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
334                console.info('KVManagerGetKVStorePromiseDeviceS1Test getKVStore success');
335                expect(store != null && store != undefined).assertTrue();
336            }).catch((err) => {
337                console.error('KVManagerGetKVStorePromiseDeviceS1Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
338                expect(null).assertFail();
339            });
340        } catch (e) {
341            expect(null).assertFail();
342        }
343        done();
344    })
345
346    /**
347     * @tc.name KVManagerGetKVStorePromiseDeviceS2Test
348     * @tc.desc Test Js Api KVManager.GetKVStore() device s2
349     * @tc.type: FUNC
350     * @tc.require: issueNumber
351     */
352    it('KVManagerGetKVStorePromiseDeviceS2Test', 0, async function (done) {
353        console.info('KVManagerGetKVStorePromiseDeviceS2Test');
354        const optionsInfo = {
355            createIfMissing: true,
356            encrypt: false,
357            backup: false,
358            autoSync: true,
359            kvStoreType: factory.KVStoreType.DEVICE_COLLABORATION,
360            schema: '',
361            securityLevel: factory.SecurityLevel.S2,
362        }
363        try {
364            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
365                console.info('KVManagerGetKVStorePromiseDeviceS2Test getKVStore success');
366                expect(store != null && store != undefined).assertTrue();
367            }).catch((err) => {
368                console.error('KVManagerGetKVStorePromiseDeviceS2Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
369                expect(null).assertFail();
370            });
371        } catch (e) {
372            expect(null).assertFail();
373        }
374        done();
375    })
376
377    /**
378     * @tc.name KVManagerGetKVStorePromiseDeviceS3Test
379     * @tc.desc Test Js Api KVManager.GetKVStore() device s3
380     * @tc.type: FUNC
381     * @tc.require: issueNumber
382     */
383    it('KVManagerGetKVStorePromiseDeviceS3Test', 0, async function (done) {
384        console.info('KVManagerGetKVStorePromiseDeviceS3Test');
385        const optionsInfo = {
386            createIfMissing: true,
387            encrypt: false,
388            backup: false,
389            autoSync: true,
390            kvStoreType: factory.KVStoreType.DEVICE_COLLABORATION,
391            schema: '',
392            securityLevel: factory.SecurityLevel.S3,
393        }
394        try {
395            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
396                console.info('KVManagerGetKVStorePromiseDeviceS3Test getKVStore success');
397                expect(store != null && store != undefined).assertTrue();
398            }).catch((err) => {
399                console.error('KVManagerGetKVStorePromiseDeviceS3Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
400                expect(null).assertFail();
401            });
402        } catch (e) {
403            expect(null).assertFail();
404        }
405        done();
406    })
407
408    /**
409     * @tc.name KVManagerGetKVStorePromiseDeviceS4Test
410     * @tc.desc Test Js Api KVManager.GetKVStore() device s4
411     * @tc.type: FUNC
412     * @tc.require: issueNumber
413     */
414    it('KVManagerGetKVStorePromiseDeviceS4Test', 0, async function (done) {
415        console.info('KVManagerGetKVStorePromiseDeviceS4Test');
416        const optionsInfo = {
417            createIfMissing: true,
418            encrypt: false,
419            backup: false,
420            autoSync: true,
421            kvStoreType: factory.KVStoreType.DEVICE_COLLABORATION,
422            schema: '',
423            securityLevel: factory.SecurityLevel.S4,
424        }
425        try {
426            await kvManager.getKVStore(TEST_STORE_ID, optionsInfo).then((store) => {
427                console.info('KVManagerGetKVStorePromiseDeviceS4Test getKVStore success');
428                expect(store != null && store != undefined).assertTrue();
429            }).catch((err) => {
430                console.error('KVManagerGetKVStorePromiseDeviceS4Test getKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
431                expect(null).assertFail();
432            });
433        } catch (e) {
434            expect(null).assertFail();
435        }
436        done();
437    })
438
439    /**
440     * @tc.name KVManagerCloseKVStorePromiseSucTest
441     * @tc.desc Test Js Api KVManager.CloseKVStore() successfully
442     * @tc.type: FUNC
443     * @tc.require: issueNumber
444     */
445    it('KVManagerCloseKVStorePromiseSucTest', 0, async function (done) {
446        console.info('KVManagerCloseKVStorePromiseSucTest');
447        await kvManager.getKVStore(TEST_STORE_ID, options).then(async () => {
448            console.info('KVManagerCloseKVStorePromiseSucTest getKVStore success');
449            await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => {
450                console.info('KVManagerCloseKVStorePromiseSucTest closeKVStore success');
451                expect(true).assertTrue();
452            }).catch((err) => {
453                console.error('KVManagerCloseKVStorePromiseSucTest closeKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
454            });
455        });
456        done();
457    })
458
459    /**
460     * @tc.name KVManagerCloseKVStorePromiseInvalidArgsTest
461     * @tc.desc Test Js Api KVManager.CloseKVStore() with invalid args
462     * @tc.type: FUNC
463     * @tc.require: issueNumber
464     */
465    it('KVManagerCloseKVStorePromiseInvalidArgsTest', 0, async function (done) {
466        console.info('KVManagerCloseKVStorePromiseInvalidArgsTest');
467        try {
468            await kvManager.getKVStore(TEST_STORE_ID, options).then(async () => {
469                console.info('KVManagerCloseKVStorePromiseInvalidArgsTest getKVStore success');
470                await kvManager.closeKVStore(TEST_BUNDLE_NAME).then(() => {
471                    console.info('KVManagerCloseKVStorePromiseInvalidArgsTest closeKVStore success');
472                    expect(null).assertFail();
473                }).catch((err) => {
474                    console.error('KVManagerCloseKVStorePromiseInvalidArgsTest closeKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
475                    expect(null).assertFail();
476                });
477            });
478        } catch (e) {
479            console.error('KVManagerCloseKVStorePromiseInvalidArgsTest closeKVStore e ' + `, error code is ${e.code}, message is ${e.message}`);
480            expect(e.code == 401).assertTrue();
481        }
482        done();
483    })
484
485    /**
486     * @tc.name KVManagerDeleteKVStorePromiseSucTest
487     * @tc.desc Test Js Api KVManager.DeleteKVStore() successfully
488     * @tc.type: FUNC
489     * @tc.require: issueNumber
490     */
491    it('KVManagerDeleteKVStorePromiseSucTest', 0, async function (done) {
492        console.info('KVManagerDeleteKVStorePromiseSucTest');
493        try {
494            kvStore = await kvManager.getKVStore(TEST_STORE_ID, options);
495            await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
496            await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => {
497                expect(true).assertTrue();
498            }).catch((err) => {
499                console.error('KVManagerDeleteKVStorePromiseSucTest deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
500                expect(null).assertFail();
501            });
502        } catch (e) {
503            console.error('KVManagerGetKVStorePromiseSucTest getKVStore err ' + `, error code is ${e.code}, message is ${e.message}`);
504            expect(null).assertFail();
505        }
506        done();
507    })
508
509    /**
510     * @tc.name KVManagerDeleteKVStorePromiseInvalidArgsTest
511     * @tc.desc Test Js Api KVManager.DeleteKVStore() with invalid args
512     * @tc.type: FUNC
513     * @tc.require: issueNumber
514     */
515    it('KVManagerDeleteKVStorePromiseInvalidArgsTest', 0, async function (done) {
516        try {
517            await kvManager.getKVStore(TEST_STORE_ID, options, async function (err, store) {
518                console.info('KVManagerDeleteKVStorePromiseInvalidArgsTest getKVStore success');
519                kvStore = store;
520                await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
521            });
522            await kvManager.deleteKVStore(TEST_BUNDLE_NAME).then(() => {
523                console.info('KVManagerDeleteKVStorePromiseInvalidArgsTest deleteKVStore success');
524                expect(null).assertFail();
525            }).catch((err) => {
526                expect(null).assertFail();
527                console.error('KVManagerDeleteKVStorePromiseInvalidArgsTest deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`);
528            });
529        } catch (e) {
530            console.error('KVManagerDeleteKVStorePromiseInvalidArgsTest deleteKVStore e ' + `, error code is ${e.code}, message is ${e.message}`);
531            expect(e.code == 401).assertTrue();
532        }
533        done();
534    })
535
536    /**
537     * @tc.name KVManagerDeleteKVStorePromiseNoGetTest
538     * @tc.desc Test Js Api KVManager.DeleteKVStore() without get
539     * @tc.type: FUNC
540     * @tc.require: issueNumber
541     */
542    it('KVManagerDeleteKVStorePromiseNoGetTest', 0, async function (done) {
543        try {
544            await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => {
545                console.info('KVManagerDeleteKVStorePromiseNoGetTest deleteKVStore success');
546                expect(null).assertFail();
547            }).catch((err) => {
548                console.info('KVManagerDeleteKVStoreCallbackNotGetTest deleteKVStore fail');
549                expect(err.code == 15100004).assertTrue();
550            });
551        } catch (e) {
552            expect(null).assertFail();
553        }
554        done();
555    })
556
557    /**
558     * @tc.name KVManagerGetAllKVStoreIdPromiseSucTest
559     * @tc.desc Test Js Api KVManager.GetAllKVStoreId() success
560     * @tc.type: FUNC
561     * @tc.require: issueNumber
562     */
563    it('KVManagerGetAllKVStoreIdPromiseSucTest', 0, async function (done) {
564        console.info('KVManagerGetAllKVStoreIdPromiseSucTest');
565        try {
566            await kvManager.getAllKVStoreId(TEST_BUNDLE_NAME).then((data) => {
567                expect(0 == data.length).assertTrue();
568            }).catch((err) => {
569                console.error('KVManagerGetAllKVStoreIdPromiseSucTest getAllKVStoreId err ' + `, error code is ${err.code}, message is ${err.message}`);
570                expect(null).assertFail();
571            });
572        } catch (e) {
573            expect(null).assertFail();
574        }
575        done();
576    })
577
578    /**
579     * @tc.name KVManagerGetAllKVStoreIdPromiseInvalidArgsTest
580     * @tc.desc Test Js Api KVManager.GetAllKVStoreId() with invalid args
581     * @tc.type: FUNC
582     * @tc.require: issueNumber
583     */
584    it('KVManagerGetAllKVStoreIdPromiseInvalidArgsTest', 0, async function (done) {
585        console.info('KVManagerGetAllKVStoreIdPromiseInvalidArgsTest');
586        try {
587            await kvManager.getAllKVStoreId().then((data) => {
588                expect(null).assertFail();
589            }).catch((err) => {
590                console.error('KVManagerGetAllKVStoreIdPromiseInvalidArgsTest getAllKVStoreId err ' + `, error code is ${err.code}, message is ${err.message}`);
591                expect(null).assertFail();
592            });
593        } catch (e) {
594            expect(e.code == 401).assertTrue();
595        }
596        done();
597    })
598
599    /**
600     * @tc.name KVManagerOnPromiseSucTest
601     * @tc.desc Test Js Api KVManager.On() success
602     * @tc.type: FUNC
603     * @tc.require: issueNumber
604     */
605    it('KVManagerOnPromiseSucTest', 0, function (done) {
606        console.info('KVManagerOnPromiseSucTest');
607        var deathCallback = function () {
608            console.info('death callback call');
609        }
610        try {
611            kvManager.on('distributedDataServiceDie', deathCallback);
612            kvManager.off('distributedDataServiceDie', deathCallback);
613            expect(true).assertTrue();
614        } catch (e) {
615            console.error(`KVManagerOnPromiseSucTest failed, error code is ${e.code}, message is ${e.message}`);
616            expect(null).assertFail();
617        }
618        done();
619    })
620
621    /**
622     * @tc.name KVManagerOnPromiseInvalidArgsTest
623     * @tc.desc Test Js Api KVManager.On() with invalid args
624     * @tc.type: FUNC
625     * @tc.require: issueNumber
626     */
627    it('KVManagerOnPromiseInvalidArgsTest', 0, function (done) {
628        console.info('KVManagerOnPromiseInvalidArgsTest');
629        try {
630            kvManager.on('distributedDataServiceDie');
631            expect(null).assertFail();
632        } catch (e) {
633            console.error(`KVManagerOnPromiseInvalidArgsTest failed, error code is ${e.code}, message is ${e.message}`);
634            expect(e.code == 401).assertTrue();
635        }
636        done();
637    })
638
639    /**
640     * @tc.name KVManagerOffPromiseWithoutOnTest
641     * @tc.desc Test Js Api KVManager.Off() without on
642     * @tc.type: FUNC
643     * @tc.require: issueNumber
644     */
645    it('KVManagerOffPromiseWithoutOnTest', 0, function (done) {
646        console.info('KVManagerOffPromiseWithoutOnTest');
647        var deathCallback = function () {
648            console.info('death callback call');
649        }
650        try {
651            kvManager.off('distributedDataServiceDie', deathCallback);
652            expect(true).assertTrue();
653        } catch (e) {
654            console.error(`KVManagerOffPromiseWithoutOnTest failed, error code is ${e.code}, message is ${e.message}`);
655            expect(null).assertFail();
656        }
657        done();
658    })
659
660    /**
661     * @tc.name KVManagerOffPromiseInvalidArgsTest
662     * @tc.desc Test Js Api KVManager.Off() with invalid args
663     * @tc.type: FUNC
664     * @tc.require: issueNumber
665     */
666    it('KVManagerOffPromiseInvalidArgsTest', 0, function (done) {
667        console.info('KVManagerOffPromiseInvalidArgsTest');
668        try {
669            kvManager.off();
670            expect(false).assertFail();
671        } catch (e) {
672            console.error(`KVManagerOffPromiseInvalidArgsTest failed, error code is ${e.code}, message is ${e.message}`);
673            expect(e.code == 401).assertTrue();
674        }
675        done();
676    })
677
678    /**
679     * @tc.name: CreateKVManagerPromiseFullFuncTest
680     * @tc.desc: Test Js Api createKVManager full functions test
681     * @tc.type: FUNC
682     * @tc.require: issueNumber
683     */
684    it('CreateKVManagerPromiseFullFuncTest', 0, async function (done) {
685        console.info('CreateKVManagerPromiseFullFuncTest');
686        const config = {
687            bundleName: TEST_BUNDLE_NAME,
688            context: context
689        }
690        try {
691            kvManager = factory.createKVManager(config);
692            expect(kvManager != null).assertTrue();
693                console.info('CreateKVManagerPromiseFullFuncTest createKVManager success');
694                await kvManager.getKVStore(TEST_STORE_ID, options).then(async (store) => {
695                    console.info("CreateKVManagerPromiseFullFuncTest getKVStore success");
696                    await store.put(STORE_KEY, STORE_VALUE).then(async (data) => {
697                        console.info('CreateKVManagerPromiseFullFuncTest put data success');
698                        await store.get(STORE_KEY).then((data) => {
699                            console.info("CreateKVManagerPromiseFullFuncTest  get data success");
700                            expect(data).assertEqual(STORE_VALUE);
701                        }).catch((err) => {
702                            console.error('CreateKVManagerPromiseFullFuncTest get data err' + `, error code is ${err.code}, message is ${err.message}`);
703                        });
704                    }).catch((err) => {
705                        console.error('CreateKVManagerPromiseFullFuncTest put data err' + `, error code is ${err.code}, message is ${err.message}`);
706                    });
707                }).catch((err) => {
708                    console.info("CreateKVManagerPromiseFullFuncTest getKVStore err: " + JSON.stringify(err));
709                    expect(null).assertFail();
710                });
711        } catch (e) {
712            console.error('CreateKVManagerPromiseFullFuncTest promise delete fail err' + `, error code is ${err.code}, message is ${err.message}`);
713            expect(null).assertFail();
714        }
715        done();
716    })
717
718    /**
719     * @tc.name: CreateKVManagerPromiseInvalidArgsTest
720     * @tc.desc: Test Js Api createKVManager with invalid args
721     * @tc.type: FUNC
722     * @tc.require: issueNumber
723     */
724    it('CreateKVManagerPromiseInvalidArgsTest', 0, async function (done) {
725        try {
726            kvManager = factory.createKVManager();
727            expect(null).assertFail();
728        } catch (e) {
729            expect(e.code == 401).assertTrue();
730        }
731        done();
732    })
733
734    /**
735     * @tc.name: CreateKVManagerPromiseInvalidConfigTest
736     * @tc.desc: Test Js Api createKVManager with invalid config
737     * @tc.type: FUNC
738     * @tc.require: issueNumber
739     */
740    it('CreateKVManagerPromiseInvalidConfigTest', 0, async function (done) {
741        try {
742            const config1  = {
743                bundleName : TEST_BUNDLE_NAME
744            }
745            kvManager = factory.createKVManager(config1);
746            expect(null).assertFail();
747        } catch (e) {
748            console.log(e.code);
749            console.log(e.message);
750            expect(e.code == 401).assertTrue();
751        }
752        done();
753    })
754
755    /**
756     * @tc.name KVManagerDeleteEncryptedStoreFailTest
757     * @tc.desc Failed to delete encrypted store, then open again.
758     * @tc.type: FUNC
759     * @tc.require:
760     */
761    it('KVManagerDeleteEncryptedStoreFailTest', 0, async function (done) {
762        console.info('KVManagerDeleteEncryptedStoreFailTest');
763        try {
764            kvStore = await kvManager.getKVStore(TEST_STORE_ID, options);
765            expect(kvStore != undefined && kvStore != null).assertTrue();
766            await kvStore.put(STORE_KEY, STORE_VALUE);
767            let resultSet = await kvStore.getResultSet('^');
768            expect(resultSet.getCount() == 1).assertTrue();
769
770            try {
771                // Database busy, delete failed
772                await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
773                expect(null).assertFail();
774            } catch(e) {
775                expect(true).assertTrue();
776            }
777            await kvStore.closeResultSet(resultSet);
778            resultSet = null;
779            await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
780            kvStore = null;
781            // getKVStore successful, data still available
782            kvStore = await kvManager.getKVStore(TEST_STORE_ID, options);
783            expect(kvStore != undefined && kvStore != null).assertTrue();
784            let value = await kvStore.get(STORE_KEY);
785            expect(value == STORE_VALUE).assertTrue();
786
787            try {
788                await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID);
789                expect(true).assertTrue();
790            } catch (e) {
791                expect(null).assertFail();
792            }
793        } catch (e) {
794            console.error('KVManagerDeleteEncryptedStoreFailTest e ' + `, error code is ${e.code}, message is ${e.message}`);
795            expect(null).assertFail();
796        }
797        done();
798    })
799})
800