1 2/* 3 * Copyright (C) 2022 Huawei Device Co., Ltd. 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17//import bluetooth from '@ohos.bluetooth'; 18import bluetooth from '@ohos.bluetoothManager'; 19import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from '@ohos/hypium' 20import { UiComponent, UiDriver, BY, Component, Driver, UiWindow, ON, MatchPattern, DisplayRotation, ResizeDirection, UiDirection, MouseButton, WindowMode, PointerMatrix, UIElementInfo, UIEventObserver } from '@ohos.UiTest' 21 22export default function btManagerAdvertError401Test() { 23describe('btManagerAdvertError401Test', function() { 24 let gattServer = null; 25 function sleep(delay) { 26 return new Promise(resovle => setTimeout(resovle, delay)) 27 } 28 29 async function openPhone() { 30 try{ 31 let drivers = Driver.create(); 32 console.info('[bluetooth_js] bt driver create:'+ drivers); 33 await drivers.delayMs(1000); 34 await drivers.wakeUpDisplay(); 35 await drivers.delayMs(5000); 36 await drivers.swipe(1500, 1000, 1500, 100); 37 await drivers.delayMs(10000); 38 } catch (error) { 39 console.info('[bluetooth_js] driver error info:'+ error); 40 } 41 } 42 43 async function clickTheWindow() { 44 try{ 45 let driver = Driver.create(); 46 console.info('[bluetooth_js] bt driver create:'+ driver); 47 await driver.delayMs(1000); 48 await driver.click(950, 2550); 49 await driver.delayMs(5000); 50 await driver.click(950, 2550); 51 await driver.delayMs(3000); 52 } catch (error) { 53 console.info('[bluetooth_js] driver error info:'+ error); 54 } 55 } 56 57 async function tryToEnableBt() { 58 let sta = bluetooth.getState(); 59 switch(sta){ 60 case 0: 61 console.info('[bluetooth_js] bt turn off:'+ JSON.stringify(sta)); 62 bluetooth.enableBluetooth(); 63 await clickTheWindow(); 64 await sleep(10000); 65 break; 66 case 1: 67 console.info('[bluetooth_js] bt turning on:'+ JSON.stringify(sta)); 68 await sleep(3000); 69 break; 70 case 2: 71 console.info('[bluetooth_js] bt turn on:'+ JSON.stringify(sta)); 72 break; 73 case 3: 74 console.info('[bluetooth_js] bt turning off:'+ JSON.stringify(sta)); 75 bluetooth.enableBluetooth(); 76 await clickTheWindow(); 77 await sleep(10000); 78 break; 79 default: 80 console.info('[bluetooth_js] enable success'); 81 } 82 } 83 beforeAll(async function (done) { 84 console.info('beforeAll called') 85 await openPhone(); 86 await tryToEnableBt() 87 gattServer = bluetooth.BLE.createGattServer(); 88 done() 89 }) 90 beforeEach(async function (done) { 91 console.info('beforeEach called') 92 await tryToEnableBt() 93 done() 94 }) 95 afterEach(function () { 96 console.info('afterEach called') 97 }) 98 afterAll(function () { 99 console.info('afterAll called') 100 gattServer.close(); 101 }) 102 103 /** 104 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3000 105 * @tc.name testStartAdvertising 106 * @tc.desc Test api 401 - parameters setting is null. 107 * @tc.type Function 108 * @tc.level Level 0 109 */ 110 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3000', 0, async function (done) { 111 let manufactureValueBuffer = new Uint8Array(4); 112 manufactureValueBuffer[0] = 1; 113 manufactureValueBuffer[1] = 2; 114 manufactureValueBuffer[2] = 3; 115 manufactureValueBuffer[3] = 4; 116 let serviceValueBuffer = new Uint8Array(4); 117 serviceValueBuffer[0] = 4; 118 serviceValueBuffer[1] = 6; 119 serviceValueBuffer[2] = 7; 120 serviceValueBuffer[3] = 8; 121 let advData={ 122 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 123 manufactureData:[{ 124 manufactureId:4567, 125 manufactureValue:manufactureValueBuffer.buffer 126 }], 127 serviceData:[{ 128 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 129 serviceValue:serviceValueBuffer.buffer 130 }], 131 } 132 let advResponse ={ 133 serviceUuids:["00001889-0000-1000-8000-00805f9b34fb"], 134 manufactureData:[{ 135 manufactureId:1789, 136 manufactureValue:manufactureValueBuffer.buffer 137 }], 138 serviceData:[{ 139 serviceUuid:"00001889-0000-1000-8000-00805f9b34fb", 140 serviceValue:serviceValueBuffer.buffer 141 }], 142 } 143 try { 144 gattServer.startAdvertising(advData,advResponse); 145 gattServer.stopAdvertising(); 146 expect(true).assertFalse(); 147 }catch(error) { 148 console.error('[bluetooth_js]startAdvertising30 error.code:'+JSON.stringify(error.code)+ 149 'error.message:'+JSON.stringify(error.message)); 150 expect(error.code).assertEqual('401'); 151 } 152 done(); 153 }) 154 155 /** 156 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3100 157 * @tc.name testStartAdvertising 158 * @tc.desc Test api 401 - parameters setting is error type. 159 * @tc.type Function 160 * @tc.level Level 2 161 */ 162 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3100', 0, async function (done) { 163 let manufactureValueBuffer = new Uint8Array(4); 164 manufactureValueBuffer[0] = 1; 165 manufactureValueBuffer[1] = 2; 166 manufactureValueBuffer[2] = 3; 167 manufactureValueBuffer[3] = 4; 168 let serviceValueBuffer = new Uint8Array(4); 169 serviceValueBuffer[0] = 4; 170 serviceValueBuffer[1] = 6; 171 serviceValueBuffer[2] = 7; 172 serviceValueBuffer[3] = 8; 173 let advData={ 174 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 175 manufactureData:[{ 176 manufactureId:4567, 177 manufactureValue:manufactureValueBuffer.buffer 178 }], 179 serviceData:[{ 180 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 181 serviceValue:serviceValueBuffer.buffer 182 }], 183 } 184 let advResponse ={ 185 serviceUuids:["00001889-0000-1000-8000-00805f9b34fb"], 186 manufactureData:[{ 187 manufactureId:1789, 188 manufactureValue:manufactureValueBuffer.buffer 189 }], 190 serviceData:[{ 191 serviceUuid:"00001889-0000-1000-8000-00805f9b34fb", 192 serviceValue:serviceValueBuffer.buffer 193 }], 194 } 195 try { 196 gattServer.startAdvertising(null,advData,advResponse); 197 gattServer.stopAdvertising(); 198 expect(true).assertFalse(); 199 }catch(error) { 200 console.error('[bluetooth_js]startAdvertising31 error.code:'+JSON.stringify(error.code)+ 201 'error.message:'+JSON.stringify(error.message)); 202 expect(error.code).assertEqual('401'); 203 } 204 done(); 205 }) 206 207 /** 208 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3200 209 * @tc.name testStartAdvertising 210 * @tc.desc Test api 401 - interval of setting is error type. 211 * @tc.type Function 212 * @tc.level Level 2 213 */ 214 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3200', 0, async function (done) { 215 let manufactureValueBuffer = new Uint8Array(4); 216 manufactureValueBuffer[0] = 1; 217 manufactureValueBuffer[1] = 2; 218 manufactureValueBuffer[2] = 3; 219 manufactureValueBuffer[3] = 4; 220 let serviceValueBuffer = new Uint8Array(4); 221 serviceValueBuffer[0] = 4; 222 serviceValueBuffer[1] = 6; 223 serviceValueBuffer[2] = 7; 224 serviceValueBuffer[3] = 8; 225 let setting={ 226 interval:'sss', 227 txPower:-10, 228 connectable:true, 229 } 230 let advData={ 231 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 232 manufactureData:[{ 233 manufactureId:4567, 234 manufactureValue:manufactureValueBuffer.buffer 235 }], 236 serviceData:[{ 237 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 238 serviceValue:serviceValueBuffer.buffer 239 }], 240 } 241 try { 242 gattServer.startAdvertising(setting,advData); 243 gattServer.stopAdvertising(); 244 expect(true).assertFalse(); 245 }catch(error) { 246 console.error(`[bluetooth_js]startAdvertising32 failed, code is ${error.code}, 247 message is ${error.message}`); 248 expect(error.code).assertEqual('401'); 249 } 250 done(); 251 }) 252 253 /** 254 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3300 255 * @tc.name testStartAdvertising 256 * @tc.desc Test api 401 - txPower of setting is error type. 257 * @tc.type Function 258 * @tc.level Level 2 259 */ 260 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3300', 0, async function (done) { 261 let manufactureValueBuffer = new Uint8Array(4); 262 manufactureValueBuffer[0] = 1; 263 manufactureValueBuffer[1] = 2; 264 manufactureValueBuffer[2] = 3; 265 manufactureValueBuffer[3] = 4; 266 let serviceValueBuffer = new Uint8Array(4); 267 serviceValueBuffer[0] = 4; 268 serviceValueBuffer[1] = 6; 269 serviceValueBuffer[2] = 7; 270 serviceValueBuffer[3] = 8; 271 let setting={ 272 interval:10385, 273 txPower:'ttt', 274 connectable:true, 275 } 276 let advData={ 277 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 278 manufactureData:[{ 279 manufactureId:4567, 280 manufactureValue:manufactureValueBuffer.buffer 281 }], 282 serviceData:[{ 283 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 284 serviceValue:serviceValueBuffer.buffer 285 }], 286 } 287 try { 288 gattServer.startAdvertising(setting,advData); 289 gattServer.stopAdvertising(); 290 expect(true).assertFalse(); 291 }catch(error) { 292 console.error(`[bluetooth_js]startAdvertising33 failed, code is ${error.code}, 293 message is ${error.message}`); 294 expect(error.code).assertEqual('401'); 295 } 296 done(); 297 }) 298 299 /** 300 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3400 301 * @tc.name testStartAdvertising 302 * @tc.desc Test api 401 - connectable of setting is error type. 303 * @tc.type Function 304 * @tc.level Level 2 305 */ 306 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3400', 0, async function (done) { 307 let manufactureValueBuffer = new Uint8Array(4); 308 manufactureValueBuffer[0] = 1; 309 manufactureValueBuffer[1] = 2; 310 manufactureValueBuffer[2] = 3; 311 manufactureValueBuffer[3] = 4; 312 let serviceValueBuffer = new Uint8Array(4); 313 serviceValueBuffer[0] = 4; 314 serviceValueBuffer[1] = 6; 315 serviceValueBuffer[2] = 7; 316 serviceValueBuffer[3] = 8; 317 let setting={ 318 interval:10385, 319 txPower:-10, 320 connectable:123123, 321 } 322 let advData={ 323 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 324 manufactureData:[{ 325 manufactureId:4567, 326 manufactureValue:manufactureValueBuffer.buffer 327 }], 328 serviceData:[{ 329 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 330 serviceValue:serviceValueBuffer.buffer 331 }], 332 } 333 try { 334 gattServer.startAdvertising(setting,advData); 335 gattServer.stopAdvertising(); 336 expect(true).assertFalse(); 337 }catch(error) { 338 console.error(`[bluetooth_js]startAdvertising34 failed, code is ${error.code}, 339 message is ${error.message}`); 340 expect(error.code).assertEqual('401'); 341 } 342 done(); 343 }) 344 345 /** 346 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3500 347 * @tc.name testStartAdvertising 348 * @tc.desc Test api 401 - parameters advData is null. 349 * @tc.type Function 350 * @tc.level Level 3 351 */ 352 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3500', 0, async function (done) { 353 let manufactureValueBuffer = new Uint8Array(4); 354 manufactureValueBuffer[0] = 1; 355 manufactureValueBuffer[1] = 2; 356 manufactureValueBuffer[2] = 3; 357 manufactureValueBuffer[3] = 4; 358 let serviceValueBuffer = new Uint8Array(4); 359 serviceValueBuffer[0] = 4; 360 serviceValueBuffer[1] = 6; 361 serviceValueBuffer[2] = 7; 362 serviceValueBuffer[3] = 8; 363 let setting={ 364 interval:10385, 365 txPower:-10, 366 connectable:true, 367 } 368 try { 369 gattServer.startAdvertising(setting); 370 gattServer.stopAdvertising(); 371 expect(true).assertFalse(); 372 }catch(error) { 373 console.error(`[bluetooth_js]startAdvertising35 failed, code is ${error.code}, 374 message is ${error.message}`); 375 expect(error.code).assertEqual('401'); 376 } 377 done(); 378 }) 379 380 /** 381 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3600 382 * @tc.name testStartAdvertising 383 * @tc.desc Test api 401 - serviceUuids of advData is null. 384 * @tc.type Function 385 * @tc.level Level 3 386 */ 387 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3600', 0, async function (done) { 388 let manufactureValueBuffer = new Uint8Array(4); 389 manufactureValueBuffer[0] = 1; 390 manufactureValueBuffer[1] = 2; 391 manufactureValueBuffer[2] = 3; 392 manufactureValueBuffer[3] = 4; 393 let serviceValueBuffer = new Uint8Array(4); 394 serviceValueBuffer[0] = 4; 395 serviceValueBuffer[1] = 6; 396 serviceValueBuffer[2] = 7; 397 serviceValueBuffer[3] = 8; 398 let setting={ 399 interval:10385, 400 txPower:-10, 401 connectable:true, 402 } 403 let advData={ 404 manufactureData:[{ 405 manufactureId:4567, 406 manufactureValue:manufactureValueBuffer.buffer 407 }], 408 serviceData:[{ 409 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 410 serviceValue:serviceValueBuffer.buffer 411 }], 412 } 413 try { 414 gattServer.startAdvertising(setting,advData); 415 gattServer.stopAdvertising(); 416 expect(true).assertFalse(); 417 }catch(error) { 418 console.error(`[bluetooth_js]startAdvertising36 failed, code is ${error.code}, 419 message is ${error.message}`); 420 expect(error.code).assertEqual('401'); 421 } 422 done(); 423 }) 424 425 /** 426 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3700 427 * @tc.name testStartAdvertising 428 * @tc.desc Test api 401 - manufactureData of advData is null. 429 * @tc.type Function 430 * @tc.level Level 3 431 */ 432 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3700', 0, async function (done) { 433 let manufactureValueBuffer = new Uint8Array(4); 434 manufactureValueBuffer[0] = 1; 435 manufactureValueBuffer[1] = 2; 436 manufactureValueBuffer[2] = 3; 437 manufactureValueBuffer[3] = 4; 438 let serviceValueBuffer = new Uint8Array(4); 439 serviceValueBuffer[0] = 4; 440 serviceValueBuffer[1] = 6; 441 serviceValueBuffer[2] = 7; 442 serviceValueBuffer[3] = 8; 443 let setting={ 444 interval:10385, 445 txPower:-10, 446 connectable:true, 447 } 448 let advData={ 449 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 450 serviceData:[{ 451 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 452 serviceValue:serviceValueBuffer.buffer 453 }], 454 } 455 try { 456 gattServer.startAdvertising(setting,advData); 457 gattServer.stopAdvertising(); 458 expect(true).assertFalse(); 459 }catch(error) { 460 console.error(`[bluetooth_js]startAdvertising37 failed, code is ${error.code}, 461 message is ${error.message}`); 462 expect(error.code).assertEqual('401'); 463 } 464 done(); 465 }) 466 467 /** 468 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3800 469 * @tc.name testStartAdvertising 470 * @tc.desc Test api 401 - serviceData of advData is null. 471 * @tc.type Function 472 * @tc.level Level 3 473 */ 474 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3800', 0, async function (done) { 475 let manufactureValueBuffer = new Uint8Array(4); 476 manufactureValueBuffer[0] = 1; 477 manufactureValueBuffer[1] = 2; 478 manufactureValueBuffer[2] = 3; 479 manufactureValueBuffer[3] = 4; 480 let serviceValueBuffer = new Uint8Array(4); 481 serviceValueBuffer[0] = 4; 482 serviceValueBuffer[1] = 6; 483 serviceValueBuffer[2] = 7; 484 serviceValueBuffer[3] = 8; 485 let setting={ 486 interval:10385, 487 txPower:-10, 488 connectable:true, 489 } 490 let advData={ 491 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 492 manufactureData:[{ 493 manufactureId:1789, 494 manufactureValue:manufactureValueBuffer.buffer 495 }], 496 } 497 try { 498 gattServer.startAdvertising(setting,advData); 499 gattServer.stopAdvertising(); 500 expect(true).assertFalse(); 501 }catch(error) { 502 console.error(`[bluetooth_js]startAdvertising38 failed, code is ${error.code}, 503 message is ${error.message}`); 504 expect(error.code).assertEqual('401'); 505 } 506 done(); 507 }) 508 509 /** 510 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3900 511 * @tc.name testStartAdvertising 512 * @tc.desc Test api 401 - manufactureValue of advData is error type. 513 * @tc.type Function 514 * @tc.level Level 3 515 */ 516 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_3900', 0, async function (done) { 517 let serviceValueBuffer = new Uint8Array(4); 518 serviceValueBuffer[0] = 4; 519 serviceValueBuffer[1] = 6; 520 serviceValueBuffer[2] = 7; 521 serviceValueBuffer[3] = 8; 522 let setting={ 523 interval:10385, 524 txPower:-10, 525 connectable:true, 526 } 527 let advData={ 528 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 529 manufactureData:[{ 530 manufactureId:1789, 531 manufactureValue:123 532 }], 533 serviceData:[{ 534 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 535 serviceValue:serviceValueBuffer.buffer 536 }], 537 } 538 try { 539 gattServer.startAdvertising(setting,advData); 540 gattServer.stopAdvertising(); 541 expect(true).assertFalse(); 542 }catch(error) { 543 console.error(`[bluetooth_js]startAdvertising39 failed, code is ${error.code}, 544 message is ${error.message}`); 545 expect(error.code).assertEqual('401'); 546 } 547 done(); 548 }) 549 550 /** 551 * @tc.number SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_4000 552 * @tc.name testStartAdvertising 553 * @tc.desc Test api 401 - serviceValue of advData is error type. 554 * @tc.type Function 555 * @tc.level Level 3 556 */ 557 it('SUB_COMMUNICATION_BTMANAGER_GATTADVERT_ERROR_4000', 0, async function (done) { 558 let manufactureValueBuffer = new Uint8Array(4); 559 manufactureValueBuffer[0] = 1; 560 manufactureValueBuffer[1] = 2; 561 manufactureValueBuffer[2] = 3; 562 manufactureValueBuffer[3] = 4; 563 let setting={ 564 interval:10385, 565 txPower:-10, 566 connectable:true, 567 } 568 let advData={ 569 serviceUuids:["00001888-0000-1000-8000-00805f9b34fb"], 570 manufactureData:[{ 571 manufactureId:1789, 572 manufactureValue:manufactureValueBuffer.buffer 573 }], 574 serviceData:[{ 575 serviceUuid:"00001888-0000-1000-8000-00805f9b34fb", 576 serviceValue:123123 577 }], 578 } 579 try { 580 gattServer.startAdvertising(setting,advData); 581 gattServer.stopAdvertising(); 582 expect(true).assertFalse(); 583 }catch(error) { 584 console.error(`[bluetooth_js]startAdvertising40 failed, code is ${error.code}, 585 message is ${error.message}`); 586 expect(error.code).assertEqual('401'); 587 } 588 done(); 589 }) 590 591 592 593 594 595}) 596 597} 598