1/* 2* Copyright (c) 2021 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 data_preferences from '@ohos.data.preferences' 17import featureAbility from '@ohos.ability.featureAbility' 18 19const NAME = 'v9_test_preferences_callback' 20const KEY_TEST_INT_ELEMENT = 'key_test_int' 21const KEY_TEST_LONG_ELEMENT = 'key_test_long' 22const KEY_TEST_FLOAT_ELEMENT = 'key_test_float' 23const KEY_TEST_BOOLEAN_ELEMENT = 'key_test_boolean' 24const KEY_TEST_STRING_ELEMENT = 'key_test_string' 25const KEY_TEST_NUMBER_ARRAY_ELEMENT = 'key_test_number_array' 26const KEY_TEST_STRING_ARRAY_ELEMENT = 'key_test_string_array' 27const KEY_TEST_BOOL_ARRAY_ELEMENT = 'key_test_bool_array' 28var mPreference = undefined 29var context 30 31const ILLEGAL_CHAR_8 = '12345678' 32const ILLEGAL_CHAR_1024 = ILLEGAL_CHAR_8.repeat(128); 33const ILLEGAL_CHAR_1025 = ILLEGAL_CHAR_1024 + '1'; 34const ILLEGAL_CHAR_LARGEST = ILLEGAL_CHAR_1024.repeat(16 * 1024); 35const ILLEGAL_CHAR_INVALID = ILLEGAL_CHAR_LARGEST + '1'; 36 37describe('V9_PreferencesCallBackJsunit', async function () { 38 beforeAll(async function () { 39 console.info('beforeAll') 40 context = featureAbility.getContext() 41 mPreference = await data_preferences.getPreferences(context, NAME) 42 }) 43 44 afterAll(async function () { 45 console.info('afterAll') 46 await data_preferences.deletePreferences(context, NAME) 47 }) 48 49 /** 50 * @tc.name has、delete、get、flush String callback interface test 51 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0120 52 * @tc.desc flush String callback interface test 53 */ 54 55 it('testPreferencesCallback001', 0, function (done) { 56 console.log("testPreferencesCallback001 begin.") 57 try{ 58 mPreference.clear(function (err, val) { 59 if(err){ 60 console.log("clear err =" + err + ", code =" + err.code +", message =" + err.message) 61 expect(false).assertTrue() 62 } 63 mPreference.put(KEY_TEST_STRING_ELEMENT, 'abc', function (err, ret) { 64 if(err){ 65 console.log("put err =" + err + ", code =" + err.code +", message =" + err.message) 66 expect(false).assertTrue() 67 } 68 mPreference.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, pre) { 69 if(err){ 70 console.log("get err =" + err + ", code =" + err.code +", message =" + err.message) 71 expect(false).assertTrue() 72 } 73 expect('abc').assertEqual(pre) 74 mPreference.flush(function (err, val) { 75 if(err){ 76 console.log("flush err =" + err + ", code =" + err.code +", message =" + err.message) 77 expect(false).assertTrue() 78 } 79 data_preferences.removePreferencesFromCache(context, NAME,(err)=>{ 80 if(err){ 81 console.log("removePreferencesFromCache err =" + err + ", code =" + err.code +", message =" + err.message) 82 expect(false).assertTrue() 83 } 84 mPreference.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, pre2) { 85 if(err){ 86 console.log("get err =" + err + ", code =" + err.code +", message =" + err.message) 87 expect(false).assertTrue() 88 } 89 expect('abc').assertEqual(pre2) 90 done() 91 console.log("testPreferencesCallback001 end.") 92 }) 93 }) 94 }) 95 }) 96 }) 97 }) 98 } catch(err) { 99 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 100 expect(false).assertTrue() 101 } 102 }) 103 104 // get err parsers 105 it('testPreferencesCallback002', 0, function (done) { 106 console.log("testPreferencesCallback002 begin.") 107 try { 108 mPreference.get(123, function (err, val) { 109 if (err) { 110 console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message) 111 expect(false).assertTrue() 112 } 113 expect(true).assertEqual(val) 114 }) 115 } catch (err) { 116 console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message) 117 done() 118 console.log("testPreferencesCallback002 end.") 119 } 120 }) 121 122 // get OK parsers 123 it('testPreferencesCallback003', 0, function (done) { 124 console.log("testPreferencesCallback003 begin.") 125 try { 126 mPreference.get(KEY_TEST_STRING_ELEMENT, KEY_TEST_INT_ELEMENT, function (err, val) { 127 if (err) { 128 console.log("get err =" + err + ", code =" + err.code + ", message =" + err.message) 129 expect(false).assertTrue() 130 } 131 expect('abc').assertEqual(val) 132 done() 133 console.log("testPreferencesCallback003 end.") 134 }) 135 } catch (err) { 136 console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message) 137 expect(false).assertTrue() 138 } 139 }) 140 141 // getAll 142 it('testPreferencesCallback004', 0, function (done) { 143 console.log("testPreferencesCallback004 begin.") 144 try { 145 mPreference.getAll(function (err, val) { 146 if (err) { 147 console.log("getAll err =" + err + ", code =" + err.code + ", message =" + err.message) 148 expect(false).assertTrue() 149 } 150 console.log("getAll val = " + JSON.stringify(val)) 151 done() 152 console.log("testPreferencesCallback004 end.") 153 }) 154 } catch (err) { 155 console.log("trycatch err =" + err + ", code =" + err.code + ", message =" + err.message) 156 expect(false).assertTrue() 157 } 158 done() 159 }) 160 161 // has Error parsers 162 it('testPreferencesCallback005', 0, function (done) { 163 console.log("testPreferencesCallback005 begin.") 164 try{ 165 mPreference.has(123,function (err, val) { 166 console.log("has err") 167 expect(false).assertTrue() 168 }) 169 } catch(err) { 170 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 171 done() 172 console.log("testPreferencesCallback005 end.") 173 } 174 }) 175 176 // has OK parsers 177 it('testPreferencesCallback006', 0, function (done) { 178 console.log("testPreferencesCallback006 begin.") 179 try{ 180 mPreference.has(KEY_TEST_STRING_ELEMENT, function (err, val) { 181 if (err) { 182 console.log("has err =" + err + ", code =" + err.code +", message =" + err.message) 183 expect(false).assertTrue() 184 } 185 expect(true).assertEqual(val) 186 done() 187 console.log("testPreferencesCallback006 end.") 188 }) 189 } catch(err) { 190 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 191 expect(false).assertTrue() 192 } 193 }) 194 195 // put Error parsers 196 it('testPreferencesCallback007', 0, function (done) { 197 console.log("testPreferencesCallback007 begin.") 198 try{ 199 mPreference.put(123, function (err) { 200 console.log("put err") 201 expect(false).assertTrue() 202 }) 203 } catch(err) { 204 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 205 done() 206 console.log("testPreferencesCallback007 end.") 207 } 208 }) 209 210 // put OK parsers 211 it('testPreferencesCallback008', 0, function (done) { 212 console.log("testPreferencesCallback008 begin.") 213 try{ 214 mPreference.put(KEY_TEST_STRING_ELEMENT, KEY_TEST_INT_ELEMENT, function (err) { 215 if (err) { 216 console.log("put err =" + err + ", code =" + err.code +", message =" + err.message) 217 expect(false).assertTrue() 218 } 219 done() 220 console.log("testPreferencesCallback008 end.") 221 }) 222 } catch(err) { 223 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 224 expect(false).assertTrue() 225 } 226 }) 227 228 //delete Error parsers 229 it('testPreferencesCallback009', 0, function (done) { 230 console.log("testPreferencesCallback009 begin.") 231 try{ 232 mPreference.delete(1233, function(err) { 233 if (err) { 234 console.log("delete err =" + err + ", code =" + err.code +", message =" + err.message) 235 expect(false).assertTrue() 236 } 237 console.log("delete err") 238 expect(false).assertTrue() 239 }) 240 } catch(err) { 241 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 242 done() 243 console.log("testPreferencesCallback009 end.") 244 } 245 }) 246 247 //delete OK parsers 248 it('testPreferencesCallback010', 0, function (done) { 249 console.log("testPreferencesCallback010 begin.") 250 try{ 251 mPreference.delete(KEY_TEST_STRING_ELEMENT, function(err) { 252 if (err) { 253 console.log("delete err =" + err + ", code =" + err.code +", message =" + err.message) 254 expect(false).assertTrue() 255 } 256 done() 257 console.log("testPreferencesCallback010 end.") 258 }) 259 } catch(err) { 260 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 261 expect(false).assertTrue() 262 } 263 }) 264 265 // clear 266 it('testPreferencesCallback011', 0, function (done) { 267 console.log("testPreferencesCallback011 begin.") 268 try{ 269 mPreference.clear(function (err) { 270 if (err) { 271 console.log("clear err =" + err + ", code =" + err.code +", message =" + err.message) 272 expect(false).assertTrue() 273 } 274 done() 275 console.log("testPreferencesCallback011 end.") 276 }) 277 } catch(err) { 278 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 279 expect(false).assertTrue() 280 } 281 }) 282 283 // flush 284 it('testPreferencesCallback012', 0, function (done) { 285 console.log("testPreferencesCallback012 begin.") 286 try{ 287 mPreference.flush(function (err) { 288 if (err) { 289 console.log("flush err =" + err + ", code =" + err.code +", message =" + err.message) 290 expect(false).assertTrue() 291 } 292 done() 293 console.log("testPreferencesCallback012 end.") 294 }) 295 } catch(err) { 296 console.log("trycatch err =" + err + ", code =" + err.code +", message =" + err.message) 297 expect(false).assertTrue() 298 } 299 }) 300 301 /** 302 * @tc.name test put interface 303 * @tc.desc test put interface input parameter is illegal. 304 */ 305 it('testPreferencesPutIllegal0001', 0, async function (done) { 306 let illegalKey = 123; 307 let legalValue = "test"; 308 try { 309 mPreference.put(illegalKey, legalValue, (ret) => { 310 done(); 311 }); 312 } catch (err) { 313 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 314 expect("401").assertEqual(err.code.toString()); 315 done(); 316 } 317 }) 318 319 /** 320 * @tc.name test put interface 321 * @tc.desc test put interface input parameter is illegal. 322 */ 323 it('testPreferencesPutIllegal0002', 0, async function (done) { 324 let illegalKey = true; 325 let legalValue = "test"; 326 try { 327 mPreference.put(illegalKey, legalValue, (ret) => { 328 done(); 329 }); 330 } catch (err) { 331 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 332 expect("401").assertEqual(err.code.toString()); 333 done(); 334 } 335 }) 336 337 /** 338 * @tc.name test put interface 339 * @tc.desc test put interface input parameter key exceed 1024 bytes. 340 */ 341 it('testPreferencesPutIllegal0003', 0, async function (done) { 342 try { 343 mPreference.put(ILLEGAL_CHAR_1025, "123456", (ret) => { 344 done(); 345 }); 346 } catch (err) { 347 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 348 expect("401").assertEqual(err.code.toString()); 349 done(); 350 } 351 }) 352 353 /** 354 * @tc.name test put interface 355 * @tc.desc test put interface input parameter key is legal. 356 */ 357 it('testPreferencesPutIllegal0004', 0, async function (done) { 358 try { 359 mPreference.put(ILLEGAL_CHAR_1024, "123456", (ret) => { 360 done(); 361 }); 362 } catch (err) { 363 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 364 expect(false).assertEqual(true); 365 done(); 366 } 367 }) 368 369 /** 370 * @tc.name test put interface 371 * @tc.desc test put interface input parameter value exceed 16 * 1024 * 1024 bytes. 372 */ 373 it('testPreferencesPutIllegal0005', 0, async function (done) { 374 try { 375 mPreference.put("test", ILLEGAL_CHAR_INVALID, (ret) => { 376 done(); 377 }); 378 } catch (err) { 379 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 380 expect("401").assertEqual(err.code.toString()); 381 done(); 382 } 383 }) 384 385 /** 386 * @tc.name test put interface 387 * @tc.desc test put interface input parameter value is legal. 388 */ 389 it('testPreferencesPutIllegal0006', 0, async function (done) { 390 try { 391 mPreference.put("test", ILLEGAL_CHAR_LARGEST, (ret) => { 392 done(); 393 }); 394 } catch (err) { 395 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 396 expect(false).assertEqual(true); 397 done(); 398 } 399 }) 400 401 /** 402 * @tc.name test get interface 403 * @tc.desc test get interface input parameter is illegal. 404 */ 405 it('testPreferencesGetIllegal0001', 0, async function (done) { 406 let illegalKey = true; 407 try { 408 mPreference.get(illegalKey, "defaultValue", (ret) => { 409 done(); 410 }); 411 } catch (err) { 412 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 413 expect("401").assertEqual(err.code.toString()); 414 done(); 415 } 416 }) 417 418 /** 419 * @tc.name test get interface 420 * @tc.desc test get interface input parameter is illegal. 421 */ 422 it('testPreferencesGetIllegal0002', 0, async function (done) { 423 let illegalKey = 123; 424 try { 425 mPreference.get(illegalKey, "defaultValue", (ret) => { 426 done(); 427 }); 428 } catch (err) { 429 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 430 expect("401").assertEqual(err.code.toString()); 431 done(); 432 } 433 }) 434 435 /** 436 * @tc.name test get interface 437 * @tc.desc test get interface input parameter key exceed 1024 bytes. 438 */ 439 it('testPreferencesGetIllegal0003', 0, async function (done) { 440 try { 441 mPreference.get(ILLEGAL_CHAR_1025, "defaultValue", (ret) => { 442 done(); 443 }); 444 } catch (err) { 445 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 446 expect("401").assertEqual(err.code.toString()); 447 done(); 448 } 449 }) 450 451 /** 452 * @tc.name test get interface 453 * @tc.desc test get interface input parameter key is legal. 454 */ 455 it('testPreferencesGetIllegal0004', 0, async function (done) { 456 try { 457 mPreference.get(ILLEGAL_CHAR_1024, "defaultValue", (ret) => { 458 done(); 459 }); 460 } catch (err) { 461 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 462 expect(false).assertEqual(true); 463 done(); 464 } 465 }) 466 467 /** 468 * @tc.name test delete interface 469 * @tc.desc test delete interface input parameter is illegal. 470 */ 471 it('testPreferencesDeleteIllegal0001', 0, async function (done) { 472 let illegalKey = 123; 473 try { 474 mPreference.delete(illegalKey, (ret) => { 475 done(); 476 }); 477 } catch (err) { 478 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 479 expect("401").assertEqual(err.code.toString()); 480 done(); 481 } 482 }) 483 484 /** 485 * @tc.name test delete interface 486 * @tc.desc test delete interface input parameter is illegal. 487 */ 488 it('testPreferencesDeleteIllegal0002', 0, async function (done) { 489 let illegalKey = false; 490 try { 491 mPreference.delete(illegalKey, (ret) => { 492 done(); 493 }); 494 } catch (err) { 495 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 496 expect("401").assertEqual(err.code.toString()); 497 done(); 498 } 499 }) 500 501 /** 502 * @tc.name test delete interface 503 * @tc.desc test delete interface input parameter key exceed 1024 bytes. 504 */ 505 it('testPreferencesDeleteIllegal0003', 0, async function (done) { 506 try { 507 mPreference.delete(ILLEGAL_CHAR_1025, (ret) => { 508 done(); 509 }); 510 } catch (err) { 511 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 512 expect("401").assertEqual(err.code.toString()); 513 done(); 514 } 515 }) 516 517 /** 518 * @tc.name test delete interface 519 * @tc.desc test delete interface input parameter key is legal. 520 */ 521 it('testPreferencesDeleteIllegal0004', 0, async function (done) { 522 try { 523 mPreference.delete(ILLEGAL_CHAR_1024, (ret) => { 524 done(); 525 }); 526 } catch (err) { 527 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 528 expect(false).assertEqual(true); 529 done(); 530 } 531 }) 532 533 /** 534 * @tc.name test has interface 535 * @tc.desc test has interface input parameter is illegal. 536 */ 537 it('testPreferencesHasIllegal0001', 0, async function (done) { 538 let illegalKey = false; 539 try { 540 mPreference.has(illegalKey, (ret) => { 541 done(); 542 }); 543 } catch (err) { 544 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 545 expect("401").assertEqual(err.code.toString()); 546 done(); 547 } 548 }) 549 550 /** 551 * @tc.name test has interface 552 * @tc.desc test has interface input parameter is illegal. 553 */ 554 it('testPreferencesHasIllegal0002', 0, async function (done) { 555 let illegalKey = 123; 556 try { 557 mPreference.has(illegalKey, (ret) => { 558 done(); 559 }); 560 } catch (err) { 561 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 562 expect("401").assertEqual(err.code.toString()); 563 done(); 564 } 565 }) 566 567 /** 568 * @tc.name test has interface 569 * @tc.desc test has interface input parameter key exceed 1024 bytes. 570 */ 571 it('testPreferencesHasIllegal0003', 0, async function (done) { 572 try { 573 mPreference.has(ILLEGAL_CHAR_1025, (ret) => { 574 done(); 575 }); 576 } catch (err) { 577 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 578 expect("401").assertEqual(err.code.toString()); 579 done(); 580 } 581 }) 582 583 /** 584 * @tc.name test has interface 585 * @tc.desc test has interface input parameter key is legal. 586 */ 587 it('testPreferencesHasIllegal0004', 0, async function (done) { 588 try { 589 mPreference.has(ILLEGAL_CHAR_1024, (ret) => { 590 done(); 591 }); 592 } catch (err) { 593 console.log("try catch err =" + err + ", code =" + err.code +", message =" + err.message); 594 expect(false).assertEqual(true); 595 done(); 596 } 597 }) 598})