diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 1683754ed827831f3b58b898447b8b22d2b06648..96569ac4a1637fa2163731614cd747cfb6fd9ab5 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -18,6 +18,7 @@ group("unittest") { "file_share_native:file_share_test", "file_uri_native:file_uri_test", "file_uri_ndk_test:file_uri_ndk_test", + "js_file_permission_test:unittest", "js_file_uri_test:FileUriTest", "remote_file_share:remote_file_share_test", "resource/bundle_dependencies/fileShareA:filesharea", diff --git a/test/unittest/js_file_permission_test/BUILD.gn b/test/unittest/js_file_permission_test/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..61b4f7ca2f6f81af809d5d53e2e6cd7d20f05ac3 --- /dev/null +++ b/test/unittest/js_file_permission_test/BUILD.gn @@ -0,0 +1,23 @@ +# Copyright (C) 2024 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") + +#################################group######################################### +group("unittest") { + testonly = true + deps = [] + + deps += [ "permission:FileShareTestPermission" ] + deps += [ "nopermission:FileShareTestNoPermission" ] +} +############################################################################### diff --git a/test/unittest/js_file_permission_test/nopermission/BUILD.gn b/test/unittest/js_file_permission_test/nopermission/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..2ca47563a5ad011c0e5d960fdbd6e401fed73963 --- /dev/null +++ b/test/unittest/js_file_permission_test/nopermission/BUILD.gn @@ -0,0 +1,21 @@ +# Copyright (C) 2024 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") + +ohos_js_unittest("FileShareTestNoPermission") { + module_out_path = "filemanagement/app_file_service" + + hap_profile = "./config.json" + + certificate_profile = "./signature/openharmony_sx.p7b" +} diff --git a/test/unittest/js_file_permission_test/nopermission/FilePermission.test.js b/test/unittest/js_file_permission_test/nopermission/FilePermission.test.js new file mode 100644 index 0000000000000000000000000000000000000000..44937de0a4c47d84bac1ca00d4860b014796e79d --- /dev/null +++ b/test/unittest/js_file_permission_test/nopermission/FilePermission.test.js @@ -0,0 +1,222 @@ +/* + * Copyright (C) 2024 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 {describe, beforeAll, afterAll, it, expect} from 'deccjsunit/index' +import fileShare from '@ohos.fileshare' +import fileuri from '@ohos.file.fileuri' +import fs from '@ohos.file.fs' + +const DEVICE_TYPE_ERR = 801; +const PERMISSION_ERR = 201; + +describe('FileShareJSTest', function () { + beforeAll(async function () { + console.info('beforeAll'); + }) + + afterAll(async function () { + console.info('afterAll'); + }) + + /** + * @tc.name: persist_permission_test + * @tc.desc: Test persistPermission without system capability + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('persist_permission_test', 0, async function (done) { + console.info(`persist_permission_test start`); + let filePath = "/data/storage/el2/base/persist_permission_test.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.persistPermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`persist_permission_test err : ${err.code}`); + expect(false).assertTrue(); + }) + } catch (error) { + console.info(`persist_permission_test error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`persist_permission_test end`); + }) + + /** + * @tc.name: revoke_permission_test + * @tc.desc: Test revokePermission without system capability + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('revoke_permission_test', 0, async function (done) { + console.info(`revoke_permission_test start`); + let filePath = "/data/storage/el2/base/revoke_permission_test.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.revokePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`revoke_permission_test err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`revoke_permission_test error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`revoke_permission_test end`); + }) + + /** + * @tc.name: activate_permission_test + * @tc.desc: Test activatePermission without system capability + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('activate_permission_test', 0, async function (done) { + console.info(`activate_permission_test start`); + let filePath = "/data/storage/el2/base/activate_permission_test.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.activatePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`activate_permission_test err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`activate_permission_test error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`activate_permission_test end`); + }) + + /** + * @tc.name: deactivate_permission_test + * @tc.desc: Test deactivatePermission without system capability + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('deactivate_permission_test', 0, async function (done) { + console.info(`deactivate_permission_test start`); + let filePath = "/data/storage/el2/base/deactivate_permission_test.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.deactivatePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`deactivate_permission_test err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`deactivate_permission_test error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`deactivate_permission_test end`); + }) + + /** + * @tc.name: check_persistent_permission_test + * @tc.desc: Test checkPersistentPermission without system capability + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('check_persistent_permission_test', 0, async function (done) { + console.info(`check_persistent_permission_test start`); + let filePath = "/data/storage/el2/base/check_persistent_permission_test.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.checkPersistentPermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`check_persistent_permission_test err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`check_persistent_permission_test error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`check_persistent_permission_test end`); + }) +}); \ No newline at end of file diff --git a/test/unittest/js_file_permission_test/nopermission/config.json b/test/unittest/js_file_permission_test/nopermission/config.json new file mode 100644 index 0000000000000000000000000000000000000000..8f6634538927acf68d209439901e32a67f52779c --- /dev/null +++ b/test/unittest/js_file_permission_test/nopermission/config.json @@ -0,0 +1,62 @@ +{ + "app": { + "bundleName": "ohos.file.share.nopermission.test", + "vendor": "acts", + "version": { + "code": 1000000, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 8, + "target": 9 + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.file.share.nopermission.test", + "name": ".MainAbility", + "deviceType": [ + "default", + "tablet", + "2in1" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "name": "ohos.file.share.nopermission.test.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "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/test/unittest/js_file_permission_test/nopermission/signature/openharmony_sx.p7b b/test/unittest/js_file_permission_test/nopermission/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..3528762252387c3678f5b3218daefb7a353c5f78 Binary files /dev/null and b/test/unittest/js_file_permission_test/nopermission/signature/openharmony_sx.p7b differ diff --git a/test/unittest/js_file_permission_test/permission/BUILD.gn b/test/unittest/js_file_permission_test/permission/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..2073c5c28ec9aa38f7b320c07b88ba730588a0a7 --- /dev/null +++ b/test/unittest/js_file_permission_test/permission/BUILD.gn @@ -0,0 +1,21 @@ +# Copyright (C) 2024 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") + +ohos_js_unittest("FileShareTestPermission") { + module_out_path = "filemanagement/app_file_service" + + hap_profile = "./config.json" + + certificate_profile = "./signature/openharmony_sx.p7b" +} diff --git a/test/unittest/js_file_permission_test/permission/FilePermission.test.js b/test/unittest/js_file_permission_test/permission/FilePermission.test.js new file mode 100644 index 0000000000000000000000000000000000000000..a6be5ae07513f98fa06ed96aec1b503e28802f17 --- /dev/null +++ b/test/unittest/js_file_permission_test/permission/FilePermission.test.js @@ -0,0 +1,746 @@ +/* + * Copyright (C) 2024 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 {describe, beforeAll, afterAll, it, expect} from 'deccjsunit/index' +import fileShare from '@ohos.fileshare' +import fileuri from '@ohos.file.fileuri' +import fs from '@ohos.file.fs' + +const DEVICE_TYPE_ERR = 801; +const PARAMETER_TYPE_ERR = 401; +const OPERATION_NOT_PERMITTED = 13900001; + +describe('FileShareJSTest', function () { + beforeAll(async function () { + console.info('beforeAll'); + }) + + afterAll(async function () { + console.info('afterAll'); + }) + + /** + * @tc.name: persist_permission_test_001 + * @tc.desc: normal uri and operationMode is READ_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('persist_permission_test_001', 0, async function (done) { + console.info(`persist_permission_test_001 start`); + let filePath = "/data/storage/el2/base/persist_permission_test_001.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.persistPermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`persist_permission_test_001 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`persist_permission_test_001 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`persist_permission_test_001 end`); + }) + + /** + * @tc.name: persist_permission_test_002 + * @tc.desc: normal uris and have a uri is not exist test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('persist_permission_test_002', 0, async function (done) { + console.info(`persist_permission_test_002 start`); + let filePath = "/data/storage/el2/base/persist_permission_test_002.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfoA = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let fileUri = "/data/storage/el2/persist_permission_test_002.txt"; + let policyInfoB = { uri: fileUri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfoA, policyInfoB]; + try { + fileShare.persistPermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`persist_permission_test_002 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`persist_permission_test_002 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`persist_permission_test_002 end`); + }) + + /** + * @tc.name: persist_permission_test_003 + * @tc.desc: persist_permission with no param test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('persist_permission_test_003', 0, async function (done) { + console.info(`persist_permission_test_003 start`); + try { + fileShare.persistPermission().then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`persist_permission_test_003 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`persist_permission_test_003 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`persist_permission_test_003 end`); + }) + + /** + * @tc.name: persist_permission_test_004 + * @tc.desc: persist_permission with operation not permitted test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('persist_permission_test_004', 0, async function (done) { + console.info(`persist_permission_test_004 start`); + let uri = "/data/storage/el2/base/persist_permission_test_004.txt"; + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfo]; + try { + fileShare.persistPermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`persist_permission_test_004 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`persist_permission_test_004 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`persist_permission_test_004 end`); + }) + + /** + * @tc.name: revoke_permission_test_001 + * @tc.desc: normal uri and operationMode is READ_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('revoke_permission_test_001', 0, async function (done) { + console.info(`revoke_permission_test_001 start`); + let filePath = "/data/storage/el2/base/revoke_permission_test_001.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + await fileShare.persistPermission(policies); + } catch (error) { + console.info(`revoke_permission_test_001 persistPermission error : ${error.code}`); + } + try { + fileShare.revokePermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`revoke_permission_test_001 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`revoke_permission_test_001 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`revoke_permission_test_001 end`); + }) + + /** + * @tc.name: revoke_permission_test_002 + * @tc.desc: normal uris and have a uri is not exist test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('revoke_permission_test_002', 0, async function (done) { + console.info(`revoke_permission_test_002 start`); + let filePath = "/data/storage/el2/base/revoke_permission_test_002.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfoA = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policiesA = [policyInfoA]; + try { + await fileShare.persistPermission(policiesA); + } catch (error) { + console.info(`revoke_permission_test_002 persistPermission error : ${error.code}`); + } + let fileUri = "/data/storage/el2/revoke_permission_test_002.txt"; + let policyInfoB = { uri: fileUri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfoA, policyInfoB]; + try { + fileShare.revokePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`revoke_permission_test_002 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`revoke_permission_test_002 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`revoke_permission_test_002 end`); + }) + + /** + * @tc.name: revoke_permission_test_003 + * @tc.desc: revoke_permission with no param test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('revoke_permission_test_003', 0, async function (done) { + console.info(`revoke_permission_test_003 start`); + try { + fileShare.revokePermission().then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`revoke_permission_test_003 err: ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`revoke_permission_test_003 error: ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`revoke_permission_test_003 end`); + }) + + /** + * @tc.name: revoke_permission_test_004 + * @tc.desc: revoke_permission with operation not permitted test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('revoke_permission_test_004', 0, async function (done) { + console.info(`revoke_permission_test_004 start`); + let filePath = "/data/storage/el2/base/revoke_permission_test_004.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + fileShare.revokePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`revoke_permission_test_004 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`revoke_permission_test_004 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`revoke_permission_test_004 end`); + }) + + /** + * @tc.name: activate_permission_test_001 + * @tc.desc: normal uri and operationMode is READ_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('activate_permission_test_001', 0, async function (done) { + console.info(`activate_permission_test_001 start`); + let filePath = "/data/storage/el2/base/activate_permission_test_001.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + await fileShare.persistPermission(policies); + } catch (error) { + console.info(`activate_permission_test_001 persistPermission error : ${error.code}`); + } + try { + fileShare.activatePermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`activate_permission_test_001 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`activate_permission_test_001 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`activate_permission_test_001 end`); + }) + + /** + * @tc.name: activate_permission_test_002 + * @tc.desc: normal uris and have a uri is not exist test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('activate_permission_test_002', 0, async function (done) { + console.info(`activate_permission_test_002 start`); + let filePath = "/data/storage/el2/base/activate_permission_test_002.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfoA = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policiesA = [policyInfoA]; + try { + await fileShare.persistPermission(policiesA); + } catch (error) { + console.info(`activate_permission_test_002 persistPermission error : ${error.code}`); + } + let fileUri = "/data/storage/el2/activate_permission_test_002.txt"; + let policyInfoB = { uri: fileUri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfoA, policyInfoB]; + try { + fileShare.activatePermission(policies).then(() => { + console.info(`activate_permission_test_002 fail`); + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`activate_permission_test_002 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`activate_permission_test_002 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`activate_permission_test_002 end`); + }) + + /** + * @tc.name: activate_permission_test_003 + * @tc.desc: persist_permission with no param test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('activate_permission_test_003', 0, async function (done) { + console.info(`activate_permission_test_003 start`); + try { + fileShare.activatePermission().then(() => { + console.info(`activate_permission_test_003 success`); + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`activate_permission_test_003 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`activate_permission_test_003 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`activate_permission_test_003 end`); + }) + + /** + * @tc.name: activate_permission_test_004 + * @tc.desc: activate_permission with operation not permitted test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('activate_permission_test_004', 0, async function (done) { + console.info(`activate_permission_test_004 start`); + let filePath = "/data/storage/el2/base/activate_permission_test_004.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfo]; + try { + fileShare.activatePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`activate_permission_test_004 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`activate_permission_test_004 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`activate_permission_test_004 end`); + }) + + /** + * @tc.name: deactivate_permission_test_001 + * @tc.desc: normal uri and operationMode is READ_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('deactivate_permission_test_001', 0, async function (done) { + console.info(`deactivate_permission_test_001 start`); + let filePath = "/data/storage/el2/base/deactivate_permission_test_001.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE }; + let policies = [policyInfo]; + try { + await fileShare.persistPermission(policies); + } catch (error) { + console.info(`deactivate_permission_test_001 persistPermission error : ${error.code}`); + } + try { + await fileShare.activatePermission(policies); + } catch (error) { + console.info(`deactivate_permission_test_001 activatePermission error : ${error.code}`); + } + try { + fileShare.deactivatePermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`deactivate_permission_test_001 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`deactivate_permission_test_001 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`deactivate_permission_test_001 end`); + }) + + /** + * @tc.name: deactivate_permission_test_002 + * @tc.desc: normal uris and have a uri is not exist test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('deactivate_permission_test_002', 0, async function (done) { + console.info(`deactivate_permission_test_002 start`); + let filePath = "/data/storage/el2/base/deactivate_permission_test_002.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfoA = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policiesA = [policyInfoA]; + try { + await fileShare.persistPermission(policiesA); + } catch (error) { + console.info(`deactivate_permission_test_002 persistPermission error : ${error.code}`); + } + try { + await fileShare.activatePermission(policiesA); + } catch (error) { + console.info(`deactivate_permission_test_002 activatePermission error : ${error.code}`); + } + let fileUri = "/data/storage/el2/deactivate_permission_test_002.txt"; + let policyInfoB = { uri: fileUri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfoA, policyInfoB]; + try { + fileShare.deactivatePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`deactivate_permission_test_002 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`deactivate_permission_test_002 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`deactivate_permission_test_002 end`); + }) + + /** + * @tc.name: deactivate_permission_test_003 + * @tc.desc: persist_permission with no param test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('deactivate_permission_test_003', 0, async function (done) { + console.info(`deactivate_permission_test_003 start`); + try { + fileShare.deactivatePermission().then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`deactivate_permission_test_003 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`deactivate_permission_test_003 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`deactivate_permission_test_003 end`); + }) + + /** + * @tc.name: deactivate_permission_test_004 + * @tc.desc: deactivate_permission with operation not permitted test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('deactivate_permission_test_004', 0, async function (done) { + console.info(`deactivate_permission_test_004 start`); + let filePath = "/data/storage/el2/base/deactivate_permission_test_004.txt"; + let uriObject = new fileuri.FileUri(filePath); + let uri = uriObject.toString(); + let fd = await fs.open(uri, fs.OpenMode.CREATE); + await fs.close(fd); + let policyInfo = { uri: uri, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfo]; + try { + fileShare.deactivatePermission(policies).then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`deactivate_permission_test_004 err : ${err.code}`); + if (err.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } catch (error) { + console.info(`deactivate_permission_test_004 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`deactivate_permission_test_004 end`); + }) + + /** + * @tc.name: check_persistent_permission_test_001 + * @tc.desc: check_persistent_permission with write mode and permitted test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('check_persistent_permission_test_001', 0, async function (done) { + console.info(`check_persistent_permission_test_001 start`); + let filePathA = "/data/storage/el2/base/check_persistent_permission_test_001.txt"; + let uriObjectA = new fileuri.FileUri(filePathA); + let uriA = uriObjectA.toString(); + let fdA = await fs.open(uriA, fs.OpenMode.CREATE); + await fs.close(fdA); + let policyInfoA = { uri: uriA, operationMode: fileShare.OperationMode.WRITE_MODE }; + let policiesA = [policyInfoA]; + try { + await fileShare.persistPermission(policiesA); + } catch (error) { + console.info(`check_persistent_permission_test_001 persistPermission error : ${error.code}`); + } + let policyInfoB = { uri: "/data/test_002.txt", operationMode: fileShare.OperationMode.WRITE_MODE }; + let policies = [policyInfoA, policyInfoB]; + try { + fileShare.checkPersistentPermission(policies).then((result) => { + expect(result[0]).assertTrue(); + expect(result[1] == false).assertTrue(); + done(); + }).catch((err) => { + console.info(`check_persistent_permission_test_001 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`check_persistent_permission_test_001 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`check_persistent_permission_test_001 end`); + }) + + /** + * @tc.name: check_persistent_permission_test_002 + * @tc.desc: check_persistent_permission with no param test + * @tc.type: FUNC test + * @tc.require: issueI#I956FN + */ + it('check_persistent_permission_test_002', 0, async function (done) { + console.info(`check_persistent_permission_test_002 start`); + try { + fileShare.checkPersistentPermission().then(() => { + expect(false).assertTrue(); + done(); + }).catch((err) => { + console.info(`check_persistent_permission_test_002 err : ${err.code}`); + expect(false).assertTrue(); + done(); + }) + } catch (error) { + console.info(`check_persistent_permission_test_002 error : ${error.code}`); + if (error.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (error.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`check_persistent_permission_test_002 end`); + }) +}); \ No newline at end of file diff --git a/test/unittest/js_file_permission_test/permission/config.json b/test/unittest/js_file_permission_test/permission/config.json new file mode 100644 index 0000000000000000000000000000000000000000..f7260a4a30cfbb2b63a28b7c028c943ec8ee7a77 --- /dev/null +++ b/test/unittest/js_file_permission_test/permission/config.json @@ -0,0 +1,70 @@ +{ + "app": { + "bundleName": "ohos.file.share.test", + "vendor": "acts", + "version": { + "code": 1000000, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 8, + "target": 9 + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.file.share.test", + "name": ".MainAbility", + "deviceType": [ + "default", + "tablet", + "2in1" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "reqPermissions": [ + { + "name": "ohos.permission.FILE_ACCESS_PERSIST" + }, + { + "name": "ohos.permission.SET_SANDBOX_POLICY" + } + ], + "abilities": [ + { + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "name": "ohos.file.share.test.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:app_name", + "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/test/unittest/js_file_permission_test/permission/signature/openharmony_sx.p7b b/test/unittest/js_file_permission_test/permission/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..d68fc81db87d89b28c64da457075e4600e2d016e Binary files /dev/null and b/test/unittest/js_file_permission_test/permission/signature/openharmony_sx.p7b differ