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 commonType from '@ohos.data.commonType'; 18import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; 19import featureAbility from '@ohos.ability.featureAbility'; 20import bundle from '@ohos.bundle'; 21var context; 22const TAG = "OBJECTSTORE_TEST"; 23function changeCallback(sessionId, changeData) { 24 console.info("changeCallback start"); 25 console.info(TAG + "sessionId:" + " " + sessionId); 26 if (changeData != null && changeData != undefined) { 27 changeData.forEach(element => { 28 console.info(TAG + "data changed !" + element); 29 }); 30 } 31 console.info("changeCallback end"); 32} 33 34function statusCallback1(sessionId, networkId, status) { 35 console.info(TAG + "statusCallback1" + " " + sessionId); 36 this.response += "\nstatus changed " + sessionId + " " + status + " " + networkId; 37} 38 39function statusCallback2(sessionId, networkId, status) { 40 console.info(TAG + "statusCallback2" + " " + sessionId); 41 this.response += "\nstatus changed " + sessionId + " " + status + " " + networkId; 42} 43 44const PERMISSION_USER_SET = 1; 45const PERMISSION_USER_NAME = "ohos.permission.DISTRIBUTED_DATASYNC"; 46const CATCH_ERR = -1; 47var tokenID = undefined; 48async function grantPerm() { 49 console.info("====grant Permission start===="); 50 var appInfo = await bundle.getApplicationInfo('com.OpenHarmony.app.test', 0, 100); 51 tokenID = appInfo.accessTokenId; 52 console.info("accessTokenId" + appInfo.accessTokenId + " bundleName:" + appInfo.bundleName); 53 var atManager = abilityAccessCtrl.createAtManager(); 54 var result = await atManager.grantUserGrantedPermission(tokenID, PERMISSION_USER_NAME, PERMISSION_USER_SET); 55 console.info("tokenId" + tokenID + " result:" + result); 56 console.info("====grant Permission end===="); 57} 58describe('objectStoreTest', function () { 59 beforeAll(async function (done) { 60 await grantPerm(); 61 done(); 62 }) 63 64 beforeEach(function () { 65 console.info(TAG + 'beforeEach'); 66 context = featureAbility.getContext(); 67 }) 68 69 afterEach(function () { 70 console.info(TAG + 'afterEach') 71 }) 72 73 afterAll(function () { 74 console.info(TAG + 'afterAll') 75 }) 76 77 console.log(TAG + "*************Unit Test Begin*************"); 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: Function 83 * @tc.number: V9testcreate001 84 * @tc.size: MediumTest 85 * @tc.level: Level 2 86 */ 87 it('V9testcreate001', 0, function () { 88 console.log(TAG + "************* V9testcreate001 start *************"); 89 var g_object; 90 try { 91 g_object = distributedObject.create(123, {name: "Amy", age: 18, isVis: false}); 92 } catch (error) { 93 console.info(error.code + error.message); 94 expect(error.code == 401).assertEqual(true); 95 expect(error.message == "Parameter error. The type of 'context' must be 'Context'.").assertEqual(true); 96 } 97 try { 98 g_object = distributedObject.create(context, 123); 99 } catch (error) { 100 console.info(error.code + error.message); 101 expect(error.code == 401).assertEqual(true); 102 expect(error.message == "Parameter error. The type of 'source' must be 'object'.").assertEqual(true); 103 } 104 g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 105 expect(g_object == undefined).assertEqual(false); 106 g_object.setSessionId("123456").then((data) => { 107 console.info(TAG + "V9testcreate001"); 108 console.info(TAG + data); 109 }).catch((error) => { 110 console.info(TAG + error); 111 }); 112 console.log(TAG + "************* V9testcreate001 end *************"); 113 g_object.setSessionId((error, data) => { 114 console.info(TAG + error + "," + data); 115 }); 116 }) 117 118 /** 119 * @tc.name: V9testsetSessionId001 120 * @tc.desc: object join session and on,object can receive callback when data has been changed 121 * @tc.type: Function 122 * @tc.number: V9testsetSessionId001 123 * @tc.size: MediumTest 124 * @tc.level: Level 2 125 */ 126 it('V9testsetSessionId001', 0, function () { 127 console.log(TAG + "************* V9testsetSessionId001 start *************"); 128 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 129 expect(g_object == undefined).assertEqual(false); 130 try { 131 g_object.setSessionId(123).then((data) => { 132 console.info(TAG + "setSessionId test"); 133 console.info(TAG + data); 134 }).catch((err) => { 135 console.info(TAG + err.code + err.message); 136 }); 137 } catch (error) { 138 expect(error.code == 401).assertEqual(true); 139 expect(error.message == "Parameter error. The type of 'sessionId' must be 'string'.").assertEqual(true); 140 } 141 console.log(TAG + "************* V9testsetSessionId001 end *************"); 142 g_object.setSessionId((error, data) => { 143 console.info(TAG + error + "," + data); 144 }); 145 }) 146 147 /** 148 * @tc.name: V9testsetSessionId002 149 * @tc.desc: object join session and on,object can receive callback when data has been changed 150 * @tc.type: Function 151 * @tc.number: V9testsetSessionId002 152 * @tc.size: MediumTest 153 * @tc.level: Level 2 154 */ 155 it('V9testsetSessionId002', 0, function () { 156 console.log(TAG + "************* V9testsetSessionId002 start *************"); 157 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 158 expect(g_object == undefined).assertEqual(false); 159 g_object.setSessionId("session1"); 160 expect("session1" == g_object.__sessionId).assertEqual(true); 161 g_object.setSessionId("session1").then(() => { 162 console.info(TAG + "setSessionId test"); 163 }).catch((error) => { 164 expect(error.code == 15400001).assertEqual(true); 165 expect(error.message == "Failed to create the in-memory database.").assertEqual(true); 166 }); 167 console.log(TAG + "************* V9testsetSessionId002 end *************"); 168 g_object.setSessionId((error, data) => { 169 console.info(TAG + error + "," + data); 170 }); 171 }) 172 173 /** 174 * @tc.name: V9testsetSessionId003 175 * @tc.desc: object join session and on,object can receive callback when data has been changed 176 * @tc.type: Function 177 * @tc.number: V9testsetSessionId003 178 * @tc.size: MediumTest 179 * @tc.level: Level 2 180 */ 181 it('V9testsetSessionId003', 0, function () { 182 console.log(TAG + "************* V9testsetSessionId003 start *************"); 183 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 184 expect(g_object == undefined).assertEqual(false); 185 g_object.setSessionId("123456").then((data) => { 186 console.info(TAG + "setSessionId test"); 187 console.info(TAG + data); 188 }).catch((err) => { 189 console.info(TAG + err.code + err.message); 190 }); 191 console.log(TAG + "************* V9testsetSessionId003 end *************"); 192 g_object.setSessionId((error, data) => { 193 console.info(TAG + error + "," + data); 194 }); 195 }) 196 197 /** 198 * @tc.name: V9testsetSessionId004 199 * @tc.desc: object join session and on,object can receive callback when data has been changed 200 * @tc.type: Function 201 * @tc.number: V9testsetSessionId004 202 * @tc.size: MediumTest 203 * @tc.level: Level 2 204 */ 205 it('V9testsetSessionId004', 0, function () { 206 console.log(TAG + "************* V9testsetSessionId004 start *************"); 207 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 208 expect(g_object == undefined).assertEqual(false); 209 g_object.setSessionId("123456", (error, data) => { 210 console.info(TAG + error + "," + data); 211 console.info(TAG + "setSessionId test"); 212 }); 213 g_object.setSessionId("", (error, data) => { 214 console.info(TAG + error + "," + data); 215 }); 216 try { 217 g_object.setSessionId(1234, (error, data) => { 218 console.info(TAG + error + "," + data); 219 console.info(TAG + "setSessionId test"); 220 }); 221 } catch (error) { 222 console.log(error.code + error.message); 223 expect(error.code == 401).assertEqual(true); 224 expect(error.message == "Parameter error. The type of 'sessionId' must be 'string'.").assertEqual(true); 225 } 226 console.log(TAG + "************* V9testsetSessionId004 end *************"); 227 g_object.setSessionId("", (error, data) => { 228 console.info(TAG + error + "," + data); 229 }); 230 }) 231 232 233 /** 234 * @tc.name: V9testOn001 235 * @tc.desc: object join session and on,object can receive callback when data has been changed 236 * @tc.type: Function 237 * @tc.number: V9testOn001 238 * @tc.size: MediumTest 239 * @tc.level: Level 2 240 */ 241 it('V9testOn001', 0, function () { 242 console.log(TAG + "************* V9testOn001 start *************"); 243 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 244 expect(g_object == undefined).assertEqual(false); 245 g_object.setSessionId("session1").then(() => { 246 console.info("join session"); 247 }).catch((error) => { 248 console.info(TAG + error.code + error.message); 249 }); 250 expect("session1" == g_object.__sessionId).assertEqual(true); 251 console.info(TAG + " start call watch change"); 252 g_object.on("change", function (sessionId, changeData) { 253 console.info("V9testOn001 callback start."); 254 if (changeData != null && changeData != undefined) { 255 changeData.forEach(element => { 256 console.info(TAG + "data changed !" + element); 257 }); 258 } 259 console.info("V9testOn001 callback end."); 260 }); 261 262 if (g_object != undefined && g_object != null) { 263 g_object.name = "jack1"; 264 g_object.age = 19; 265 g_object.isVis = true; 266 expect(g_object.name == "jack1").assertEqual(true); 267 expect(g_object.age == 19).assertEqual(true); 268 console.info(TAG + " set data success!"); 269 } else { 270 console.info(TAG + " object is null,set name fail"); 271 } 272 273 console.log(TAG + "************* V9testOn001 end *************"); 274 g_object.setSessionId("", (error, data) => { 275 console.info(TAG + error + "," + data); 276 }); 277 }) 278 279 /** 280 * @tc.name: V9testOn002 281 * @tc.desc: object join session and on,then object change data twice,object can receive two callbacks when data has been changed 282 * @tc.type: Function 283 * @tc.number: V9testOn002 284 * @tc.size: MediumTest 285 * @tc.level: Level 2 286 */ 287 it('V9testOn002', 0, function () { 288 console.log(TAG + "************* V9testOn002 start *************"); 289 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 290 expect(g_object == undefined).assertEqual(false); 291 g_object.setSessionId("session1"); 292 expect("session1" == g_object.__sessionId).assertEqual(true); 293 console.info(TAG + " start call watch change"); 294 try { 295 g_object.on(123, function (sessionId, changeData) { 296 console.info("V9testOn002 callback start."); 297 console.info(TAG + sessionId); 298 if (changeData != null && changeData != undefined) { 299 changeData.forEach(element => { 300 console.info(TAG + "data changed !" + element); 301 }); 302 } 303 console.info("V9testOn002 callback end."); 304 }); 305 306 } catch (error) { 307 expect(error.code == 401).assertEqual(true); 308 expect(error.message == "Parameter error. The type of 'type' must be 'string'.").assertEqual(true); 309 } 310 console.log(TAG + "************* V9testOn002 end *************"); 311 g_object.setSessionId("", (error, data) => { 312 console.info(TAG + error + "," + data); 313 }); 314 }) 315 316 /** 317 * @tc.name: testOn003 318 * @tc.desc object join session and on,then object do not change data,object can not receive callbacks 319 * @tc.type: Function 320 * @tc.number: testOn003 321 * @tc.size: MediumTest 322 * @tc.level: Level 2 323 */ 324 it('V9testOn003', 0, function () { 325 console.log(TAG + "************* V9testOn003 start *************"); 326 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 327 expect(g_object == undefined).assertEqual(false); 328 g_object.setSessionId("session1").then(() => { 329 console.info("join session"); 330 }).catch((error) => { 331 console.info(TAG + error.code + error.message); 332 }); 333 expect("session1" == g_object.__sessionId).assertEqual(true); 334 console.info(TAG + " start call watch change"); 335 try { 336 g_object.on("error", function (sessionId, changeData) { 337 console.info("V9testOn003 callback start."); 338 if (changeData != null && changeData != undefined) { 339 changeData.forEach(element => { 340 console.info(TAG + "data changed !" + element); 341 }); 342 } 343 console.info("V9testOn003 callback end."); 344 }); 345 } catch (error) { 346 expect(error != undefined).assertEqual(true); 347 } 348 console.log(TAG + "************* V9testOn003 end *************"); 349 g_object.setSessionId("", (error, data) => { 350 console.info(TAG + error + "," + data); 351 }); 352 }) 353 354 /** 355 * @tc.name V9testOff001 356 * @tc.desc object join session and on&off,object can not receive callback after off 357 * @tc.type: Function 358 * @tc.number: V9testOff001 359 * @tc.size: MediumTest 360 * @tc.level: Level 2 361 */ 362 it('V9testOff001', 0, function () { 363 console.log(TAG + "************* V9testOff001 start *************"); 364 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 365 expect(g_object == undefined).assertEqual(false); 366 g_object.setSessionId("session5").then(() => { 367 console.info("join session"); 368 }).catch((error) => { 369 console.info(TAG + error.code + error.message); 370 }); 371 expect("session5" == g_object.__sessionId).assertEqual(true); 372 373 g_object.on("change", changeCallback); 374 console.info(TAG + " start call watch change"); 375 if (g_object != undefined && g_object != null) { 376 g_object.name = "jack1"; 377 g_object.age = 19; 378 g_object.isVis = true; 379 expect(g_object.name == "jack1").assertEqual(true); 380 expect(g_object.age == 19).assertEqual(true); 381 console.info(TAG + " set data success!"); 382 } else { 383 console.info(TAG + " object is null,set name fail"); 384 } 385 g_object.off("change", changeCallback); 386 console.info(TAG + " end call watch change"); 387 if (g_object != undefined && g_object != null) { 388 g_object.name = "jack2"; 389 g_object.age = 20; 390 g_object.isVis = false; 391 expect(g_object.name == "jack2").assertEqual(true); 392 expect(g_object.age == 20).assertEqual(true); 393 console.info(TAG + " set data success!"); 394 } else { 395 console.info(TAG + " object is null,set name fail"); 396 } 397 console.log(TAG + "************* V9testOff001 end *************"); 398 g_object.setSessionId((error, data) => { 399 console.info(TAG + error + "," + data); 400 }); 401 }) 402 403 /** 404 * @tc.name: V9testOff002 405 * @tc.desc object join session and off,object can not receive callback 406 * @tc.type: Function 407 * @tc.number: V9testOff002 408 * @tc.size: MediumTest 409 * @tc.level: Level 2 410 */ 411 it('V9testOff002', 0, function () { 412 console.log(TAG + "************* V9testOff002 start *************"); 413 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 414 expect(g_object == undefined).assertEqual(false); 415 g_object.setSessionId("session6").then(() => { 416 console.info("join session"); 417 }).catch((error) => { 418 console.info(TAG + error.code + error.message); 419 }); 420 expect("session6" == g_object.__sessionId).assertEqual(true); 421 try { 422 g_object.off(123); 423 } catch (error) { 424 expect(error.code == 401).assertEqual(true); 425 expect(error.message == "Parameter error. The type of 'type' must be 'string'.").assertEqual(true); 426 } 427 console.info(TAG + " end call watch change"); 428 console.log(TAG + "************* V9testOff002 end *************"); 429 g_object.setSessionId().then((data) => { 430 console.info(TAG + data); 431 console.info(TAG + "setSessionId test"); 432 }).catch((error) => { 433 console.info(TAG + error.code + error.message); 434 }); 435 }) 436 437 /** 438 * @tc.name: V9testOnStatus001 439 * @tc.desc: object set a listener to watch another object online/offline 440 * @tc.type: Function 441 * @tc.number: V9testOnStatus001 442 * @tc.size: MediumTest 443 * @tc.level: Level 2 444 */ 445 it('V9testOnStatus001', 0, function () { 446 console.log(TAG + "************* V9testOnStatus001 start *************"); 447 console.log(TAG + "start watch status"); 448 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 449 expect(g_object == undefined).assertEqual(false); 450 try { 451 g_object.on("status", null); 452 } catch (error) { 453 expect(error.code == 401).assertEqual(true); 454 expect(error.message == "Parameter error. The type of 'callback' must be 'function'.").assertEqual(true); 455 } 456 console.log(TAG + "watch success"); 457 console.log(TAG + "************* V9testOnStatus001 end *************"); 458 g_object.setSessionId("").then((data) => { 459 console.info(TAG + data); 460 console.info(TAG + "setSessionId test"); 461 }).catch((error) => { 462 console.info(TAG + error.code + error.message); 463 }); 464 }) 465 466 /** 467 * @tc.name: V9testOnStatus002 468 * @tc.desc: object set several listener and can unWatch all watcher 469 * @tc.type: Function 470 * @tc.number: V9testOnStatus002 471 * @tc.size: MediumTest 472 * @tc.level: Level 2 473 */ 474 it('V9testOnStatus002', 0, function () { 475 console.log(TAG + "************* V9testOnStatus002 start *************"); 476 console.log(TAG + "start watch status"); 477 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 478 expect(g_object == undefined).assertEqual(false); 479 expect(g_object.name == "Amy").assertEqual(true); 480 g_object.on("status", statusCallback1); 481 console.log(TAG + "watch success"); 482 console.log(TAG + "start call unwatch status"); 483 g_object.off("status"); 484 console.log(TAG + "unwatch success"); 485 console.log(TAG + "************* V9testOnStatus002 end *************"); 486 g_object.setSessionId().then(() => { 487 console.info("leave session"); 488 }).catch((error) => { 489 console.info(TAG + error.code + error.message); 490 }); 491 }) 492 493 /** 494 * @tc.name: V9testSave001 495 * @tc.desc: test save local 496 * @tc.type: Function 497 * @tc.number: V9testSave001 498 * @tc.size: MediumTest 499 * @tc.level: Level 2 500 */ 501 it('V9testSave001', 0, async function (done) { 502 console.log(TAG + "************* V9testSave001 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("mySession1").then(() => { 507 console.info("join session"); 508 }).catch((error) => { 509 console.info(TAG + error.code + error.message); 510 }); 511 expect("mySession1" == g_object.__sessionId).assertEqual(true); 512 513 g_object.save("local").then((ret) => { 514 expect(ret.sessionId == "mySession1").assertEqual(true); 515 expect(ret.version == g_object.__version).assertEqual(true); 516 expect(ret.deviceId == "local").assertEqual(true); 517 done(); 518 519 g_object.setSessionId(""); 520 g_object.name = undefined; 521 g_object.age = undefined; 522 g_object.isVis = undefined; 523 g_object.setSessionId("mySession1"); 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 }).catch((err) => { 529 expect("801").assertEqual(err.code.toString()); 530 done(); 531 }); 532 console.log(TAG + "************* V9testSave001 end *************"); 533 }) 534 535 /** 536 * @tc.name: V9testSave002 537 * @tc.desc: test save local 538 * @tc.type: Function 539 * @tc.number: V9testSave002 540 * @tc.size: MediumTest 541 * @tc.level: Level 2 542 */ 543 it('V9testSave002', 0, async function (done) { 544 console.log(TAG + "************* V9testSave002 start *************"); 545 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 546 expect(g_object == undefined).assertEqual(false); 547 548 g_object.setSessionId("mySession2"); 549 expect("mySession2" == g_object.__sessionId).assertEqual(true); 550 551 g_object.save("local", (err, result) => { 552 if (err) { 553 expect("801").assertEqual(err.code.toString()); 554 done(); 555 return; 556 } 557 expect(result.sessionId == "mySession2").assertEqual(true); 558 expect(result.version == g_object.__version).assertEqual(true); 559 expect(result.deviceId == "local").assertEqual(true); 560 561 g_object.setSessionId(""); 562 g_object.name = undefined; 563 g_object.age = undefined; 564 g_object.isVis = undefined; 565 g_object.setSessionId("mySession2"); 566 567 expect(g_object.name == "Amy").assertEqual(true); 568 expect(g_object.age == 18).assertEqual(true); 569 expect(g_object.isVis == false).assertEqual(true); 570 done(); 571 }); 572 console.log(TAG + "************* V9testSave002 end *************"); 573 }) 574 575 /** 576 * @tc.name: V9testSave003 577 * @tc.desc: test save local 578 * @tc.type: Function 579 * @tc.number: V9testSave003 580 * @tc.size: MediumTest 581 * @tc.level: Level 2 582 */ 583 it('V9testSave003', 0, async function () { 584 console.log(TAG + "************* V9testSave003 start *************"); 585 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 586 expect(g_object == undefined).assertEqual(false); 587 588 g_object.setSessionId("mySession3").then(() => { 589 console.info("join session"); 590 }).catch((error) => { 591 console.info(TAG + error.code + error.message); 592 }); 593 expect("mySession3" == g_object.__sessionId).assertEqual(true); 594 try { 595 g_object.save(1234).then((result) => { 596 expect(result.sessionId == "mySession3").assertEqual(true); 597 expect(result.version == g_object.__version).assertEqual(true); 598 expect(result.deviceId == "local").assertEqual(true); 599 }) 600 } catch (error) { 601 expect(error.message == "Parameter error. The type of 'deviceId' must be 'string'.").assertEqual(true); 602 } 603 g_object.save("errorDeviceId").then((result) => { 604 expect(result.sessionId == "mySession3").assertEqual(true); 605 expect(result.version == g_object.__version).assertEqual(true); 606 expect(result.deviceId == "local").assertEqual(true); 607 }).catch((error) => { 608 expect(error != undefined).assertEqual(true); 609 }); 610 611 try { 612 g_object.save("local", 123); 613 } catch (error) { 614 expect(error.code == 401).assertEqual(true); 615 expect(error.message == "Parameter error. The type of 'callback' must be 'function'.").assertEqual(true); 616 } 617 console.log(TAG + "************* V9testSave003 end *************"); 618 g_object.setSessionId().then(() => { 619 console.info("leave session"); 620 }).catch((error) => { 621 console.info(TAG + error.code + error.message); 622 }); 623 }) 624 625 /** 626 * @tc.name: V9testRevokeSave001 627 * @tc.desc: test RevokeSave 628 * @tc.type: Function 629 * @tc.number: V9testRevokeSave001 630 * @tc.size: MediumTest 631 * @tc.level: Level 2 632 */ 633 it('V9testRevokeSave001', 0, async function (done) { 634 console.log(TAG + "************* V9testRevokeSave001 start *************"); 635 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 636 expect(g_object == undefined).assertEqual(false); 637 638 g_object.setSessionId("mySession4"); 639 expect("mySession4" == g_object.__sessionId).assertEqual(true); 640 641 g_object.save("local", (err, result) => { 642 if (err) { 643 expect("801").assertEqual(err.code.toString()); 644 done(); 645 return; 646 } 647 expect(result.sessionId == "mySession4").assertEqual(true); 648 expect(result.version == g_object.__version).assertEqual(true); 649 expect(result.deviceId == "local").assertEqual(true); 650 g_object.revokeSave((err, result) => { 651 if (err) { 652 expect("801").assertEqual(err.code.toString()); 653 done(); 654 return; 655 } 656 expect("mySession4" == result.sessionId).assertEqual(true); 657 g_object.setSessionId(""); 658 g_object.name = undefined; 659 g_object.age = undefined; 660 g_object.isVis = undefined; 661 g_object.setSessionId("mySession4"); 662 663 expect(g_object.name == undefined).assertEqual(true); 664 expect(g_object.age == undefined).assertEqual(true); 665 expect(g_object.isVis == undefined).assertEqual(true); 666 done(); 667 }) 668 }); 669 console.log(TAG + "************* V9testRevokeSave001 end *************"); 670 }) 671 672 /** 673 * @tc.name: V9testRevokeSave002 674 * @tc.desc: test save local 675 * @tc.type: Function 676 * @tc.require: 677 * @tc.number: V9testRevokeSave002 678 * @tc.size: MediumTest 679 * @tc.level: Level 2 680 */ 681 it('V9testRevokeSave002', 0, async function () { 682 console.log(TAG + "************* V9testRevokeSave002 start *************"); 683 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 684 expect(g_object != undefined).assertEqual(true); 685 686 g_object.setSessionId("mySession5"); 687 expect("mySession5" == g_object.__sessionId.toString()).assertEqual(true); 688 689 let result = await g_object.save("local").catch((err)=> { 690 expect("801").assertEqual(err.code.toString()); 691 return CATCH_ERR; 692 }); 693 if (result === CATCH_ERR) { 694 return; 695 } 696 697 expect(result.sessionId.toString() == "mySession5").assertEqual(true); 698 expect(result.version.toString() == g_object.__version.toString()).assertEqual(true); 699 expect(result.deviceId.toString() == "local").assertEqual(true); 700 701 result = await g_object.revokeSave().catch((err)=> { 702 expect("801").assertEqual(err.code.toString()); 703 return CATCH_ERR; 704 }); 705 706 if (result === CATCH_ERR) { 707 return; 708 } 709 g_object.setSessionId(""); 710 g_object.name = undefined; 711 g_object.age = undefined; 712 g_object.isVis = undefined; 713 g_object.setSessionId("mySession5"); 714 715 expect(g_object.name == undefined).assertEqual(true); 716 expect(g_object.age == undefined).assertEqual(true); 717 expect(g_object.isVis == undefined).assertEqual(true); 718 719 console.log(TAG + "************* V9testRevokeSave002 end *************"); 720 }) 721 722 /** 723 * @tc.name: V9testRevokeSave003 724 * @tc.desc: test RevokeSave 725 * @tc.type: Function 726 * @tc.number: V9testRevokeSave003 727 * @tc.size: MediumTest 728 * @tc.level: Level 2 729 */ 730 it('V9testRevokeSave003', 0, async function () { 731 console.log(TAG + "************* V9testRevokeSave003 start *************"); 732 var g_object = distributedObject.create(context, {name: "Amy", age: 18, isVis: false}); 733 expect(g_object == undefined).assertEqual(false); 734 g_object.setSessionId("mySession6").then(() => { 735 console.info("join session"); 736 }).catch((error) => { 737 console.info(TAG + error.code + error.message); 738 }); 739 expect("mySession6" == g_object.__sessionId).assertEqual(true); 740 let result = await g_object.save("local").catch((err) => { 741 expect("801").assertEqual(err.code.toString()); 742 return CATCH_ERR; 743 }); 744 if (result === CATCH_ERR) { 745 return; 746 } 747 expect(result.sessionId == "mySession6").assertEqual(true); 748 expect(result.version == g_object.__version).assertEqual(true); 749 expect(result.deviceId == "local").assertEqual(true); 750 try { 751 g_object.revokeSave(123).then((result) => { 752 expect(result.sessionId == "mySession6").assertEqual(true); 753 }).catch((err) => { 754 console.log(err.code + err.message); 755 }); 756 } catch (error) { 757 console.info(error.code + error.message); 758 expect("401").assertEqual(error.code.toString()); 759 } 760 console.log(TAG + "************* V9testRevokeSave003 end *************"); 761 }) 762 763 /** 764 * @tc.name: V9testbindAssetCommunType001 765 * @tc.desc: Test CommType Enum Value 766 * @tc.type: Function 767 * @tc.number: V9testbindAssetCommunType001 768 * @tc.size: MediumTest 769 * @tc.level: Level 2 770 */ 771 it('V9testbindAssetCommunType001', 0, function (done) { 772 console.log(TAG + "************* V9testbindAssetCommunType001 start *************"); 773 expect(commonType.AssetStatus.ASSET_NORMAL == 1).assertTrue(); 774 expect(commonType.AssetStatus.ASSET_INSERT == 2).assertTrue(); 775 expect(commonType.AssetStatus.ASSET_UPDATE == 3).assertTrue(); 776 expect(commonType.AssetStatus.ASSET_DELETE == 4).assertTrue(); 777 expect(commonType.AssetStatus.ASSET_ABNORMAL == 5).assertTrue(); 778 expect(commonType.AssetStatus.ASSET_DOWNLOADING == 6).assertTrue(); 779 done(); 780 }) 781 782 /** 783 * @tc.name: V9testsetSessionId001 784 * @tc.desc: Test bindAssetStore 785 * @tc.type: Function 786 * @tc.number: V9testbindAssetStore001 787 * @tc.size: MediumTest 788 * @tc.level: Level 2 789 */ 790 it('V9testbindAssetStore001', 0, function (done) { 791 console.log(TAG + "************* V9testbindAssetStore001 start *************"); 792 let g_object = distributedObject.create(context, { 793 title:"bindAssettest-title", 794 content:"bindAssettest-content", 795 mark:"no mark", 796 asset001: 797 { 798 status:0, 799 name:"1.txt", 800 uri:"file://com.example.myapp/data/dir/1.txt", 801 path:"/dir/1.txt", 802 createTime: "2023/11/30 19:48:00", 803 modifyTime: "2023/11/30 20:10:00", 804 size:"1", 805 } 806 }); 807 808 expect(g_object == undefined).assertEqual(false); 809 g_object.setSessionId("sessionBA1"); 810 811 let asset1 = { 812 name: "name1", 813 uri: "uri1", 814 createTime: "createTime1", 815 modifyTime: "modifyTime1", 816 size: "size1", 817 path: "path1", 818 status: commonType.AssetStatus.ASSET_NORMAL, 819 } 820 821 let asset2 = { 822 name: "name2", 823 uri: "uri2", 824 createTime: "createTime2", 825 modifyTime: "modifyTime2", 826 size: "size2", 827 path: "path2", 828 status: commonType.AssetStatus.ASSET_UPDATE, 829 } 830 831 let asset3 = { 832 name: "name3", 833 uri: "uri3", 834 createTime: "createTime3", 835 modifyTime: "modifyTime3", 836 size: "size3", 837 path: "path3", 838 } 839 840 let result = new Uint8Array(8); 841 for (let i = 0; i < 8; i++) { 842 result[i] = 1; 843 } 844 845 let arr = [asset1, asset2]; 846 let bindInfo = { 847 storeName:"store1", 848 tableName:"table1", 849 primaryKey:{ 850 "data1": 123, 851 "data2": arr, 852 "data3": asset3, 853 "data4": 101.5, 854 "data5": result, 855 "data6": false, 856 "data7": null, 857 "data8": "test1"}, 858 field:"field1", 859 assetName:"asset1" 860 } 861 862 try { 863 g_object.bindAssetStore("asset001", bindInfo, (err, data)=>{ 864 expect(err == undefined).assertEqual(true); 865 done(); 866 }); 867 } catch (error) { 868 console.info(`V9testbindAssetStore001 err is: ${error.code} and msg is: ${error.message}`); 869 expect(null).assertFail(); 870 done(); 871 } 872 }) 873 874 /** 875 * @tc.name: V9testsetSessionId002 876 * @tc.desc: Test bindAssetStore with invalid args 877 * @tc.type: Function 878 * @tc.number: V9testsetSessionId002 879 * @tc.size: MediumTest 880 * @tc.level: Level 2 881 */ 882 it('V9testbindAssetStore002', 0, function (done) { 883 console.log(TAG + "************* V9testbindAssetStore002 start *************"); 884 let g_object = distributedObject.create(context, { 885 title:"bindAssettest-title", 886 content:"bindAssettest-content", 887 mark:"no mark", 888 asset002: 889 { 890 status:0, 891 name:"1.txt", 892 uri:"file://com.example.myapp/data/dir/1.txt", 893 path:"/dir/1.txt", 894 createTime: "2023/11/30 19:48:00", 895 modifyTime: "2023/11/30 20:10:00", 896 size:"1", 897 } 898 }); 899 900 expect(g_object == undefined).assertEqual(false); 901 g_object.setSessionId("sessionBA2"); 902 903 let bindInfo = { 904 storeName: undefined, 905 tableName: "table1", 906 primaryKey: {"data1": 123}, 907 field: "field1", 908 assetName: "asset1" 909 } 910 911 try { 912 g_object.bindAssetStore("asset002", bindInfo, (err, data)=>{ 913 expect(null).assertFail(); 914 done(); 915 }); 916 } catch (error) { 917 console.info(`V9testbindAssetStore002 err is: ${error.code} and msg is: ${error.message}`); 918 expect(error.code == 401).assertTrue(); 919 done(); 920 } 921 }) 922 923 /** 924 * @tc.name: V9testbindAssetStore003 925 * @tc.desc: Test bindAssetStore with invalid args 926 * @tc.type: Function 927 * @tc.number: V9testbindAssetStore003 928 * @tc.size: MediumTest 929 * @tc.level: Level 2 930 */ 931 it('V9testbindAssetStore003', 0, function (done) { 932 console.log(TAG + "************* V9testbindAssetStore003 start *************"); 933 let g_object = distributedObject.create(context, { 934 title:"bindAssettest-title", 935 content:"bindAssettest-content", 936 mark:"no mark", 937 asset003: 938 { 939 status:0, 940 name:"1.txt", 941 uri:"file://com.example.myapp/data/dir/1.txt", 942 path:"/dir/1.txt", 943 createTime: "2023/11/30 19:48:00", 944 modifyTime: "2023/11/30 20:10:00", 945 size:"1", 946 } 947 }); 948 949 expect(g_object == undefined).assertEqual(false); 950 g_object.setSessionId("sessionBA3"); 951 let bindInfo = { 952 storeName:"name1", 953 tableName: null, 954 primaryKey:{"data1": 123}, 955 field:"field1", 956 assetName:"asset1" 957 } 958 959 try { 960 g_object.bindAssetStore("asset003", bindInfo, (err, data)=>{ 961 expect(null).assertFail(); 962 done(); 963 }); 964 } catch (error) { 965 console.info(`V9testbindAssetStore003 err is: ${error.code} and msg is: ${error.message}`); 966 expect(error.code == 401).assertTrue(); 967 done(); 968 } 969 }) 970 971 /** 972 * @tc.name: V9testcreate002 973 * @tc.desc: object with asset create distributed data object 974 * @tc.type: Function 975 * @tc.number: V9testcreate002 976 * @tc.size: MediumTest 977 * @tc.level: Level 2 978 */ 979 it('V9testcreate002', 0, function () { 980 console.log(TAG + "************* V9testcreate002 start *************"); 981 var g_object; 982 const attachment = { 983 status: 0, 984 name: "1.txt", 985 uri: "file://com.example.myapplication/data/storage/el2/distributedfiles/dir/1.txt", 986 path: "/dir/1.txt", 987 createTime: "2023-11-26 10:00:00", 988 modifyTime: "2023-11-26 10:00:00", 989 size: "1" 990 }; 991 try { 992 g_object = distributedObject.create(context, { 993 title: "my note", 994 content: "It's a nice day today.", 995 mark: false, 996 attachment 997 }); 998 } catch (error) { 999 console.info(error.code + error.message); 1000 } 1001 expect(g_object === undefined).assertEqual(false); 1002 1003 g_object.setSessionId("123456").then((data) => { 1004 console.info(TAG + "V9testcreate002"); 1005 console.info(TAG + data); 1006 }).catch((error) => { 1007 console.info(TAG + error); 1008 }); 1009 1010 try { 1011 g_object.attachment = {}; 1012 } catch (error) { 1013 expect(error.code === 401).assertEqual(true); 1014 expect(error.message === "cannot set attachment by non Asset type data").assertEqual(true); 1015 } 1016 1017 g_object.setSessionId("").then((data) => { 1018 console.info(TAG + "V9testcreate002"); 1019 console.info(TAG + data); 1020 }).catch((error) => { 1021 console.info(TAG + error); 1022 }); 1023 1024 console.log(TAG + "************* V9testcreate002 end *************"); 1025 g_object.setSessionId((error, data) => { 1026 console.info(TAG + error + "," + data); 1027 }); 1028 }) 1029 console.log(TAG + "*************Unit Test End*************"); 1030})