diff --git a/interfaces/plugin/test/unittest/BUILD.gn b/interfaces/plugin/test/unittest/BUILD.gn index decb5d9c1573e63accee644dd4794347cc3f495d..5c72d6cf0f6a434ef7cf1b9738d2d5addec04091 100755 --- a/interfaces/plugin/test/unittest/BUILD.gn +++ b/interfaces/plugin/test/unittest/BUILD.gn @@ -16,6 +16,7 @@ group("unittest") { deps = [ "barometer:BarometerJsTest", "gyroscope:GyroscopeJsTest", + "pedometer:PedometerJsTest", "pedometer_detection:PedometerDetectionJsTest", "sensor:SensorJsTest", ] diff --git a/interfaces/plugin/test/unittest/pedometer/BUILD.gn b/interfaces/plugin/test/unittest/pedometer/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..ea5565011753fa827c7cda2500425b63cc44172f --- /dev/null +++ b/interfaces/plugin/test/unittest/pedometer/BUILD.gn @@ -0,0 +1,21 @@ +# Copyright (C) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/test.gni") + +module_output_path = "sensor/interfaces" +ohos_js_unittest("PedometerJsTest") { + module_out_path = module_output_path + hap_profile = "./config.json" + certificate_profile = "../signature/openharmony_core.p7b" +} diff --git a/interfaces/plugin/test/unittest/pedometer/ExampleJsunit.test.js b/interfaces/plugin/test/unittest/pedometer/ExampleJsunit.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e7e0d01e67b410b9bb3c09cec034b228d5059663 --- /dev/null +++ b/interfaces/plugin/test/unittest/pedometer/ExampleJsunit.test.js @@ -0,0 +1,514 @@ +/* + * Copyright (C) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import abilityAccessCtrl from '@ohos.abilityAccessCtrl' +import bundle from '@ohos.bundle' +import osAccount from '@ohos.account.osAccount' +import sensor from '@ohos.sensor' + +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' + +let PermissionFlag = { + PERMISSION_USER_SET:1, + PERMISSION_USER_FIXED:2, + PERMISSION_SYSTEM_FIXED:4 +} + +const PERMISSION_DENIED_CODE = 201 +const PARAMETER_ERROR_CODE = 401 +const PARAMETER_ERROR_MSG = 'The parameter invalid.' +const PERMISSION_DENIED_MSG = 'Permission denied.' +let tokenID = undefined +let permissionNameUser = 'ohos.permission.ACTIVITY_MOTION' + +describe("PedometerJsTest", function () { + function callback(data) { + console.info('callback' + JSON.stringify(data)); + expect(typeof(data.steps)).assertEqual('number'); + } + + function callback2(data) { + console.info('callback2' + JSON.stringify(data)); + expect(typeof(data.steps)).assertEqual('number'); + } + + beforeAll(async function() { + /* + * @tc.setup: setup invoked before all testcases + */ + console.info('beforeAll called') + try { + let accountManager = osAccount.getAccountManager(); + let userId = await accountManager.getOsAccountLocalIdFromProcess(); + let appInfo = await bundle.getApplicationInfo('com.example.myapplication', 0, userId); + tokenID = appInfo.accessTokenId; + console.log('AccessTokenId accessTokenId:' + appInfo.accessTokenId + ', name:' + appInfo.name + + ' ,bundleName:' + appInfo.bundleName) + } catch(err) { + console.error('exception in, msg:' + JSON.stringify(err)) + } + }) + + afterAll(function() { + /* + * @tc.teardown: teardown invoked after all testcases + */ + console.info('afterAll called') + }) + + beforeEach(function() { + /* + * @tc.setup: setup invoked before each testcases + */ + console.info('beforeEach called') + }) + + afterEach(function() { + /* + * @tc.teardown: teardown invoked after each testcases + */ + console.info('afterEach called') + let atManager = abilityAccessCtrl.createAtManager(); + atManager.revokeUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .catch((err) => { + console.info('err:' + JSON.stringify(err)); + expect(err.code).assertEqual(ERR_NOT_HAVE_PERMISSION); + }) + }) + + /* + * @tc.name:PedometerJsTest_001 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_001", 0, async function (done) { + console.info('----------------------PedometerJsTest_001---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.on(sensor.SensorId.PEDOMETER, callback); + setTimeout(() => { + sensor.off(sensor.SensorId.PEDOMETER); + done(); + }, 500); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_002 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_002", 0, async function (done) { + console.info('----------------------PedometerJsTest_002---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.on(sensor.SensorId.PEDOMETER, 5); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_003 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_003", 0, async function (done) { + console.info('----------------------PedometerJsTest_003---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.once(sensor.SensorId.PEDOMETER, callback); + setTimeout(() => { + expect(true).assertTrue(); + done(); + }, 500); + } catch (err) { + console.error('Once fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_004 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_004", 0, async function (done) { + console.info('----------------------PedometerJsTest_004---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.once(sensor.SensorId.PEDOMETER, callback, 5); + setTimeout(() => { + expect(true).assertTrue(); + done(); + }, 500); + } catch (err) { + console.error('Once fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_005 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_005", 0, async function (done) { + console.info('----------------------PedometerJsTest_005---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.once(sensor.SensorId.PEDOMETER, 5); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_006 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_006", 0, async function (done) { + console.info('----------------------PedometerJsTest_006---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.off(-1, callback); + } catch (err) { + expect(err.code).assertEqual(PARAMETER_ERROR_CODE) + expect(err.message).assertEqual(PARAMETER_ERROR_MSG) + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_007 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_007", 0, async function (done) { + console.info('----------------------PedometerJsTest_007---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.on(sensor.SensorId.PEDOMETER, callback); + sensor.on(sensor.SensorId.PEDOMETER, callback2); + setTimeout(()=>{ + sensor.off(sensor.SensorId.PEDOMETER); + done(); + }, 1000); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_008 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_008", 0, async function (done) { + console.info('----------------------PedometerJsTest_008---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.on(sensor.SensorId.PEDOMETER, callback); + sensor.on(sensor.SensorId.PEDOMETER, callback2); + setTimeout(() => { + sensor.off(sensor.SensorId.PEDOMETER, callback); + }, 500); + setTimeout(() => { + sensor.off(sensor.SensorId.PEDOMETER, callback2); + done(); + }, 1000); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_009 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_009", 0, async function (done) { + console.info('----------------------PedometerJsTest_009---------------------------'); + let atManager = abilityAccessCtrl.createAtManager(); + await atManager.grantUserGrantedPermission(tokenID, permissionNameUser, + PermissionFlag.PERMISSION_SYSTEM_FIXED) + .then(() => { + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.on(sensor.SensorId.PEDOMETER, callback); + sensor.once(sensor.SensorId.PEDOMETER, callback2); + setTimeout(() => { + sensor.off(sensor.SensorId.PEDOMETER); + done(); + }, 500); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) + .catch ((err) => { + console.error('err:' + JSON.stringify(err)); + done(); + }) + }) + + /* + * @tc.name:PedometerJsTest_010 + * @tc.desc:verify app info is not null + * @tc.type: FUNC + * @tc.require: Issue Number + */ + it("PedometerJsTest_010", 0, async function (done) { + console.info('----------------------PedometerJsTest_010---------------------------'); + try { + sensor.getSingleSensor(sensor.SensorId.PEDOMETER, (err, data) => { + if (err) { + console.error('getSingleSensor fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(false).assertTrue(); + done(); + } + try { + sensor.on(sensor.SensorId.PEDOMETER, callback); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(err.code).assertEqual(PERMISSION_DENIED_CODE); + expect(err.message).assertEqual(PERMISSION_DENIED_MSG); + done(); + } + }); + } catch (err) { + console.error('Sensor is not support'); + expect(err.code).assertEqual(PARAMETER_ERROR_CODE); + expect(err.message).assertEqual(PARAMETER_ERROR_MSG); + done(); + } + }) +}) \ No newline at end of file diff --git a/interfaces/plugin/test/unittest/pedometer/config.json b/interfaces/plugin/test/unittest/pedometer/config.json new file mode 100644 index 0000000000000000000000000000000000000000..95cf571910745e088948353e59786942610fee26 --- /dev/null +++ b/interfaces/plugin/test/unittest/pedometer/config.json @@ -0,0 +1,82 @@ +{ + "app": { + "bundleName": "com.example.myapplication", + "vendor": "example", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "reqPermissions": [ + { + "name": "ohos.permission.ACTIVITY_MOTION", + "reason": "need user ohos.permission.ACTIVITY_MOTION", + "usedScene": { + "ability": [ + ".MainAbility" + ], + "when": "inuse" + } + }, + { + "name": "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", + "reason": "user ohos.permission.GRANT_SENSITIVE_PERMISSIONS" + }, + { + "name": "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS", + "reason": "user ohos.permission.REVOKE_SENSITIVE_PERMISSIONS" + } + ], + "package": "com.example.myapplication", + "name": ".myapplication", + "deviceType": [ + "default", + "tablet" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "name": "com.example.myapplication.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "PedometerDetectionJsTest", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } + } + \ No newline at end of file diff --git a/interfaces/plugin/test/unittest/pedometer_detection/ExampleJsunit.test.js b/interfaces/plugin/test/unittest/pedometer_detection/ExampleJsunit.test.js index 615f0fb403f06d459a2078b36e3fc2b199c0f2ff..18ddf21c1d9f5c0359d49810a35793ca3ed0dc28 100755 --- a/interfaces/plugin/test/unittest/pedometer_detection/ExampleJsunit.test.js +++ b/interfaces/plugin/test/unittest/pedometer_detection/ExampleJsunit.test.js @@ -495,19 +495,12 @@ describe("PedometerDetectionJsTest", function () { expect(false).assertTrue(); done(); } - expect(typeof(data)).assertEqual("object"); - if (data) { - try { - sensor.on(sensor.SensorId.PEDOMETER_DETECTION, callback); - } catch (err) { - console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); - expect(err.code).assertEqual(PERMISSION_DENIED_CODE); - expect(err.message).assertEqual(PERMISSION_DENIED_MSG); - done(); - } - } else { - console.error('Non-mobile devices cannot be excluded'); - expect(true).assertTrue(); + try { + sensor.on(sensor.SensorId.PEDOMETER_DETECTION, callback); + } catch (err) { + console.error('On fail, errCode:' + err.code + ' ,msg:' + err.message); + expect(err.code).assertEqual(PERMISSION_DENIED_CODE); + expect(err.message).assertEqual(PERMISSION_DENIED_MSG); done(); } });