112636162Sopenharmony_ci/*
212636162Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
312636162Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
412636162Sopenharmony_ci * you may not use this file except in compliance with the License.
512636162Sopenharmony_ci * You may obtain a copy of the License at
612636162Sopenharmony_ci *
712636162Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
812636162Sopenharmony_ci *
912636162Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1012636162Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1112636162Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212636162Sopenharmony_ci * See the License for the specific language governing permissions and
1312636162Sopenharmony_ci * limitations under the License.
1412636162Sopenharmony_ci */
1512636162Sopenharmony_ci
1612636162Sopenharmony_ciimport usb from '@ohos.usbManager'
1712636162Sopenharmony_ciimport deviceManager from '@ohos.driver.deviceManager'
1812636162Sopenharmony_ciimport { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from 'deccjsunit/index'
1912636162Sopenharmony_ci
2012636162Sopenharmony_cidescribe("PermissionJsTest", function () {
2112636162Sopenharmony_ci    const TAG = "[PermissionJsTest]";
2212636162Sopenharmony_ci    const PERMISSION_DENIED_CODE = 201;
2312636162Sopenharmony_ci    const TEST_DEVICE_ID = 0;
2412636162Sopenharmony_ci    const TEST_DRIVER_UID = 'testDriverUid'
2512636162Sopenharmony_ci    const TEST_FUNCTION = () => {
2612636162Sopenharmony_ci        console.info("Test function is called");
2712636162Sopenharmony_ci    };
2812636162Sopenharmony_ci
2912636162Sopenharmony_ci    let deviceNum = 0;
3012636162Sopenharmony_ci    const isDeviceConnected = done => {
3112636162Sopenharmony_ci        if (deviceNum > 0) {
3212636162Sopenharmony_ci            console.info("Test USB device is connected");
3312636162Sopenharmony_ci            return true;
3412636162Sopenharmony_ci        }
3512636162Sopenharmony_ci        console.info("Test USB device is not connected");
3612636162Sopenharmony_ci        expect(true).assertTrue();
3712636162Sopenharmony_ci        if (typeof(done) === 'function') {
3812636162Sopenharmony_ci            done();
3912636162Sopenharmony_ci        }
4012636162Sopenharmony_ci        return false;
4112636162Sopenharmony_ci    }
4212636162Sopenharmony_ci
4312636162Sopenharmony_ci    beforeAll(function () {
4412636162Sopenharmony_ci        console.info('beforeAll called');
4512636162Sopenharmony_ci        try {
4612636162Sopenharmony_ci            const devicesList = usb.getDevices();
4712636162Sopenharmony_ci            if (Array.isArray(devicesList)) {
4812636162Sopenharmony_ci                deviceNum = devicesList.length;
4912636162Sopenharmony_ci            }
5012636162Sopenharmony_ci        } catch (err) {
5112636162Sopenharmony_ci            console.error(TAG, `getDevices failed, message is ${err.message}`);
5212636162Sopenharmony_ci        }
5312636162Sopenharmony_ci    })
5412636162Sopenharmony_ci
5512636162Sopenharmony_ci    afterAll(function () {
5612636162Sopenharmony_ci        console.info('afterAll called');
5712636162Sopenharmony_ci    })
5812636162Sopenharmony_ci
5912636162Sopenharmony_ci    beforeEach(function () {
6012636162Sopenharmony_ci        console.info('beforeEach called');
6112636162Sopenharmony_ci    })
6212636162Sopenharmony_ci
6312636162Sopenharmony_ci    afterEach(function () {
6412636162Sopenharmony_ci        console.info('afterEach called');
6512636162Sopenharmony_ci    })
6612636162Sopenharmony_ci
6712636162Sopenharmony_ci    /*
6812636162Sopenharmony_ci     * @tc.name:Permission_queryDevices_001
6912636162Sopenharmony_ci     * @tc.desc:verify permission of queryDevices
7012636162Sopenharmony_ci     * @tc.type: FUNC
7112636162Sopenharmony_ci     */
7212636162Sopenharmony_ci    it("Permission_queryDevices_001", 0, done => {
7312636162Sopenharmony_ci        console.info('----------------------Permission_queryDevices_001---------------------------');
7412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
7512636162Sopenharmony_ci            return;
7612636162Sopenharmony_ci        }
7712636162Sopenharmony_ci        try {
7812636162Sopenharmony_ci            deviceManager.queryDevices();
7912636162Sopenharmony_ci            expect(false).assertTrue();
8012636162Sopenharmony_ci            done();
8112636162Sopenharmony_ci        } catch (err) {
8212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
8312636162Sopenharmony_ci            done();
8412636162Sopenharmony_ci        }
8512636162Sopenharmony_ci    });
8612636162Sopenharmony_ci
8712636162Sopenharmony_ci    /*
8812636162Sopenharmony_ci     * @tc.name:Permission_bindDevice_001
8912636162Sopenharmony_ci     * @tc.desc:verify permission of bindDevice
9012636162Sopenharmony_ci     * @tc.type: FUNC
9112636162Sopenharmony_ci     */
9212636162Sopenharmony_ci    it("Permission_bindDevice_001", 0, done => {
9312636162Sopenharmony_ci        console.info('----------------------Permission_bindDevice_001---------------------------');
9412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
9512636162Sopenharmony_ci            return;
9612636162Sopenharmony_ci        }
9712636162Sopenharmony_ci        try {
9812636162Sopenharmony_ci            deviceManager.bindDevice(TEST_DEVICE_ID, TEST_FUNCTION, TEST_FUNCTION);
9912636162Sopenharmony_ci            expect(false).assertTrue();
10012636162Sopenharmony_ci            done();
10112636162Sopenharmony_ci        } catch (err) {
10212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
10312636162Sopenharmony_ci            done();
10412636162Sopenharmony_ci        }
10512636162Sopenharmony_ci    });
10612636162Sopenharmony_ci
10712636162Sopenharmony_ci    /*
10812636162Sopenharmony_ci     * @tc.name:Permission_bindDevice_002
10912636162Sopenharmony_ci     * @tc.desc:verify permission of bindDevice
11012636162Sopenharmony_ci     * @tc.type: FUNC
11112636162Sopenharmony_ci     */
11212636162Sopenharmony_ci    it("Permission_bindDevice_002", 0, async done => {
11312636162Sopenharmony_ci        console.info('----------------------Permission_bindDevice_002---------------------------');
11412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
11512636162Sopenharmony_ci            return;
11612636162Sopenharmony_ci        }
11712636162Sopenharmony_ci        try {
11812636162Sopenharmony_ci            await deviceManager.bindDevice(TEST_DEVICE_ID, TEST_FUNCTION);
11912636162Sopenharmony_ci            expect(false).assertTrue();
12012636162Sopenharmony_ci            done();
12112636162Sopenharmony_ci        } catch (err) {
12212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
12312636162Sopenharmony_ci            done();
12412636162Sopenharmony_ci        }
12512636162Sopenharmony_ci    });
12612636162Sopenharmony_ci
12712636162Sopenharmony_ci    /*
12812636162Sopenharmony_ci     * @tc.name:Permission_bindDeviceDriver_001
12912636162Sopenharmony_ci     * @tc.desc:verify permission of bindDeviceDriver
13012636162Sopenharmony_ci     * @tc.type: FUNC
13112636162Sopenharmony_ci     */
13212636162Sopenharmony_ci    it("Permission_bindDeviceDriver_001", 0, done => {
13312636162Sopenharmony_ci        console.info('----------------------Permission_bindDeviceDriver_001---------------------------');
13412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
13512636162Sopenharmony_ci            return;
13612636162Sopenharmony_ci        }
13712636162Sopenharmony_ci        try {
13812636162Sopenharmony_ci            deviceManager.bindDeviceDriver(TEST_DEVICE_ID, TEST_FUNCTION, TEST_FUNCTION);
13912636162Sopenharmony_ci            expect(false).assertTrue();
14012636162Sopenharmony_ci            done();
14112636162Sopenharmony_ci        } catch (err) {
14212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
14312636162Sopenharmony_ci            done();
14412636162Sopenharmony_ci        }
14512636162Sopenharmony_ci    });
14612636162Sopenharmony_ci
14712636162Sopenharmony_ci    /*
14812636162Sopenharmony_ci     * @tc.name:Permission_bindDeviceDriver_002
14912636162Sopenharmony_ci     * @tc.desc:verify permission of bindDeviceDriver
15012636162Sopenharmony_ci     * @tc.type: FUNC
15112636162Sopenharmony_ci     */
15212636162Sopenharmony_ci    it("Permission_bindDeviceDriver_002", 0, async done => {
15312636162Sopenharmony_ci        console.info('----------------------Permission_bindDeviceDriver_002---------------------------');
15412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
15512636162Sopenharmony_ci            return;
15612636162Sopenharmony_ci        }
15712636162Sopenharmony_ci        try {
15812636162Sopenharmony_ci            await deviceManager.bindDeviceDriver(TEST_DEVICE_ID, TEST_FUNCTION);
15912636162Sopenharmony_ci            expect(false).assertTrue();
16012636162Sopenharmony_ci            done();
16112636162Sopenharmony_ci        } catch (err) {
16212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
16312636162Sopenharmony_ci            done();
16412636162Sopenharmony_ci        }
16512636162Sopenharmony_ci    });
16612636162Sopenharmony_ci
16712636162Sopenharmony_ci    /*
16812636162Sopenharmony_ci     * @tc.name:Permission_unbindDevice_001
16912636162Sopenharmony_ci     * @tc.desc:verify permission of unbindDevice
17012636162Sopenharmony_ci     * @tc.type: FUNC
17112636162Sopenharmony_ci     */
17212636162Sopenharmony_ci    it("Permission_unbindDevice_001", 0, done => {
17312636162Sopenharmony_ci        console.info('----------------------Permission_unbindDevice_001---------------------------');
17412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
17512636162Sopenharmony_ci            return;
17612636162Sopenharmony_ci        }
17712636162Sopenharmony_ci        try {
17812636162Sopenharmony_ci            deviceManager.unbindDevice(TEST_DEVICE_ID, TEST_FUNCTION);
17912636162Sopenharmony_ci            expect(false).assertTrue();
18012636162Sopenharmony_ci            done();
18112636162Sopenharmony_ci        } catch (err) {
18212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
18312636162Sopenharmony_ci            done();
18412636162Sopenharmony_ci        }
18512636162Sopenharmony_ci    });
18612636162Sopenharmony_ci
18712636162Sopenharmony_ci    /*
18812636162Sopenharmony_ci     * @tc.name:Permission_unbindDevice_002
18912636162Sopenharmony_ci     * @tc.desc:verify permission of unbindDevice
19012636162Sopenharmony_ci     * @tc.type: FUNC
19112636162Sopenharmony_ci     */
19212636162Sopenharmony_ci    it("Permission_unbindDevice_002", 0, async done => {
19312636162Sopenharmony_ci        console.info('----------------------Permission_unbindDevice_002---------------------------');
19412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
19512636162Sopenharmony_ci            return;
19612636162Sopenharmony_ci        }
19712636162Sopenharmony_ci        try {
19812636162Sopenharmony_ci            await deviceManager.unbindDevice(TEST_DEVICE_ID);
19912636162Sopenharmony_ci            expect(false).assertTrue();
20012636162Sopenharmony_ci            done();
20112636162Sopenharmony_ci        } catch (err) {
20212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
20312636162Sopenharmony_ci            done();
20412636162Sopenharmony_ci        }
20512636162Sopenharmony_ci    });
20612636162Sopenharmony_ci
20712636162Sopenharmony_ci    /*
20812636162Sopenharmony_ci     * @tc.name:Permission_queryDeviceInfo_001
20912636162Sopenharmony_ci     * @tc.desc:verify permission of queryDeviceInfo
21012636162Sopenharmony_ci     * @tc.type: FUNC
21112636162Sopenharmony_ci     */
21212636162Sopenharmony_ci    it("Permission_queryDeviceInfo_001", 0, done => {
21312636162Sopenharmony_ci        console.info('----------------------Permission_queryDeviceInfo_001---------------------------');
21412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
21512636162Sopenharmony_ci            return;
21612636162Sopenharmony_ci        }
21712636162Sopenharmony_ci        try {
21812636162Sopenharmony_ci            deviceManager.queryDeviceInfo(TEST_DEVICE_ID);
21912636162Sopenharmony_ci            expect(false).assertTrue();
22012636162Sopenharmony_ci            done();
22112636162Sopenharmony_ci        } catch (err) {
22212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
22312636162Sopenharmony_ci            done();
22412636162Sopenharmony_ci        }
22512636162Sopenharmony_ci    });
22612636162Sopenharmony_ci
22712636162Sopenharmony_ci    /*
22812636162Sopenharmony_ci     * @tc.name:Permission_queryDriverInfo_001
22912636162Sopenharmony_ci     * @tc.desc:verify permission of queryDriverInfo
23012636162Sopenharmony_ci     * @tc.type: FUNC
23112636162Sopenharmony_ci     */
23212636162Sopenharmony_ci    it("Permission_queryDriverInfo_001", 0, done => {
23312636162Sopenharmony_ci        console.info('----------------------Permission_queryDriverInfo_001---------------------------');
23412636162Sopenharmony_ci        if (!isDeviceConnected(done)) {
23512636162Sopenharmony_ci            return;
23612636162Sopenharmony_ci        }
23712636162Sopenharmony_ci        try {
23812636162Sopenharmony_ci            deviceManager.queryDriverInfo(TEST_DRIVER_UID);
23912636162Sopenharmony_ci            expect(false).assertTrue();
24012636162Sopenharmony_ci            done();
24112636162Sopenharmony_ci        } catch (err) {
24212636162Sopenharmony_ci            expect(err.code).assertEqual(PERMISSION_DENIED_CODE);
24312636162Sopenharmony_ci            done();
24412636162Sopenharmony_ci        }
24512636162Sopenharmony_ci    });
24612636162Sopenharmony_ci});