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 storage from '@ohos.data.storage' 17 18const PATH = "/data/storage/el2/database/test_storage"; 19const KEY_TEST_INT_ELEMENT = 'key_test_int'; 20const KEY_TEST_LONG_ELEMENT = 'key_test_long'; 21const KEY_TEST_FLOAT_ELEMENT = 'key_test_float'; 22const KEY_TEST_BOOLEAN_ELEMENT = 'key_test_boolean'; 23const KEY_TEST_STRING_ELEMENT = 'key_test_string'; 24var mPref; 25 26describe('StorageCallBackJsunit', function () { 27 beforeAll(function () { 28 console.info('beforeAll') 29 }) 30 31 beforeEach( function () { 32 console.info('beforeEach'); 33 mPref = storage.getStorageSync(PATH); 34 }) 35 36 afterEach(function () { 37 console.info('afterEach'); 38 storage.deleteStorageSync(PATH); 39 }) 40 41 afterAll(function () { 42 console.info('afterAll') 43 }) 44 45 /** 46 * @tc.name clear callback interface test 47 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0010 48 * @tc.desc clear callback interface test 49 */ 50 it('testClear0012', 0, function (done) { 51 mPref.putSync(KEY_TEST_STRING_ELEMENT, "test"); 52 mPref.flushSync(); 53 mPref.clear(function (err, ret) { 54 expect("defaultvalue").assertEqual(mPref.getSync(KEY_TEST_STRING_ELEMENT, "defaultvalue")); 55 done(); 56 }); 57 }) 58 59 /** 60 * @tc.name has string callback interface test 61 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0020 62 * @tc.desc has string callback interface test 63 */ 64 it('testHasKey0032', 0, function (done) { 65 mPref.putSync(KEY_TEST_STRING_ELEMENT, "test"); 66 mPref.has(KEY_TEST_STRING_ELEMENT, function (err, ret) { 67 expect(true).assertEqual(ret); 68 done(); 69 }) 70 }) 71 72 /** 73 * @tc.name has int callback interface test 74 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0130 75 * @tc.desc has int callback interface test 76 */ 77 it('testHasKey0033', 0, function (done) { 78 mPref.putSync(KEY_TEST_INT_ELEMENT, 1); 79 mPref.has(KEY_TEST_INT_ELEMENT, function (err, ret) { 80 expect(true).assertEqual(ret); 81 done(); 82 }) 83 }) 84 85 /** 86 * @tc.name has float callback interface test 87 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0140 88 * @tc.desc has float callback interface test 89 */ 90 it('testHasKey0034', 0, function (done) { 91 mPref.putSync(KEY_TEST_FLOAT_ELEMENT, 1.1); 92 mPref.has(KEY_TEST_FLOAT_ELEMENT, function (err, ret) { 93 expect(true).assertEqual(ret); 94 done(); 95 }) 96 }) 97 98 /** 99 * @tc.name has long callback interface test 100 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0150 101 * @tc.desc has long callback interface test 102 */ 103 it('testHasKey0035', 0, function (done) { 104 mPref.putSync(KEY_TEST_LONG_ELEMENT, 0); 105 mPref.has(KEY_TEST_LONG_ELEMENT, function (err, ret) { 106 expect(true).assertEqual(ret); 107 done(); 108 }) 109 }) 110 111 /** 112 * @tc.name has boolean callback interface test 113 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0160 114 * @tc.desc has boolean callback interface test 115 */ 116 it('testHasKey0036', 0, function (done) { 117 mPref.putSync(KEY_TEST_BOOLEAN_ELEMENT, false); 118 mPref.has(KEY_TEST_BOOLEAN_ELEMENT, function (err, ret) { 119 expect(true).assertEqual(ret); 120 done(); 121 }) 122 }) 123 124 /** 125 * @tc.name get defaultValue callback interface test 126 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0030 127 * @tc.desc get defaultValue callback interface test 128 */ 129 it('testGetDefValue0062', 0, function (done) { 130 mPref.get(KEY_TEST_STRING_ELEMENT, "defaultValue", function (err, ret) { 131 expect('defaultValue').assertEqual(ret); 132 done(); 133 }) 134 }) 135 136 /** 137 * @tc.name get float callback interface test 138 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0040 139 * @tc.desc get float callback interface test 140 */ 141 it('testGetFloat0072', 0, function (done) { 142 mPref.putSync(KEY_TEST_FLOAT_ELEMENT, 3.0); 143 mPref.get(KEY_TEST_FLOAT_ELEMENT, 0.0, function (err, ret) { 144 expect(3.0).assertEqual(ret); 145 done(); 146 }) 147 }) 148 149 /** 150 * @tc.name get int callback interface test 151 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0050 152 * @tc.desc get int callback interface test 153 */ 154 it('testGetInt0082', 0, function (done) { 155 mPref.putSync(KEY_TEST_INT_ELEMENT, 3); 156 mPref.get(KEY_TEST_INT_ELEMENT, 0.0, function (err, ret) { 157 expect(3).assertEqual(ret); 158 done(); 159 }) 160 }) 161 162 /** 163 * @tc.name get long callback interface test 164 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0060 165 * @tc.desc get long callback interface test 166 */ 167 it('testGetLong0092', 0, function (done) { 168 mPref.putSync(KEY_TEST_LONG_ELEMENT, 3); 169 expect(3).assertEqual(mPref.getSync(KEY_TEST_LONG_ELEMENT, 0)); 170 mPref.get(KEY_TEST_LONG_ELEMENT, 0, function (err, ret) { 171 expect(3).assertEqual(ret); 172 done(); 173 }); 174 }) 175 176 /** 177 * @tc.name get String callback interface test 178 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0070 179 * @tc.desc get String callback interface test 180 */ 181 it('testGetString102', 0, function (done) { 182 mPref.putSync(KEY_TEST_STRING_ELEMENT, "test"); 183 mPref.flushSync(); 184 mPref.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, ret) { 185 expect('test').assertEqual(ret); 186 done(); 187 }); 188 }) 189 190 /** 191 * @tc.name put boolean callback interface test 192 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0080 193 * @tc.desc put boolean callback interface test 194 */ 195 it('testPutBoolean0122', 0, function (done) { 196 mPref.put(KEY_TEST_BOOLEAN_ELEMENT, true, function (err, ret) { 197 expect(true).assertEqual(mPref.getSync(KEY_TEST_BOOLEAN_ELEMENT, false)); 198 mPref.flushSync(); 199 storage.removeStorageFromCacheSync(PATH); 200 mPref = null; 201 mPref = storage.getStorageSync(PATH); 202 expect(true).assertEqual(mPref.getSync(KEY_TEST_BOOLEAN_ELEMENT, false)); 203 done(); 204 }); 205 }) 206 207 /** 208 * @tc.name put float callback interface test 209 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0090 210 * @tc.desc put float callback interface test 211 */ 212 it('testPutFloat0132', 0, function (done) { 213 mPref.put(KEY_TEST_FLOAT_ELEMENT, 4.0, function (err, ret) { 214 expect(4.0).assertEqual(mPref.getSync(KEY_TEST_FLOAT_ELEMENT, 0.0)); 215 mPref.flushSync(); 216 storage.removeStorageFromCache(PATH); 217 mPref = null; 218 mPref = storage.getStorageSync(PATH); 219 expect(4.0).assertEqual(mPref.getSync(KEY_TEST_FLOAT_ELEMENT, 0.0)); 220 done(); 221 }); 222 }) 223 224 /** 225 * @tc.name put int callback interface test 226 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0100 227 * @tc.desc put int callback interface test 228 */ 229 it('testPutInt0142', 0, function (done) { 230 mPref.put(KEY_TEST_INT_ELEMENT, 4, function (err, ret) { 231 expect(4).assertEqual(mPref.getSync(KEY_TEST_INT_ELEMENT, 0)); 232 mPref.flushSync(); 233 storage.removeStorageFromCache(PATH); 234 mPref = null; 235 mPref = storage.getStorageSync(PATH); 236 expect(4).assertEqual(mPref.getSync(KEY_TEST_INT_ELEMENT, 0)); 237 done(); 238 }); 239 }) 240 241 /** 242 * @tc.name put long callback interface test 243 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0110 244 * @tc.desc put long callback interface test 245 */ 246 it('testPutLong0152', 0, function (done) { 247 mPref.putSync(KEY_TEST_LONG_ELEMENT, 4); 248 mPref.put(KEY_TEST_LONG_ELEMENT, 4, function (err, ret) { 249 expect(4).assertEqual(mPref.getSync(KEY_TEST_LONG_ELEMENT, 0)); 250 mPref.flushSync(); 251 storage.removeStorageFromCacheSync(PATH); 252 mPref = null; 253 mPref = storage.getStorageSync(PATH); 254 expect(4).assertEqual(mPref.getSync(KEY_TEST_LONG_ELEMENT, 0)); 255 done(); 256 }); 257 }) 258 259 /** 260 * @tc.name put String callback interface test 261 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0120 262 * @tc.desc put String callback interface test 263 */ 264 it('testPutString0162', 0, function (done) { 265 mPref.put(KEY_TEST_STRING_ELEMENT, '', function (err, ret) { 266 expect('').assertEqual(mPref.getSync(KEY_TEST_STRING_ELEMENT, "defaultvalue")); 267 mPref.flushSync(); 268 storage.removeStorageFromCacheSync(PATH); 269 mPref = null; 270 mPref = storage.getStorageSync(PATH); 271 expect('').assertEqual(mPref.getSync(KEY_TEST_STRING_ELEMENT, "defaultvalue")); 272 done(); 273 }); 274 }) 275 276 /** 277 * @tc.name clear、put、get、flush String callback interface test 278 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0120 279 * @tc.desc flush String callback interface test 280 */ 281 it('testCallback0172', 0, function (done) { 282 console.log("*******************testCallback0172 begin."); 283 mPref.clear(function (err, val) { 284 if(err){ 285 console.log("*******************clear error: " + err); 286 expect(false).assertTrue(); 287 } 288 mPref.put(KEY_TEST_STRING_ELEMENT, '', function (err, ret) { 289 if(err){ 290 console.log("*******************put error: " + err); 291 expect(false).assertTrue(); 292 } 293 console.log("*******************put done."); 294 mPref.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, pre) { 295 if(err){ 296 console.log("*******************get error: " + err); 297 expect(false).assertTrue(); 298 } 299 expect('').assertEqual(pre); 300 mPref.flush(function (err, val) { 301 if(err){ 302 console.log("*******************flush error: " + err); 303 expect(false).assertTrue(); 304 } 305 mPref.get(KEY_TEST_STRING_ELEMENT, "defaultvalue", function (err, pre2) { 306 if(err){ 307 console.log("*******************get error: " + err); 308 expect(false).assertTrue(); 309 } 310 expect('').assertEqual(pre2); 311 done(); 312 console.log("*******************testCallback0172 end."); 313 }) 314 }); 315 }) 316 }); 317 }); 318 }) 319 320 /** 321 * @tc.name test put interface 322 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0121 323 * @tc.desc test put interface input parameter is illegal. 324 */ 325 it('testPutIllegal001', 0, async function (done) { 326 let illegalKey = false; 327 let legalValue = "test"; 328 try { 329 mPref.put(illegalKey, legalValue, (ret) => { 330 done(); 331 }); 332 expect(false).assertTrue(); 333 } catch (err) { 334 console.log("try catch err =" + err); 335 done(); 336 } 337 }) 338 339 /** 340 * @tc.name test put interface 341 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0122 342 * @tc.desc test put interface input parameter is illegal. 343 */ 344 it('testPutIllegal002', 0, async function (done) { 345 let illegalKey = 123; 346 let legalValue = "test"; 347 try { 348 mPref.put(illegalKey, legalValue, (ret) => { 349 done(); 350 }); 351 expect(false).assertTrue(); 352 } catch (err) { 353 console.log("try catch err =" + err); 354 done(); 355 } 356 }) 357 358 /** 359 * @tc.name test put interface 360 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0123 361 * @tc.desc test put interface input parameter value exceed 16 * 1024 * 1024byte. 362 */ 363 it('testPutIllegal003', 0, async function (done) { 364 let phoneStr = "1"; 365 phoneStr = phoneStr.repeat(16 * 1024 * 1024 + 1); 366 try { 367 mPref.put("phoneNum", phoneStr, (ret) => { 368 done(); 369 }); 370 expect(false).assertTrue(); 371 } catch (err) { 372 console.log("try catch err =" + err); 373 done(); 374 } 375 }) 376 377 /** 378 * @tc.name test put interface 379 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0124 380 * @tc.desc test put interface input parameter value is legal. 381 */ 382 it('testPutIllegal004', 0, async function (done) { 383 let phoneStr = "1"; 384 phoneStr = phoneStr.repeat(16 * 1024 * 1024); 385 try { 386 mPref.put("phoneNum", phoneStr, (ret) => { 387 done(); 388 }); 389 } catch (err) { 390 console.log("try catch err =" + err); 391 expect(false).assertTrue(); 392 done(); 393 } 394 }) 395 396 /** 397 * @tc.name test put interface 398 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0125 399 * @tc.desc test put interface input parameter key exceed 1024 byte. 400 */ 401 it('testPutIllegal005', 0, async function (done) { 402 let phoneNum = "1"; 403 phoneNum = phoneNum.repeat(1025); 404 try { 405 mPref.put(phoneNum, "123456", (ret) => { 406 done(); 407 }); 408 expect(false).assertTrue(); 409 } catch (err) { 410 console.log("try catch err =" + err); 411 done(); 412 } 413 }) 414 415 /** 416 * @tc.name test put interface 417 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0126 418 * @tc.desc test put interface input parameter key is legal. 419 */ 420 it('testPutIllegal006', 0, async function (done) { 421 let phoneNum = "1"; 422 phoneNum = phoneNum.repeat(1024); 423 try { 424 mPref.put(phoneNum, "123456", (ret) => { 425 done(); 426 }); 427 } catch (err) { 428 console.log("try catch err =" + err); 429 expect(false).assertTrue(); 430 done(); 431 } 432 }) 433 434 /** 435 * @tc.name test get interface 436 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0127 437 * @tc.desc test get interface input parameter is illegal. 438 */ 439 it('testGetIllegal001', 0, async function (done) { 440 let illegalKey = 123; 441 try { 442 mPref.get(illegalKey, "defaultValue", (ret) => { 443 done(); 444 }); 445 expect(false).assertTrue(); 446 } catch (err) { 447 console.log("try catch err =" + err); 448 done(); 449 } 450 }) 451 452 /** 453 * @tc.name test get interface 454 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0127 455 * @tc.desc test get interface input parameter is illegal. 456 */ 457 it('testGetIllegal002', 0, async function (done) { 458 let illegalKey = true; 459 try { 460 mPref.get(illegalKey, "defaultValue", (ret) => { 461 done(); 462 }); 463 expect(false).assertTrue(); 464 } catch (err) { 465 console.log("try catch err =" + err); 466 done(); 467 } 468 }) 469 470 /** 471 * @tc.name test get interface 472 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0128 473 * @tc.desc test get interface input parameter key exceed 1024 byte. 474 */ 475 it('testGetIllegal003', 0, async function (done) { 476 let illegalKey = "1"; 477 illegalKey = illegalKey.repeat(1025); 478 try { 479 mPref.get(illegalKey, "defaultValue", (ret) => { 480 done(); 481 }); 482 expect(false).assertTrue(); 483 } catch (err) { 484 console.log("try catch err =" + err); 485 done(); 486 } 487 }) 488 489 /** 490 * @tc.name test get interface 491 * @tc.number SUB_DDM_AppDataFWK_JSPreferences_CallBack_0129 492 * @tc.desc test get interface input parameter key is legal. 493 */ 494 it('testGetIllegal004', 0, async function (done) { 495 let legalKey = "1"; 496 legalKey = legalKey.repeat(1024); 497 try { 498 mPref.get(legalKey, "defaultValue", (ret) => { 499 done(); 500 }); 501 } catch (err) { 502 console.log("try catch err =" + err); 503 expect(false).assertTrue(); 504 done(); 505 } 506 }) 507})