diff --git a/communication/BUILD.gn b/communication/BUILD.gn index db7a546a22887ea99bc1d3539a7a5eb76ea09ebd..3f600974f5776f2fee1f65ae37a4c042b508c423 100644 --- a/communication/BUILD.gn +++ b/communication/BUILD.gn @@ -22,6 +22,7 @@ group("communication") { "bluetooth_standard:ActsBluetoothJsTest", "dsoftbus/rpc:ActsRpcJsTest", "dsoftbus/rpc_server:ActsRpcJsServer", + "nfc_Controller:ActsNFCJSTest", "wifi_p2p:ActsP2PJSTest", "wifi_standard:ActsWifiJSTest", ] diff --git a/communication/nfc_Controller/BUILD.gn b/communication/nfc_Controller/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..06d8e28a0e95cb6cc69ede6a40186630a2a85796 --- /dev/null +++ b/communication/nfc_Controller/BUILD.gn @@ -0,0 +1,35 @@ +# Copyright (C) 2022 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("//test/xts/tools/build/suite.gni") + +ohos_js_hap_suite("ActsNFCJSTest") { + hap_profile = "./src/main/config.json" + deps = [ + ":nfc_js_assets", + ":nfc_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "ActsNFCJSTest" + part_name = "nfc" + subsystem_name = "communication" +} +ohos_js_assets("nfc_js_assets") { + js2abc = true + hap_profile = "./src/main/config.json" + source_dir = "./src/main/js" +} +ohos_resources("nfc_resources") { + sources = [ "./src/main/resources" ] + hap_profile = "./src/main/config.json" +} diff --git a/communication/nfc_Controller/Test.json b/communication/nfc_Controller/Test.json new file mode 100644 index 0000000000000000000000000000000000000000..f0fb0ef9b119ece50a78f6b119873b27d833cadf --- /dev/null +++ b/communication/nfc_Controller/Test.json @@ -0,0 +1,20 @@ +{ + "description": "Configuration for nfc js api Tests", + "driver": { + "type": "OHJSUnitTest", + "test-timeout": "600000", + "shell-timeout": "600000", + "testcase-timeout": "600000", + "bundle-name": "ohos.acts.communication.nfc.nfcdevice", + "package-name": "ohos.acts.communication.nfc.nfcdevice" + }, + "kits": [ + { + "test-file-name": [ + "ActsNFCJSTest.hap" + ], + "type": "AppInstallKit", + "cleanup-apps": true + } + ] +} diff --git a/communication/nfc_Controller/signature/openharmony_sx.p7b b/communication/nfc_Controller/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..66b4457a8a81fb8d3356cf46d67226c850944858 Binary files /dev/null and b/communication/nfc_Controller/signature/openharmony_sx.p7b differ diff --git a/communication/nfc_Controller/src/main/config.json b/communication/nfc_Controller/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..c2c90a7ab9801d4f23d6c4a13d6e509c6a88eb5b --- /dev/null +++ b/communication/nfc_Controller/src/main/config.json @@ -0,0 +1,221 @@ +{ + "app": { + "bundleName": "ohos.acts.communication.nfc.nfcdevice", + "vendor": "acts", + "version": { + "code": 1000000, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.acts.communication.nfc.nfcdevice", + "name": ".entry", + "mainAbility": ".MainAbility", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "nfc_standard", + "moduleType": "entry" + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "formsEnabled": false, + "name": ".MainAbility", + "srcLanguage": "js", + "srcPath": "MainAbility", + "icon": "$media:icon", + "description": "$string:MainAbility_desc", + "label": "$string:MainAbility_label", + "type": "page", + "visible": true, + "launchType": "standard" + }, + { + "orientation": "unspecified", + "formsEnabled": false, + "name": ".TestAbility", + "srcLanguage": "js", + "srcPath": "TestAbility", + "icon": "$media:icon", + "description": "$string:TestAbility_desc", + "label": "$string:TestAbility_label", + "type": "page", + "visible": true, + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + }, + { + "pages": [ + "pages/index/index" + ], + "name": ".TestAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ], + "defPermissions": [ + { + "availableScope": [], + "grantMode": "user_grant", + "name": "ohos.permission.ACCESS_LOCATION", + "availableLevel": "system_basic", + "provisionEnable": true, + "distributedSceneEnable": true, + "label": "ACCESS_LOCATION label", + "description": "ACCESS_LOCATION description" + }, + { + "availableScope": [], + "grantMode": "system_grant", + "name": "ohos.permission.MANAGE_SECURE_SETTINGS", + "availableLevel": "system_basic", + "provisionEnable": true, + "distributedSceneEnable": false, + "label": "MANAGE_SECURE_SETTINGS label", + "description": "MANAGE_SECURE_SETTINGS description" + }, + { + "availableScope": [], + "grantMode": "user_grant", + "name": "ohos.permission.LOCATION", + "availableLevel": "system_basic", + "provisionEnable": true, + "distributedSceneEnable": true, + "label": "LOCATION label", + "description": "LOCATION description" + } + ], + "reqPermissions": [ + { + "name": "ohos.permission.MANAGE_SECURE_SETTINGS", + "reason": "need use ohos.permission.MANAGE_SECURE_SETTINGS" + }, + { + "name": "ohos.permission.NFC_CARD_EMULATION", + "reason": "use ohos.permission.SET_nfc_INFO" + }, + { + "name": "ohos.permission.MANAGE_nfc_CONNECTION", + "reason": "use ohos.permission.MANAGE_nfc_CONNECTION" + }, + { + "name": "ohos.permission.NFC_TAG", + "reason": "use ohos.permission.NFC_TAG" + }, + { + "name": "ohos.permission.GET_nfc_CONFIG", + "reason": "use ohos.permission.GET_nfc_CONFIG" + }, + { + "name": "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED", + "reason": "use ohos.permission.GET_BUNDLE_INFO_PRIVILEGED" + }, + { + "name": "ohos.permission.GET_nfc_LOCAL_MAC", + "reason": "use ohos.permission.GET_nfc_LOCAL_MAC" + }, + { + "name": "ohos.permission.GET_nfc_PEERS_MAC", + "reason": "use ohos.permission.GET_nfc_PEERS_MAC" + }, + { + "name": "ohos.permission.MANAGE_nfc_HOTSPOT", + "reason": "use ohos.permission.MANAGE_nfc_HOTSPOT" + }, + { + "name": "ohos.permission.GET_nfc_INFO_INTERNAL", + "reason": "use ohos.permission.GET_nfc_INFO_INTERNAL" + }, + { + "name": "ohos.permission.LOCATION", + "reason": "need use ohos.permission.LOCATION", + "usedScene": { + "ability": [ + "ohos.acts.communication.nfc.nfcdevice" + ], + "when": "inuse" + } + }, + { + "name": "ohos.permission.ACCESS_LOCATION", + "reason": "need use ohos.permission.ACCESS_LOCATION", + "usedScene": { + "ability": [ + "ohos.acts.communication.nfc.nfcdevice" + ], + "when": "inuse" + } + }, + { + "name": "ohos.permission.LOCATION_IN_BACKGROUND", + "reason": "need use ohos.permission.LOCATION_IN_BACKGROUND", + "usedScene": { + "ability": [ + "ohos.acts.communication.nfc.nfcdevice" + ], + "when": "inuse" + } + }, + { + "name": "ohos.permission.MANAGE_SECURE_SETTINGS", + "reason": "need use ohos.permission.MANAGE_SECURE_SETTINGS", + "usedScene": { + "ability": [ + "ohos.acts.communication.nfc.nfcdevice" + ], + "when": "inuse" + } + }, + { + "name": "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", + "reason": "use ohos.permission.GRANT_SENSITIVE_PERMISSIONS" + }, + { + "name": "ohos.permission.REVOKE_SENSITIVE_PERMISSIONS", + "reason": "use ohos.permission.REVOKE_SENSITIVE_PERMISSIONS" + }, + { + "name": "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED" + }, + { + "name": "ohos.permission.GET_BUNDLE_INFO" + } + ], + "testRunner": { + "name": "OpenHarmonyTestRunner", + "srcPath": "TestRunner" + }, + "srcPath": "" + } +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/js/MainAbility/app.js b/communication/nfc_Controller/src/main/js/MainAbility/app.js new file mode 100644 index 0000000000000000000000000000000000000000..8fe0b77dcef1db4bb1706399fd481541de8166cd --- /dev/null +++ b/communication/nfc_Controller/src/main/js/MainAbility/app.js @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2022 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. + */ + +export default { + onCreate() { + console.info('AceApplication onCreate'); + }, + onDestroy() { + console.info('AceApplication onDestroy'); + } +}; diff --git a/communication/nfc_Controller/src/main/js/MainAbility/i18n/en-US.json b/communication/nfc_Controller/src/main/js/MainAbility/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c --- /dev/null +++ b/communication/nfc_Controller/src/main/js/MainAbility/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + } +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/js/MainAbility/i18n/zh-CN.json b/communication/nfc_Controller/src/main/js/MainAbility/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f --- /dev/null +++ b/communication/nfc_Controller/src/main/js/MainAbility/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + } +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.css b/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..3a8326a076cdb9ecabf543df9dba84240f5b52a4 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.css @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2022 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. + */ + + +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.title { + font-size: 100px; +} diff --git a/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.hml b/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..0053057b5ff7362e00db48887ee1663cffa35988 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.hml @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2022 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. + */ + + +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.js b/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..3300c9cfc4ff94297fee72c00d5c28d3114854f3 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/MainAbility/pages/index/index.js @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2022 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. + */ + + + + +export default { + data: { + title: '', + myTimeout: 25000 + }, + onInit() { + this.title = this.$t('strings.world'); + }, + onShow() { + console.info('onShow finish') + }, + onReady() { + console.info('onReady finish') + }, +} + diff --git a/communication/nfc_Controller/src/main/js/TestAbility/app.js b/communication/nfc_Controller/src/main/js/TestAbility/app.js new file mode 100644 index 0000000000000000000000000000000000000000..cdc31f3dcf031e2f6a7665d9653e53bb649e21c5 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestAbility/app.js @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2022 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +import { Hypium } from '@ohos/hypium' +import testsuite from '../test/List.test' + +export default { + onCreate() { + console.info('TestApplication onCreate') + var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + console.info('start run testcase!!!') + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + }, + onDestroy() { + console.info("TestApplication onDestroy"); + } +}; diff --git a/communication/nfc_Controller/src/main/js/TestAbility/i18n/en-US.json b/communication/nfc_Controller/src/main/js/TestAbility/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..3cb24b374b1d919ca8eac0638f361692b603a900 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestAbility/i18n/en-US.json @@ -0,0 +1,8 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + }, + "Files": { + } +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/js/TestAbility/i18n/zh-CN.json b/communication/nfc_Controller/src/main/js/TestAbility/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..c804e32c0c3103929baca5617cdac70be11fdba1 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestAbility/i18n/zh-CN.json @@ -0,0 +1,8 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + }, + "Files": { + } +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.css b/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..b1bcd43387ba131cc1d30975ff7508a6f8084a4b --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.css @@ -0,0 +1,30 @@ +.container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + left: 0px; + top: 0px; + width: 100%; + height: 100%; +} + +.title { + font-size: 60px; + text-align: center; + width: 100%; + height: 40%; + margin: 10px; +} + +@media screen and (device-type: phone) and (orientation: landscape) { + .title { + font-size: 60px; + } +} + +@media screen and (device-type: tablet) and (orientation: landscape) { + .title { + font-size: 100px; + } +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.hml b/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..f629c71a9be857db6cdf94149652a191b9b272ea --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.hml @@ -0,0 +1,5 @@ +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.js b/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..88b083a7f6b979019d6a2c5ad20b19c5fd43286b --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestAbility/pages/index/index.js @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022 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. + */ + +export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + } +} + + + diff --git a/communication/nfc_Controller/src/main/js/TestRunner/OpenHarmonyTestRunner.js b/communication/nfc_Controller/src/main/js/TestRunner/OpenHarmonyTestRunner.js new file mode 100644 index 0000000000000000000000000000000000000000..c5fa8620ca77d381f20b65a903b833e6e3378c97 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/TestRunner/OpenHarmonyTestRunner.js @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s itName', + '-s level', '-s testType', '-s size', '-s timeout', + '-s package', '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams += ' ' + key + ' ' + parameters[key] + } + } + return targetParams.trim() +} + + export default { + onPrepare() { + console.info('OpenHarmonyTestRunner OnPrepare') + }, + onRun() { + console.log('OpenHarmonyTestRunner onRun run') + var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + + var testAbilityName = abilityDelegatorArguments.parameters['-p'] + '.TestAbility' + + var cmd = 'aa start -d 0 -a ' + testAbilityName + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters["-D"] + console.info('debug value : '+debug) + if (debug == 'true') + { + cmd += ' -D' + } + console.info('cmd : '+cmd) + abilityDelegator.executeShellCommand(cmd, (err, data) => { + console.info('executeShellCommand : err : ' + JSON.stringify(err)); + console.info('executeShellCommand : data : ' + data.stdResult); + console.info('executeShellCommand : data : ' + data.exitCode); + }) + } +}; diff --git a/communication/nfc_Controller/src/main/js/test/List.test.js b/communication/nfc_Controller/src/main/js/test/List.test.js new file mode 100644 index 0000000000000000000000000000000000000000..7bb31ffc969e0c8239793dfb0c7f20558bac0467 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/test/List.test.js @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2022 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 nfcControllerTest from './nfc.Controller.js' +import parameter from '@ohos.systemparameter'; +let info = parameter.getSync("const.SystemCapability.Communication.NFC.Core" ,"false"); +export default function testsuite() { +if (info != "false") +{ + nfcControllerTest(); +} +} diff --git a/communication/nfc_Controller/src/main/js/test/nfc.Controller.js b/communication/nfc_Controller/src/main/js/test/nfc.Controller.js new file mode 100644 index 0000000000000000000000000000000000000000..669a9021b3e9e2631ed8d99fe039e9e66a9421c5 --- /dev/null +++ b/communication/nfc_Controller/src/main/js/test/nfc.Controller.js @@ -0,0 +1,257 @@ +/* + * Copyright (C) 2022 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 tag from '@ohos.nfc.tag'; +import controller from '@ohos.nfc.controller'; +import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from '@ohos/hypium' + + +let aTag = { + "uid": "15273952", + "technology": [1, 2], + "extrasData": [ + { + "sak": 0x08, "atqa": "B000" + }, + { + "appData": "A0C0", "protocolInfo": "131F" + } + ], + "tagRfDiscId": 1, +}; + +let vTag = { + "uid": "17293952", + "technology": [ 5 ], + "extrasData": [{"responseFlags": 0xA0, "dsfId": 0x13}], + "tagRfDiscId": 1, +}; + +let bTag = { + "uid": "15273952", + "technology": [1, 2], + "extrasData": [ + { + "sak": 0x08, "atqa": "B000" + }, + { + "appData": "A0C0", "protocolInfo": "131F" + } + ], + "tagRfDiscId": 1, +}; + +let fTag = { + "uid": "15273952", + "technology": [2, 4], + "extrasData": [ + { + "appData": "A0C0", "protInfo": "131F" + }, + { + "systemCode": "A0C0", "pmm": "131F" + } + ], + "tagRfDiscId": 1, +}; + +function sleep(delay) { // delay x ms + let start = (new Date()).getTime(); + while ((new Date()).getTime() - start < delay) { + continue; + } +} + +let NfcState={ + STATE_OFF : 1, + STATE_TURNING_ON : 2, + STATE_ON : 3, + STATE_TURNING_OFF : 4, +} + +export default function nfcControllerTest() { + describe('nfcControllerTest', function () { + beforeEach(function () { + console.info("[NFC_test]beforeEach start" ); + }) + afterEach(async function () { + console.info("[NFC_test]afterEach start" ); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_Cont_0100 + * @tc.name Test on_off_openNfcapi + * @tc.desc Register the NFC switch status event and enable the NFC switch. + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_Cont_0100', 0, function () { + let NFC_STATE_NOTIFY = "nfcStateChange"; + let recvNfcStateNotifyFunc = result => { + console.info("nfc state receive state ->" + result); + expect(result != null).assertTrue(); + } + controller.on(NFC_STATE_NOTIFY, recvNfcStateNotifyFunc); + try { + let openNfcswitch = controller.openNfc(); + sleep(5000); + console.info('[nfc_js] open Nfc switch ->' + openNfcswitch); + expect(openNfcswitch===undefined || openNfcswitch===true).assertTrue(); + }catch(error) { + console.info('[nfc_js] Failed to enable the switch ->' + error); + expect(error != null).assertTrue(); + } + controller.off(NFC_STATE_NOTIFY, recvNfcStateNotifyFunc); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_Cont_0200 + * @tc.name Test isNfcAvailableapi + * @tc.desc Check whether the NFC function is enabled. + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_Cont_0200', 0, function () { + let nfcisAvailable = controller.isNfcAvailable(); + expect(nfcisAvailable).assertTrue(); + console.info('[nfc_js] Nfc Available ->' + JSON.stringify(nfcisAvailable)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_Cont_0300 + * @tc.name Test isNfcOpenapi + * @tc.desc Check whether the NFC function is enabled. + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_Cont_0300', 0, function () { + let nfcswitchis = controller.isNfcOpen(); + expect(nfcswitchis).assertTrue(); + console.info('[nfc_js] Nfc isopen state is ->' + JSON.stringify(nfcswitchis)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_Cont_0400 + * @tc.name Test isNfcAvailable_isNfcOpenapi + * @tc.desc Check whether the NFC function is enabled on the device. + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_Cont_0400', 0, function () { + let nfcisAvailable1 = controller.isNfcAvailable(); + expect(nfcisAvailable1).assertTrue(); + console.info('[nfc_js] NfcAvailable 1 ->' + JSON.stringify(nfcisAvailable1)); + let nfcenable1 = controller.isNfcOpen(); + expect(nfcenable1).assertTrue(); + console.info('[nfc_js] Nfc isopen 1 state is ->' + JSON.stringify(nfcenable1)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_Cont_0500 + * @tc.name Test getNfcStateapi + * @tc.desc Querying the Status When NFC Is Enabled + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_Cont_0500', 0, function () { + let checkopennfc = controller.getNfcState(); + expect(checkopennfc).assertEqual(NfcState.STATE_ON); + console.log("[nfc_test] checkopen the state of nfc-> " + JSON.stringify(checkopennfc)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_Cont_0600 + * @tc.name Test closeNfcapi + * @tc.desc Deregister the NFC switch status event and disable the NFC. + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_Cont_0600', 0, function () { + try { + let closeNfc = controller.closeNfc(); + console.info('[nfc_js] clocse Nfc switch ->' + closeNfc); + expect(closeNfc===undefined || closeNfc===true).assertTrue(); + }catch(error) { + console.info('[nfc_js] Failed to disable the switch ->' + error ); + expect(error!=null).assertTrue(); + } + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_getTag_js_0700 + * @tc.name Test getNfcATagapi + * @tc.desc Obtaining an NFC Type A Tag Object + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_getTag_js_0700', 0, function () { + let taga = tag.getNfcATag(aTag); + expect(taga !=null).assertTrue(); + console.info('aTag is--<-!!!->' + JSON.stringify(taga)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_getTag_js_0800 + * @tc.name Test getNfcVTagapi + * @tc.desc Obtaining an NFC Type V Tag Object + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_getTag_js_0800', 0, function () { + let tagV = tag.getNfcVTag(vTag); + expect(vTag !=null).assertTrue(); + console.info('vTag is--<-!!!->' + JSON.stringify(tagV)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_getTag_js_0900 + * @tc.name Test getNfcBTagapi + * @tc.desc Obtaining an NFC Type B Tag Object + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_getTag_js_0900', 0, function () { + let tagB = tag.getNfcBTag(bTag); + expect(tagB !=null).assertTrue(); + console.info('bTag is--<-!!!->' + JSON.stringify(tagB)); + }) + + /** + * @tc.number SUB_COMMUNICATION_NFC_getTag_js_1000 + * @tc.name Test getNfcFTagapi + * @tc.desc Obtaining an NFC Type F Tag Object + * @tc.size since 7 + * @tc.type Function + * @tc.level Level 2 + */ + it('SUB_COMMUNICATION_NFC_getTag_js_1000', 0, function () { + let tagF = tag.getNfcFTag(fTag); + expect(tagF !=null).assertTrue(); + console.info('fTag is--<-!!!->' + JSON.stringify(tagF)); + }) + console.log("*************[nfc_test] start nfc js unit test end*************"); + }) +} + diff --git a/communication/nfc_Controller/src/main/resources/base/element/string.json b/communication/nfc_Controller/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..d4b2a0a059d21198f9767cea679a5cc2bb8f6dad --- /dev/null +++ b/communication/nfc_Controller/src/main/resources/base/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "app_name", + "value": "OsAccountTest" + }, + { + "name": "mainability_description", + "value": "JS_Phone_Empty Feature Ability" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "label" + }, + { + "name": "TestAbility_desc", + "value": "description" + }, + { + "name": "TestAbility_label", + "value": "label" + } + ] +} \ No newline at end of file diff --git a/communication/nfc_Controller/src/main/resources/base/media/icon.png b/communication/nfc_Controller/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/communication/nfc_Controller/src/main/resources/base/media/icon.png differ