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 */
15
16import usb from '@ohos.usb';
17import CheckEmptyUtils from './CheckEmptyUtils.js';
18import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index'
19
20
21/* usb core functions test */
22describe('UsbCoreJsFunctionsTestEx', function () {
23  var gDeviceList
24  beforeAll(function () {
25    console.log('*************Usb Unit UsbCoreJsFunctionsTestEx Begin*************');
26    var Version = usb.getVersion()
27    console.info('begin test getversion :' + Version)
28    // version > 17  host currentMode = 2 device currentMode = 1
29    var usbPortList = usb.getPorts()
30    if (usbPortList.length > 0) {
31      if (usbPortList[0].status.currentMode == 1) {
32        usb.setPortRoles(usbPortList[0].id, usb.SOURCE, usb.HOST).then(data => {
33          console.info('usb case setPortRolesEx return: ' + data);
34        }).catch(error => {
35          console.info('usb case setPortRolesEx error : ' + error);
36        });
37        console.log('*************Usb Unit Begin switch to host*************');
38      }
39    }
40    gDeviceList = usb.getDevices();
41  })
42  beforeEach(function () {
43    console.info('beforeEach: *************Usb Unit Test CaseEx*************');
44  })
45  afterEach(function () {
46    console.info('afterEach: *************Usb Unit Test CaseEx*************');
47  })
48  afterAll(function () {
49    console.log('*************Usb Unit UsbCoreJsFunctionsTestEx End*************');
50  })
51
52
53  /**
54   * @tc.number    : SUB_USB_connect_device_02
55   * @tc.name      : connectDevice
56   * @tc.desc      : 反向测试 错误参数 devAddress 打开设备
57   */
58  it('SUB_USB_connect_device_02', 0, function () {
59    console.info('usb connect_device_02 begin');
60    if (gDeviceList.length == 0) {
61      console.info('usb case get_device_list is null')
62      expect(false).assertTrue();
63      return
64    }
65    var isRight = usb.hasRight(gDeviceList[0].name);
66    if (!isRight) {
67      usb.requestRight(gDeviceList[0].name).then(hasRight => {
68      }).catch(error => {
69        console.info('usb 02 requestRight error:' + error);
70      });
71      console.info('usb 02 requestRight end:');
72      CheckEmptyUtils.sleep(3000)
73    }
74
75    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
76    device.devAddress = 2 + 10000
77    try {
78      var usbDevicePipe = usb.connectDevice(device)
79    } catch (err) {
80      expect(true).assertTrue();
81      console.info('usb connectDevice fail:' + err);
82    }
83    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
84      ' devAddress ' + device.devAddress);
85    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertTrue();
86
87    console.info('usb connect_device_02 :  PASS');
88  })
89
90  /**
91   * @tc.number    : SUB_USB_connect_device_03
92   * @tc.name      : connectDevice
93   * @tc.desc      : 反向测试 busNum错误参数 打开设备
94   */
95  it('SUB_USB_connect_device_03', 0, function () {
96    console.info('usb connect_device_03 begin');
97    if (gDeviceList.length == 0) {
98      console.info('usb case get_device_list is null')
99      expect(false).assertTrue();
100      return
101    }
102    var isRight = usb.hasRight(gDeviceList[0].name);
103    if (!isRight) {
104      usb.requestRight(gDeviceList[0].name).then(hasRight => {
105      }).catch(error => {
106        console.info('usb 03 requestRight error:' + error);
107      });
108      console.info('usb 03 requestRight end:');
109      CheckEmptyUtils.sleep(3000)
110    }
111
112    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
113    device.busNum = 2 + 1000
114    try {
115      var usbDevicePipe = usb.connectDevice(device)
116    } catch (err) {
117      expect(true).assertTrue();
118      console.info('usb connectDevice fail:' + err);
119    }
120    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
121      ' busNum ' + device.busNum);
122    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertTrue();
123    console.info('usb connect_device_03 :  PASS');
124  })
125
126  /**
127   * @tc.number    : SUB_USB_connect_device_04
128   * @tc.name      : connectDevice
129   * @tc.desc      : 反向测试 serial错误参数 打开设备
130   */
131  it('SUB_USB_connect_device_04', 0, function () {
132    console.info('usb connect_device_04 begin');
133    if (gDeviceList.length == 0) {
134      console.info('usb case get_device_list is null')
135      expect(false).assertTrue();
136      return
137    }
138    var isRight = usb.hasRight(gDeviceList[0].name);
139    if (!isRight) {
140      usb.requestRight(gDeviceList[0].name).then(hasRight => {
141      }).catch(error => {
142        console.info('usb 04 requestRight error:' + error);
143      });
144      console.info('usb 04 requestRight end:');
145      CheckEmptyUtils.sleep(3000)
146    }
147
148    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
149    device.serial = 'asdfsd'
150    try {
151      var usbDevicePipe = usb.connectDevice(device)
152    } catch (err) {
153      expect(true).assertTrue();
154      console.info('usb connectDevice fail:' + err);
155    }
156    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
157      ' serial ' + device.serial);
158    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
159    var isPipClose = usb.closePipe(usbDevicePipe);
160    console.info('usb case closePipe ret: ' + isPipClose);
161    expect(isPipClose).assertEqual(0);
162    console.info('usb connect_device_04 :  PASS');
163  })
164
165  /**
166   * @tc.number    : SUB_USB_connect_device_05
167   * @tc.name      : connectDevice
168   * @tc.desc      : 反向测试 name错误参数 打开设备
169   */
170  it('SUB_USB_connect_device_05', 0, function () {
171    console.info('usb connect_device_05 begin');
172    if (gDeviceList.length == 0) {
173      console.info('usb case get_device_list is null')
174      expect(false).assertTrue();
175      return
176    }
177    var isRight = usb.hasRight(gDeviceList[0].name);
178    if (!isRight) {
179      usb.requestRight(gDeviceList[0].name).then(hasRight => {
180      }).catch(error => {
181        console.info('usb 05 requestRight error:' + error);
182      });
183      console.info('usb 05 requestRight end:');
184      CheckEmptyUtils.sleep(3000)
185    }
186
187    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
188    device.name = 2 + 10000
189    try {
190      var usbDevicePipe = usb.connectDevice(device)
191    } catch (err) {
192      expect(true).assertTrue();
193      console.info('usb connectDevice fail:' + err);
194    }
195    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) + ' name ' + device.name);
196    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
197    var isPipClose = usb.closePipe(usbDevicePipe);
198    console.info('usb case closePipe ret: ' + isPipClose);
199    expect(isPipClose).assertEqual(0);
200    console.info('usb connect_device_05 :  PASS');
201  })
202
203  /**
204   * @tc.number    : SUB_USB_connect_device_06
205   * @tc.name      : connectDevice
206   * @tc.desc      : 反向测试 manufacturerName错误参数 打开设备
207   */
208  it('SUB_USB_connect_device_06', 0, function () {
209    console.info('usb connect_device_06 begin');
210    if (gDeviceList.length == 0) {
211      console.info('usb case get_device_list is null')
212      expect(false).assertTrue();
213      return
214    }
215    var isRight = usb.hasRight(gDeviceList[0].name);
216    if (!isRight) {
217      usb.requestRight(gDeviceList[0].name).then(hasRight => {
218      }).catch(error => {
219        console.info('usb 06 requestRight error:' + error);
220      });
221      console.info('usb 06 requestRight end:');
222      CheckEmptyUtils.sleep(3000)
223    }
224
225    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
226    device.manufacturerName = 2 + 10000
227    try {
228      var usbDevicePipe = usb.connectDevice(device)
229    } catch (err) {
230      expect(true).assertTrue();
231      console.info('usb connectDevice fail:' + err);
232    }
233    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
234      ' manufacturerName ' + device.manufacturerName);
235    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
236    var isPipClose = usb.closePipe(usbDevicePipe);
237    console.info('usb case closePipe ret: ' + isPipClose);
238    expect(isPipClose).assertEqual(0);
239    console.info('usb connect_device_06 :  PASS');
240  })
241
242  /**
243   * @tc.number    : SUB_USB_connect_device_07
244   * @tc.name      : connectDevice
245   * @tc.desc      : 反向测试 productName错误参数 打开设备
246   */
247  it('SUB_USB_connect_device_07', 0, function () {
248    console.info('usb connect_device_07 begin');
249    if (gDeviceList.length == 0) {
250      console.info('usb case get_device_list is null')
251      expect(false).assertTrue();
252      return
253    }
254    var isRight = usb.hasRight(gDeviceList[0].name);
255    if (!isRight) {
256      usb.requestRight(gDeviceList[0].name).then(hasRight => {
257      }).catch(error => {
258        console.info('usb 07 requestRight error:' + error);
259      });
260      console.info('usb 07 requestRight end:');
261      CheckEmptyUtils.sleep(3000)
262    }
263
264    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
265    device.productName = 'sdfsdfe'
266    try {
267      var usbDevicePipe = usb.connectDevice(device)
268    } catch (err) {
269      expect(true).assertTrue();
270      console.info('usb connectDevice fail:' + err);
271    }
272    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
273      ' productName ' + device.productName);
274    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
275    var isPipClose = usb.closePipe(usbDevicePipe);
276    console.info('usb case closePipe ret: ' + isPipClose);
277    expect(isPipClose).assertEqual(0);
278    console.info('usb connect_device_07 :  PASS');
279  })
280
281  /**
282   * @tc.number    : SUB_USB_connect_device_08
283   * @tc.name      : connectDevice
284   * @tc.desc      : 反向测试 version错误参数 打开设备
285   */
286  it('SUB_USB_connect_device_08', 0, function () {
287    console.info('usb connect_device_08 begin');
288    if (gDeviceList.length == 0) {
289      console.info('usb case get_device_list is null')
290      expect(false).assertTrue();
291      return
292    }
293    var isRight = usb.hasRight(gDeviceList[0].name);
294    if (!isRight) {
295      usb.requestRight(gDeviceList[0].name).then(hasRight => {
296      }).catch(error => {
297        console.info('usb 08 requestRight error:' + error);
298      });
299      console.info('usb 08 requestRight end:');
300      CheckEmptyUtils.sleep(3000)
301    }
302
303    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
304    device.version = 'gwefsdf'
305    try {
306      var usbDevicePipe = usb.connectDevice(device)
307    } catch (err) {
308      expect(true).assertTrue();
309      console.info('usb connectDevice fail:' + err);
310    }
311    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
312      ' version ' + device.version);
313    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
314    var isPipClose = usb.closePipe(usbDevicePipe);
315    console.info('usb case closePipe ret: ' + isPipClose);
316    expect(isPipClose).assertEqual(0);
317    console.info('usb connect_device_08 :  PASS');
318  })
319
320  /**
321   * @tc.number    : SUB_USB_connect_device_09
322   * @tc.name      : connectDevice
323   * @tc.desc      : 反向测试 vendorId错误参数 打开设备
324   */
325  it('SUB_USB_connect_device_09', 0, function () {
326    console.info('usb connect_device_09 begin');
327    if (gDeviceList.length == 0) {
328      console.info('usb case get_device_list is null')
329      expect(false).assertTrue();
330      return
331    }
332    var isRight = usb.hasRight(gDeviceList[0].name);
333    if (!isRight) {
334      usb.requestRight(gDeviceList[0].name).then(hasRight => {
335      }).catch(error => {
336        console.info('usb 09 requestRight error:' + error);
337      });
338      console.info('usb 09 requestRight end:');
339      CheckEmptyUtils.sleep(3000)
340    }
341
342    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
343    device.vendorId = 2 + 10000
344    try {
345      var usbDevicePipe = usb.connectDevice(device)
346    } catch (err) {
347      expect(true).assertTrue();
348      console.info('usb connectDevice fail:' + err);
349    }
350    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
351      ' vendorId ' + device.vendorId);
352    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
353    var isPipClose = usb.closePipe(usbDevicePipe);
354    console.info('usb case closePipe ret: ' + isPipClose);
355    expect(isPipClose).assertEqual(0);
356    console.info('usb connect_device_09 :  PASS');
357  })
358
359  /**
360   * @tc.number    : SUB_USB_connect_device_10
361   * @tc.name      : connectDevice
362   * @tc.desc      : 反向测试 productId错误参数 打开设备
363   */
364  it('SUB_USB_connect_device_10', 0, function () {
365    console.info('usb connect_device_10 begin');
366    if (gDeviceList.length == 0) {
367      console.info('usb case get_device_list is null')
368      expect(false).assertTrue();
369      return
370    }
371    var isRight = usb.hasRight(gDeviceList[0].name);
372    if (!isRight) {
373      usb.requestRight(gDeviceList[0].name).then(hasRight => {
374      }).catch(error => {
375        console.info('usb 10 requestRight error:' + error);
376      });
377      console.info('usb 10 requestRight end:');
378      CheckEmptyUtils.sleep(3000)
379    }
380
381    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
382    device.productId = 2 + 10000
383    try {
384      var usbDevicePipe = usb.connectDevice(device)
385    } catch (err) {
386      expect(true).assertTrue();
387      console.info('usb connectDevice fail:' + err);
388    }
389    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) +
390      ' productId ' + device.productId);
391    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
392    var isPipClose = usb.closePipe(usbDevicePipe);
393    console.info('usb case closePipe ret: ' + isPipClose);
394    expect(isPipClose).assertEqual(0);
395    console.info('usb connect_device_10 :  PASS');
396  })
397
398  /**
399   * @tc.number    : SUB_USB_connect_device_11
400   * @tc.name      : connectDevice
401   * @tc.desc      : 反向测试 clazz错误参数 打开设备
402   */
403  it('SUB_USB_connect_device_11', 0, function () {
404    console.info('usb connect_device_11 begin');
405    if (gDeviceList.length == 0) {
406      console.info('usb case get_device_list is null')
407      expect(false).assertTrue();
408      return
409    }
410    var isRight = usb.hasRight(gDeviceList[0].name);
411    if (!isRight) {
412      usb.requestRight(gDeviceList[0].name).then(hasRight => {
413      }).catch(error => {
414        console.info('usb 11 requestRight error:' + error);
415      });
416      console.info('usb 11 requestRight end:');
417      CheckEmptyUtils.sleep(3000)
418    }
419
420    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
421    device.clazz = 2 + 10000
422    try {
423      var usbDevicePipe = usb.connectDevice(device)
424    } catch (err) {
425      expect(true).assertTrue();
426      console.info('usb connectDevice fail:' + err);
427    }
428    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) + ' clazz ' + device.clazz);
429    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
430    var isPipClose = usb.closePipe(usbDevicePipe);
431    console.info('usb case closePipe ret: ' + isPipClose);
432    expect(isPipClose).assertEqual(0);
433    console.info('usb connect_device_11 :  PASS');
434  })
435
436  /**
437   * @tc.number    : SUB_USB_connect_device_12
438   * @tc.name      : connectDevice
439   * @tc.desc      : 反向测试 subclass错误参数 打开设备
440   */
441  it('SUB_USB_connect_device_12', 0, function () {
442    console.info('usb connect_device_12 begin');
443    if (gDeviceList.length == 0) {
444      console.info('usb case get_device_list is null')
445      expect(false).assertTrue();
446      return
447    }
448    var isRight = usb.hasRight(gDeviceList[0].name);
449    if (!isRight) {
450      usb.requestRight(gDeviceList[0].name).then(hasRight => {
451      }).catch(error => {
452        console.info('usb 12 requestRight error:' + error);
453      });
454      console.info('usb 12 requestRight end:');
455      CheckEmptyUtils.sleep(3000)
456    }
457
458    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
459    device.subclass = 2 + 10000
460    try {
461      var usbDevicePipe = usb.connectDevice(device)
462    } catch (err) {
463      expect(true).assertTrue();
464      console.info('usb connectDevice fail:' + err);
465    }
466    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) + ' subclass ' + device.subclass);
467    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
468    var isPipClose = usb.closePipe(usbDevicePipe);
469    console.info('usb case closePipe ret: ' + isPipClose);
470    expect(isPipClose).assertEqual(0);
471    console.info('usb connect_device_12 :  PASS');
472  })
473
474  /**
475   * @tc.number    : SUB_USB_connect_device_13
476   * @tc.name      : connectDevice
477   * @tc.desc      : 反向测试 protocol错误参数 打开设备
478   */
479  it('SUB_USB_connect_device_13', 0, function () {
480    console.info('usb connect_device_13 begin');
481    if (gDeviceList.length == 0) {
482      console.info('usb case get_device_list is null')
483      expect(false).assertTrue();
484      return
485    }
486    var isRight = usb.hasRight(gDeviceList[0].name);
487    if (!isRight) {
488      usb.requestRight(gDeviceList[0].name).then(hasRight => {
489      }).catch(error => {
490        console.info('usb 13 requestRight error:' + error);
491      });
492      console.info('usb 13 requestRight end:');
493      CheckEmptyUtils.sleep(3000)
494    }
495
496    var device = JSON.parse(JSON.stringify(gDeviceList[0]));
497    device.protocol = 2 + 10000
498    try {
499      var usbDevicePipe = usb.connectDevice(device)
500    } catch (err) {
501      expect(true).assertTrue();
502      console.info('usb connectDevice fail:' + err);
503    }
504    console.info('usb case connectDevice ret: ' + JSON.stringify(usbDevicePipe) + ' protocol ' + device.protocol);
505    expect(CheckEmptyUtils.isEmpty(usbDevicePipe)).assertFalse();
506    var isPipClose = usb.closePipe(usbDevicePipe);
507    console.info('usb case closePipe ret: ' + isPipClose);
508    expect(isPipClose).assertEqual(0);
509    console.info('usb connect_device_13 :  PASS');
510  })
511
512  /**
513   * @tc.number    : SUB_USB_has_right_02
514   * @tc.name      : hasRight
515   * @tc.desc      : 反向测试 给错误设备名字
516   */
517  it('SUB_USB_has_right_02', 0, function () {
518    console.info('usb has_right_02 begin');
519    if (gDeviceList.length == 0) {
520      console.info('usb case get_device_list is null')
521      expect(false).assertTrue();
522      return
523    }
524
525    for (var i = 0; i < gDeviceList.length; i++) {
526      var deviceName = gDeviceList[i].name
527      deviceName = deviceName + '$#'
528      var hasRight = usb.hasRight(deviceName)
529      console.info('usb has_right ret :' + hasRight);
530      expect(hasRight == false).assertTrue();
531    }
532
533    console.info('usb has_right_02 :  PASS');
534    expect(true).assertTrue();
535  })
536
537  /**
538   * @tc.number    : SUB_USB_has_right_03
539   * @tc.name      : hasRight
540   * @tc.desc      : 反向测试 给设备名字为字母
541   */
542  it('SUB_USB_has_right_03', 0, function () {
543    console.info('usb has_right_03 begin');
544    if (gDeviceList.length == 0) {
545      console.info('usb case get_device_list is null')
546      expect(false).assertTrue();
547      return
548    }
549
550    for (var i = 0; i < gDeviceList.length; i++) {
551      var deviceName = gDeviceList[i].name
552      deviceName = deviceName + 'abcdg'
553      var hasRight = usb.hasRight(deviceName)
554      console.info('usb hasRight ret :' + hasRight);
555      expect(hasRight == false).assertTrue();
556    }
557
558    console.info('usb has_right_03 :  PASS');
559    expect(true).assertTrue();
560  })
561
562  /**
563   * @tc.number    : SUB_USB_request_right_02
564   * @tc.name      : requestRight
565   * @tc.desc      : 反向测试 错误设备名字 请求权限
566   */
567  it('SUB_USB_request_right_02', 0, function () {
568    console.info('usb request_right_02 begin');
569    if (gDeviceList.length == 0) {
570      console.info('usb case get_device_list is null')
571      expect(false).assertTrue();
572      return
573    }
574
575    for (var i = 0; i < gDeviceList.length; i++) {
576      var diviceName = gDeviceList[i].name
577      diviceName = diviceName + '@#'
578      usb.requestRight(diviceName).then(hasRight => {
579        console.info('usb request_right ret :' + hasRight);
580        expect(hasRight).assertFalse();
581        console.info('usb request_right_02 :  PASS');
582      }).catch(error => {
583        expect(error).assertFalse();
584        console.info('usb request_right_02 error: ' + error);
585      });
586    }
587  })
588
589  /**
590   * @tc.number    : SUB_USB_request_right_03
591   * @tc.name      : requestRight
592   * @tc.desc      : 反向测试 设备名字为数字 请求权限
593   */
594  it('SUB_USB_request_right_03', 0, function () {
595    console.info('usb request_right_03 begin');
596    if (gDeviceList.length == 0) {
597      console.info('usb case get_device_list is null')
598      expect(false).assertTrue();
599      return
600    }
601
602    for (var i = 0; i < gDeviceList.length; i++) {
603      var diviceName = gDeviceList[i].name
604      diviceName = diviceName + '123'
605      usb.requestRight(diviceName).then(hasRight => {
606        console.info('usb request_right ret :' + hasRight);
607        expect(hasRight).assertFalse();
608        console.info('usb request_right_03 :  PASS');
609      }).catch(error => {
610        expect(error).assertFalse();
611        console.info('usb request_right_03 error: ' + error);
612      });
613    }
614  })
615})
616