• 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 {afterAll, afterEach, beforeAll, beforeEach, describe, expect, it} from 'deccjsunit/index';
16import distributedObject from '@ohos.data.distributedDataObject';
17import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
18import featureAbility from '@ohos.ability.featureAbility';
19import bundle from '@ohos.bundle';
20var context;
21const TAG = "OBJECTSTORE_TEST";
22function changeCallback(sessionId, changeData) {
23    console.info("changeCallback start");
24    console.info(TAG + "sessionId:" + " " + sessionId);
25    if (changeData != null && changeData != undefined) {
26        changeData.forEach(element => {
27            console.info(TAG + "data changed !" + element);
28        });
29    }
30    console.info("changeCallback end");
31}
32
33function statusCallback1(sessionId, networkId, status) {
34    console.info(TAG + "statusCallback1" + " " + sessionId);
35    this.response += "\nstatus changed " + sessionId + " " + status + " " + networkId;
36}
37
38function statusCallback2(sessionId, networkId, status) {
39    console.info(TAG + "statusCallback2" + " " + sessionId);
40    this.response += "\nstatus changed " + sessionId + " " + status + " " + networkId;
41}
42
43const PERMISSION_USER_SET = 1;
44const PERMISSION_USER_NAME = "ohos.permission.DISTRIBUTED_DATASYNC";
45const CATCH_ERR = -1;
46var tokenID = undefined;
47async function grantPerm() {
48    console.info("====grant Permission start====");
49    var appInfo = await bundle.getApplicationInfo('com.OpenHarmony.app.test', 0, 100);
50    tokenID = appInfo.accessTokenId;
51    console.info("accessTokenId" + appInfo.accessTokenId + " bundleName:" + appInfo.bundleName);
52    var atManager = abilityAccessCtrl.createAtManager();
53    var result = await atManager.grantUserGrantedPermission(tokenID, PERMISSION_USER_NAME, PERMISSION_USER_SET);
54    console.info("tokenId" + tokenID + " result:" + result);
55    console.info("====grant Permission end====");
56}
57describe('objectStoreTest', function () {
58    beforeAll(async function (done) {
59        await grantPerm();
60        done();
61    })
62
63    beforeEach(function () {
64        console.info(TAG + 'beforeEach');
65        context = featureAbility.getContext();
66    })
67
68    afterEach(function () {
69        console.info(TAG + 'afterEach')
70    })
71
72    afterAll(function () {
73        console.info(TAG + 'afterAll')
74    })
75
76    console.log(TAG + "*************Unit Test Begin*************");
77
78
79    /**
80     * @tc.name: V9testsetSessionId001
81     * @tc.desc: object join session and on,object can receive callback when data has been changed
82     * @tc.type: FUNC
83     */
84    it('V9testcreate001', 0, function () {
85        console.log(TAG + "************* V9testcreate001 start *************");
86        var g_object;
87        try {
88            g_object = distributedObject.create(123, {name: "Amy", age: 18, isVis: false});
89        } catch (error) {
90            console.info(error.code + error.message);
91            expect(error.code == 401).assertEqual(true);
92            expect(error.message == "Parameter error. The type of 'context' must be 'Context'.").assertEqual(true);
93        }
94        try {
95            g_object = distributedObject.create(context, 123);
96        } catch (error) {
97            console.info(error.code + error.message);
98            expect(error.code == 401).assertEqual(true);
99            expect(error.message == "Parameter error. The type of 'source' must be 'object'.").assertEqual(true);
100        }
101        g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
102        expect(g_object == undefined).assertEqual(false);
103        g_object.setSessionId("123456").then((data) => {
104            console.info(TAG + "V9testcreate001");
105            console.info(TAG + data);
106        }).catch((error) => {
107            console.info(TAG + error);
108        });
109        console.log(TAG + "************* V9testcreate001 end *************");
110        g_object.setSessionId((error, data) => {
111            console.info(TAG + error + "," + data);
112        });
113    })
114
115    /**
116     * @tc.name: V9testsetSessionId001
117     * @tc.desc: object join session and on,object can receive callback when data has been changed
118     * @tc.type: FUNC
119     */
120    it('V9testsetSessionId001', 0, function () {
121        console.log(TAG + "************* V9testsetSessionId001 start *************");
122        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
123        expect(g_object == undefined).assertEqual(false);
124        try {
125            g_object.setSessionId(123).then((data) => {
126                console.info(TAG + "setSessionId test");
127                console.info(TAG + data);
128            }).catch((err) => {
129                console.info(TAG + err.code + err.message);
130            });
131        } catch (error) {
132            expect(error.code == 401).assertEqual(true);
133            expect(error.message == "Parameter error. The type of 'sessionId' must be 'string'.").assertEqual(true);
134        }
135        console.log(TAG + "************* V9testsetSessionId001 end *************");
136        g_object.setSessionId((error, data) => {
137            console.info(TAG + error + "," + data);
138        });
139    })
140
141    /**
142     * @tc.name: V9testsetSessionId002
143     * @tc.desc: object join session and on,object can receive callback when data has been changed
144     * @tc.type: FUNC
145     */
146    it('V9testsetSessionId002', 0, function () {
147        console.log(TAG + "************* V9testsetSessionId002 start *************");
148        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
149        expect(g_object == undefined).assertEqual(false);
150        g_object.setSessionId("session1");
151        expect("session1" == g_object.__sessionId).assertEqual(true);
152        g_object.setSessionId("session1").then(() => {
153            console.info(TAG + "setSessionId test");
154        }).catch((error) => {
155            expect(error.code == 15400001).assertEqual(true);
156            expect(error.message == "create table failed").assertEqual(true);
157        });
158        console.log(TAG + "************* V9testsetSessionId002 end *************");
159        g_object.setSessionId((error, data) => {
160            console.info(TAG + error + "," + data);
161        });
162    })
163
164    /**
165     * @tc.name: V9testsetSessionId003
166     * @tc.desc: object join session and on,object can receive callback when data has been changed
167     * @tc.type: FUNC
168     */
169    it('V9testsetSessionId003', 0, function () {
170        console.log(TAG + "************* V9testsetSessionId003 start *************");
171        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
172        expect(g_object == undefined).assertEqual(false);
173        g_object.setSessionId("123456").then((data) => {
174            console.info(TAG + "setSessionId test");
175            console.info(TAG + data);
176        }).catch((err) => {
177            console.info(TAG + err.code + err.message);
178        });
179        console.log(TAG + "************* V9testsetSessionId003 end *************");
180        g_object.setSessionId((error, data) => {
181            console.info(TAG + error + "," + data);
182        });
183    })
184
185    /**
186     * @tc.name: V9testsetSessionId004
187     * @tc.desc: object join session and on,object can receive callback when data has been changed
188     * @tc.type: FUNC
189     */
190    it('V9testsetSessionId004', 0, function () {
191        console.log(TAG + "************* V9testsetSessionId004 start *************");
192        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
193        expect(g_object == undefined).assertEqual(false);
194        g_object.setSessionId("123456", (error, data) => {
195            console.info(TAG + error + "," + data);
196            console.info(TAG + "setSessionId test");
197        });
198        g_object.setSessionId("", (error, data) => {
199            console.info(TAG + error + "," + data);
200        });
201        try {
202            g_object.setSessionId(1234, (error, data) => {
203                console.info(TAG + error + "," + data);
204                console.info(TAG + "setSessionId test");
205            });
206        } catch (error) {
207            console.log(error.code + error.message);
208            expect(error.code == 401).assertEqual(true);
209            expect(error.message == "Parameter error. The type of 'sessionId' must be 'string'.").assertEqual(true);
210        }
211        console.log(TAG + "************* V9testsetSessionId004 end *************");
212        g_object.setSessionId("", (error, data) => {
213            console.info(TAG + error + "," + data);
214        });
215    })
216
217
218    /**
219     * @tc.name: V9testOn001
220     * @tc.desc: object join session and on,object can receive callback when data has been changed
221     * @tc.type: FUNC
222     */
223    it('V9testOn001', 0, function () {
224        console.log(TAG + "************* V9testOn001 start *************");
225        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
226        expect(g_object == undefined).assertEqual(false);
227        g_object.setSessionId("session1").then(() => {
228            console.info("join session");
229        }).catch((error) => {
230            console.info(TAG + error.code + error.message);
231        });
232        expect("session1" == g_object.__sessionId).assertEqual(true);
233        console.info(TAG + " start call watch change");
234        g_object.on("change", function (sessionId, changeData) {
235            console.info("V9testOn001 callback start.");
236            if (changeData != null && changeData != undefined) {
237                changeData.forEach(element => {
238                    console.info(TAG + "data changed !" + element);
239                });
240            }
241            console.info("V9testOn001 callback end.");
242        });
243
244        if (g_object != undefined && g_object != null) {
245            g_object.name = "jack1";
246            g_object.age = 19;
247            g_object.isVis = true;
248            expect(g_object.name == "jack1").assertEqual(true);
249            expect(g_object.age == 19).assertEqual(true);
250            console.info(TAG + " set data success!");
251        } else {
252            console.info(TAG + " object is null,set name fail");
253        }
254
255        console.log(TAG + "************* V9testOn001 end *************");
256        g_object.setSessionId("", (error, data) => {
257            console.info(TAG + error + "," + data);
258        });
259    })
260
261    /**
262     * @tc.name: V9testOn002
263     * @tc.desc: object join session and on,then object change data twice,object can receive two callbacks when data has been changed
264     * @tc.type: FUNC
265     */
266    it('V9testOn002', 0, function () {
267        console.log(TAG + "************* V9testOn002 start *************");
268        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
269        expect(g_object == undefined).assertEqual(false);
270        g_object.setSessionId("session1");
271        expect("session1" == g_object.__sessionId).assertEqual(true);
272        console.info(TAG + " start call watch change");
273        try {
274            g_object.on(123, function (sessionId, changeData) {
275                console.info("V9testOn002 callback start.");
276                console.info(TAG + sessionId);
277                if (changeData != null && changeData != undefined) {
278                    changeData.forEach(element => {
279                        console.info(TAG + "data changed !" + element);
280                    });
281                }
282                console.info("V9testOn002 callback end.");
283            });
284
285        } catch (error) {
286            expect(error.code == 401).assertEqual(true);
287            expect(error.message == "Parameter error. The type of 'type' must be 'string'.").assertEqual(true);
288        }
289        console.log(TAG + "************* V9testOn002 end *************");
290        g_object.setSessionId("", (error, data) => {
291            console.info(TAG + error + "," + data);
292        });
293    })
294
295    /**
296     * @tc.name: testOn003
297     * @tc.desc object join session and on,then object do not change data,object can not receive callbacks
298     * @tc.type: FUNC
299     */
300    it('V9testOn003', 0, function () {
301        console.log(TAG + "************* V9testOn003 start *************");
302        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
303        expect(g_object == undefined).assertEqual(false);
304        g_object.setSessionId("session1").then(() => {
305            console.info("join session");
306        }).catch((error) => {
307            console.info(TAG + error.code + error.message);
308        });
309        expect("session1" == g_object.__sessionId).assertEqual(true);
310        console.info(TAG + " start call watch change");
311        try {
312            g_object.on("error", function (sessionId, changeData) {
313                console.info("V9testOn003 callback start.");
314                if (changeData != null && changeData != undefined) {
315                    changeData.forEach(element => {
316                        console.info(TAG + "data changed !" + element);
317                    });
318                }
319                console.info("V9testOn003 callback end.");
320            });
321        } catch (error) {
322            expect(error != undefined).assertEqual(true);
323        }
324        console.log(TAG + "************* V9testOn003 end *************");
325        g_object.setSessionId("", (error, data) => {
326            console.info(TAG + error + "," + data);
327        });
328    })
329
330    /**
331     * @tc.name V9testOff001
332     * @tc.desc object join session and on&off,object can not receive callback after off
333     * @tc.type: FUNC
334     */
335    it('V9testOff001', 0, function () {
336        console.log(TAG + "************* V9testOff001 start *************");
337        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
338        expect(g_object == undefined).assertEqual(false);
339        g_object.setSessionId("session5").then(() => {
340            console.info("join session");
341        }).catch((error) => {
342            console.info(TAG + error.code + error.message);
343        });
344        expect("session5" == g_object.__sessionId).assertEqual(true);
345
346        g_object.on("change", changeCallback);
347        console.info(TAG + " start call watch change");
348        if (g_object != undefined && g_object != null) {
349            g_object.name = "jack1";
350            g_object.age = 19;
351            g_object.isVis = true;
352            expect(g_object.name == "jack1").assertEqual(true);
353            expect(g_object.age == 19).assertEqual(true);
354            console.info(TAG + " set data success!");
355        } else {
356            console.info(TAG + " object is null,set name fail");
357        }
358        g_object.off("change", changeCallback);
359        console.info(TAG + " end call watch change");
360        if (g_object != undefined && g_object != null) {
361            g_object.name = "jack2";
362            g_object.age = 20;
363            g_object.isVis = false;
364            expect(g_object.name == "jack2").assertEqual(true);
365            expect(g_object.age == 20).assertEqual(true);
366            console.info(TAG + " set data success!");
367        } else {
368            console.info(TAG + " object is null,set name fail");
369        }
370        console.log(TAG + "************* V9testOff001 end *************");
371        g_object.setSessionId((error, data) => {
372            console.info(TAG + error + "," + data);
373        });
374    })
375
376    /**
377     * @tc.name: V9testOff002
378     * @tc.desc object join session and off,object can not receive callback
379     * @tc.type: FUNC
380     */
381    it('V9testOff002', 0, function () {
382        console.log(TAG + "************* V9testOff002 start *************");
383        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
384        expect(g_object == undefined).assertEqual(false);
385        g_object.setSessionId("session6").then(() => {
386            console.info("join session");
387        }).catch((error) => {
388            console.info(TAG + error.code + error.message);
389        });
390        expect("session6" == g_object.__sessionId).assertEqual(true);
391        try {
392            g_object.off(123);
393        } catch (error) {
394            expect(error.code == 401).assertEqual(true);
395            expect(error.message == "Parameter error. The type of 'type' must be 'string'.").assertEqual(true);
396        }
397        console.info(TAG + " end call watch change");
398        console.log(TAG + "************* V9testOff002 end *************");
399        g_object.setSessionId().then((data) => {
400            console.info(TAG + data);
401            console.info(TAG + "setSessionId test");
402        }).catch((error) => {
403            console.info(TAG + error.code + error.message);
404        });
405    })
406
407    /**
408     * @tc.name: V9testOnStatus001
409     * @tc.desc: object set a listener to watch another object online/offline
410     * @tc.type: FUNC
411     */
412    it('V9testOnStatus001', 0, function () {
413        console.log(TAG + "************* V9testOnStatus001 start *************");
414        console.log(TAG + "start watch status");
415        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
416        expect(g_object == undefined).assertEqual(false);
417        try {
418            g_object.on("status", null);
419        } catch (error) {
420            expect(error.code == 401).assertEqual(true);
421            expect(error.message == "Parameter error. The type of 'callback' must be 'function'.").assertEqual(true);
422        }
423        console.log(TAG + "watch success");
424        console.log(TAG + "************* V9testOnStatus001 end *************");
425        g_object.setSessionId("").then((data) => {
426            console.info(TAG + data);
427            console.info(TAG + "setSessionId test");
428        }).catch((error) => {
429            console.info(TAG + error.code + error.message);
430        });
431    })
432
433    /**
434     * @tc.name: V9testOnStatus002
435     * @tc.desc: object set several listener and can unWatch all watcher
436     * @tc.type: FUNC
437     */
438    it('V9testOnStatus002', 0, function () {
439        console.log(TAG + "************* V9testOnStatus002 start *************");
440        console.log(TAG + "start watch status");
441        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
442        expect(g_object == undefined).assertEqual(false);
443        expect(g_object.name == "Amy").assertEqual(true);
444        g_object.on("status", statusCallback1);
445        console.log(TAG + "watch success");
446        console.log(TAG + "start call unwatch status");
447        g_object.off("status");
448        console.log(TAG + "unwatch success");
449        console.log(TAG + "************* V9testOnStatus002 end *************");
450        g_object.setSessionId().then(() => {
451            console.info("leave session");
452        }).catch((error) => {
453            console.info(TAG + error.code + error.message);
454        });
455    })
456
457    /**
458     * @tc.name: V9testSave001
459     * @tc.desc: test save local
460     * @tc.type: FUNC
461     */
462    it('V9testSave001', 0, async function (done) {
463        console.log(TAG + "************* V9testSave001 start *************");
464        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
465        expect(g_object == undefined).assertEqual(false);
466
467        g_object.setSessionId("mySession1").then(() => {
468            console.info("join session");
469        }).catch((error) => {
470            console.info(TAG + error.code + error.message);
471        });
472        expect("mySession1" == g_object.__sessionId).assertEqual(true);
473
474        g_object.save("local").then((ret) => {
475            expect(ret.sessionId == "mySession1").assertEqual(true);
476            expect(ret.version == g_object.__version).assertEqual(true);
477            expect(ret.deviceId == "local").assertEqual(true);
478            done();
479
480            g_object.setSessionId("");
481            g_object.name = undefined;
482            g_object.age = undefined;
483            g_object.isVis = undefined;
484            g_object.setSessionId("mySession1");
485
486            expect(g_object.name == "Amy").assertEqual(true);
487            expect(g_object.age == 18).assertEqual(true);
488            expect(g_object.isVis == false).assertEqual(true);
489        }).catch((err) => {
490            expect("801").assertEqual(err.code.toString());
491            done();
492        });
493        console.log(TAG + "************* V9testSave001 end *************");
494    })
495
496    /**
497     * @tc.name: V9testSave002
498     * @tc.desc: test save local
499     * @tc.type: FUNC
500     */
501    it('V9testSave002', 0, async function (done) {
502        console.log(TAG + "************* V9testSave002 start *************");
503        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
504        expect(g_object == undefined).assertEqual(false);
505
506        g_object.setSessionId("mySession2");
507        expect("mySession2" == g_object.__sessionId).assertEqual(true);
508
509        g_object.save("local", (err, result) => {
510            if (err) {
511                expect("801").assertEqual(err.code.toString());
512                done();
513                return;
514            }
515            expect(result.sessionId == "mySession2").assertEqual(true);
516            expect(result.version == g_object.__version).assertEqual(true);
517            expect(result.deviceId == "local").assertEqual(true);
518
519            g_object.setSessionId("");
520            g_object.name = undefined;
521            g_object.age = undefined;
522            g_object.isVis = undefined;
523            g_object.setSessionId("mySession2");
524
525            expect(g_object.name == "Amy").assertEqual(true);
526            expect(g_object.age == 18).assertEqual(true);
527            expect(g_object.isVis == false).assertEqual(true);
528            done();
529        });
530        console.log(TAG + "************* V9testSave002 end *************");
531    })
532
533    /**
534     * @tc.name: V9testSave003
535     * @tc.desc: test save local
536     * @tc.type: FUNC
537     */
538    it('V9testSave003', 0, async function () {
539        console.log(TAG + "************* V9testSave003 start *************");
540        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
541        expect(g_object == undefined).assertEqual(false);
542
543        g_object.setSessionId("mySession3").then(() => {
544            console.info("join session");
545        }).catch((error) => {
546            console.info(TAG + error.code + error.message);
547        });
548        expect("mySession3" == g_object.__sessionId).assertEqual(true);
549        try {
550            g_object.save(1234).then((result) => {
551                expect(result.sessionId == "mySession3").assertEqual(true);
552                expect(result.version == g_object.__version).assertEqual(true);
553                expect(result.deviceId == "local").assertEqual(true);
554            })
555        } catch (error) {
556            expect(error.message == "Parameter error. The type of 'deviceId' must be 'string'.").assertEqual(true);
557        }
558        g_object.save("errorDeviceId").then((result) => {
559            expect(result.sessionId == "mySession3").assertEqual(true);
560            expect(result.version == g_object.__version).assertEqual(true);
561            expect(result.deviceId == "local").assertEqual(true);
562        }).catch((error) => {
563            expect(error != undefined).assertEqual(true);
564        });
565
566        try {
567            g_object.save("local", 123);
568        } catch (error) {
569            expect(error.code == 401).assertEqual(true);
570            expect(error.message == "Parameter error. The type of 'callback' must be 'function'.").assertEqual(true);
571        }
572        console.log(TAG + "************* V9testSave003 end *************");
573        g_object.setSessionId().then(() => {
574            console.info("leave session");
575        }).catch((error) => {
576            console.info(TAG + error.code + error.message);
577        });
578    })
579
580    /**
581     * @tc.name: V9testRevokeSave001
582     * @tc.desc: test RevokeSave
583     * @tc.type: FUNC
584     */
585    it('V9testRevokeSave001', 0, async function (done) {
586        console.log(TAG + "************* V9testRevokeSave001 start *************");
587        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
588        expect(g_object == undefined).assertEqual(false);
589
590        g_object.setSessionId("mySession4");
591        expect("mySession4" == g_object.__sessionId).assertEqual(true);
592
593        g_object.save("local", (err, result) => {
594            if (err) {
595                expect("801").assertEqual(err.code.toString());
596                done();
597                return;
598            }
599            expect(result.sessionId == "mySession4").assertEqual(true);
600            expect(result.version == g_object.__version).assertEqual(true);
601            expect(result.deviceId == "local").assertEqual(true);
602            g_object.revokeSave((err, result) => {
603                if (err) {
604                    expect("801").assertEqual(err.code.toString());
605                    done();
606                    return;
607                }
608                expect("mySession4" == result.sessionId).assertEqual(true);
609                g_object.setSessionId("");
610                g_object.name = undefined;
611                g_object.age = undefined;
612                g_object.isVis = undefined;
613                g_object.setSessionId("mySession4");
614
615                expect(g_object.name == undefined).assertEqual(true);
616                expect(g_object.age == undefined).assertEqual(true);
617                expect(g_object.isVis == undefined).assertEqual(true);
618                done();
619            })
620        });
621        console.log(TAG + "************* V9testRevokeSave001 end *************");
622    })
623
624    /**
625     * @tc.name: V9testRevokeSave002
626     * @tc.desc: test save local
627     * @tc.type: FUNC
628     * @tc.require:
629     */
630    it('V9testRevokeSave002', 0, async function () {
631        console.log(TAG + "************* V9testRevokeSave002 start *************");
632        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
633        expect(g_object != undefined).assertEqual(true);
634
635        g_object.setSessionId("mySession5");
636        expect("mySession5" == g_object.__sessionId.toString()).assertEqual(true);
637
638        let result = await g_object.save("local").catch((err)=> {
639            expect("801").assertEqual(err.code.toString());
640            return CATCH_ERR;
641        });
642        if (result === CATCH_ERR) {
643            return;
644        }
645
646        expect(result.sessionId.toString() == "mySession5").assertEqual(true);
647        expect(result.version.toString() == g_object.__version.toString()).assertEqual(true);
648        expect(result.deviceId.toString() == "local").assertEqual(true);
649
650        result = await g_object.revokeSave().catch((err)=> {
651            expect("801").assertEqual(err.code.toString());
652            return CATCH_ERR;
653        });
654
655        if (result === CATCH_ERR) {
656            return;
657        }
658        g_object.setSessionId("");
659        g_object.name = undefined;
660        g_object.age = undefined;
661        g_object.isVis = undefined;
662        g_object.setSessionId("mySession5");
663
664        expect(g_object.name == undefined).assertEqual(true);
665        expect(g_object.age == undefined).assertEqual(true);
666        expect(g_object.isVis == undefined).assertEqual(true);
667
668        console.log(TAG + "************* V9testRevokeSave002 end *************");
669    })
670
671    /**
672     * @tc.name: V9testRevokeSave003
673     * @tc.desc: test RevokeSave
674     * @tc.type: FUNC
675     */
676    it('V9testRevokeSave003', 0, async function () {
677        console.log(TAG + "************* V9testRevokeSave003 start *************");
678        var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false});
679        expect(g_object == undefined).assertEqual(false);
680        g_object.setSessionId("mySession6").then(() => {
681            console.info("join session");
682        }).catch((error) => {
683            console.info(TAG + error.code + error.message);
684        });
685        expect("mySession6" == g_object.__sessionId).assertEqual(true);
686        let result = await g_object.save("local").catch((err) => {
687            expect("801").assertEqual(err.code.toString());
688            return CATCH_ERR;
689        });
690        if (result === CATCH_ERR) {
691            return;
692        }
693        expect(result.sessionId == "mySession6").assertEqual(true);
694        expect(result.version == g_object.__version).assertEqual(true);
695        expect(result.deviceId == "local").assertEqual(true);
696        try {
697            g_object.revokeSave(123).then((result) => {
698                expect(result.sessionId == "mySession6").assertEqual(true);
699            }).catch((err) => {
700                console.log(err.code + err.message);
701            });
702        } catch (error) {
703            console.info(error.code + error.message);
704            expect("401").assertEqual(error.code.toString());
705        }
706        console.log(TAG + "************* V9testRevokeSave003 end *************");
707    })
708
709    console.log(TAG + "*************Unit Test End*************");
710})