From 546093cea93ca5e0e49a20726127b67e3f188b15 Mon Sep 17 00:00:00 2001 From: dengjun Date: Sun, 4 Feb 2024 15:29:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=B0=E5=A2=9EfilePermission=20JS?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dengjun --- test/unittest/BUILD.gn | 1 + .../unittest/js_file_permission_test/BUILD.gn | 23 + .../nopermission/BUILD.gn | 21 + .../nopermission/FileNoPermission.test.js | 221 +++++ .../nopermission/config.json | 62 ++ .../nopermission/signature/openharmony_sx.p7b | Bin 0 -> 3417 bytes .../permission/BUILD.gn | 21 + .../permission/FilePermission.test.js | 757 ++++++++++++++++++ .../permission/config.json | 70 ++ .../permission/signature/openharmony_sx.p7b | Bin 0 -> 3502 bytes 10 files changed, 1176 insertions(+) create mode 100644 test/unittest/js_file_permission_test/BUILD.gn create mode 100644 test/unittest/js_file_permission_test/nopermission/BUILD.gn create mode 100644 test/unittest/js_file_permission_test/nopermission/FileNoPermission.test.js create mode 100644 test/unittest/js_file_permission_test/nopermission/config.json create mode 100644 test/unittest/js_file_permission_test/nopermission/signature/openharmony_sx.p7b create mode 100644 test/unittest/js_file_permission_test/permission/BUILD.gn create mode 100644 test/unittest/js_file_permission_test/permission/FilePermission.test.js create mode 100644 test/unittest/js_file_permission_test/permission/config.json create mode 100644 test/unittest/js_file_permission_test/permission/signature/openharmony_sx.p7b diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 6a4a28f1c..fa1798fef 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -17,6 +17,7 @@ group("unittest") { "file_permission_native:file_permission_test", "file_share_native:file_share_test", "file_uri_native:file_uri_test", + "js_file_permission_test:unittest", "remote_file_share:remote_file_share_test", "resource/bundle_dependencies/fileShareA:filesharea", "resource/bundle_dependencies/fileShareB:fileshareb", 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 000000000..30a7e9f8a --- /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 = [ + "nopermission:FileShareTestNoPermission", + "permission:FileShareTestPermission", + ] +} +############################################################################### 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 000000000..2ca47563a --- /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/FileNoPermission.test.js b/test/unittest/js_file_permission_test/nopermission/FileNoPermission.test.js new file mode 100644 index 000000000..f8fd568fc --- /dev/null +++ b/test/unittest/js_file_permission_test/nopermission/FileNoPermission.test.js @@ -0,0 +1,221 @@ +/* + * 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('FileShareNoPermissionJSTest', 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + }) + } 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PERMISSION_ERR) { + expect(true).assertTrue(); + } else { + 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`); + }) +}); \ 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 000000000..8f6634538 --- /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 GIT binary patch literal 3417 zcmcgvdstKF87CK@h!GS8#S0jzI5F^@+(>9`JtueI1QHTRA`VZIljJ}+C*;COa9SHz zCR%l_o3eVt8)}PoQ(I(vYFjsDwpM3r-PVeo7q;qbU8k+CKDwO)OuH z{UI8i!I-Pkm@NjaK?Peh186OY8Vo9Jy-Ec;B3_s_Ah6e9aGT0JH8$GX;ttU&uia2a zISeiJKm*e#ZEw+(qi}-`hO8RIhpK8x6Ocx=YPbsV8mkeQvZ#QPcGSoWc3WxKDVE7l za|5lV?docisaz99DqXtjNR>_-bJi#$cokx;B^@=|Fj|Gu2Gf9-S`!UC?1i}WNC>Mj z`rJByvy(v7CJT&fX%I82;TW?DwT3pfSfi-A6l2g9292Wi4fiorLq)X~*fN+SimG+~ z21m8B!BGP>+r(PBmUO8#MidSWtVp zpo$EaH#PYHuG7owYe{Q8VnPwXX6#mbO*IHorL+}``bCn5`xvg=sxoEi*6jx|PQqz;n} zXcEX`(bSCeVQ8)e#~Ps-U^+X*%g7!+1P20sR#upe$W_5$T9!Zz0WlCmV&*AxWC^57 zNGySdOc3~mrcq5a@-l6go1zvdM8A3dG> zFTzcSCmjFTtXKDHiyXCb z{D;ryag&#VsjNMQpUEHp0e0o>T`k5lr+#tZ$JY|?ep@Htm`B!(MFY*(FJZAzQ zmG{NgHVBq&ye=p`c5fE-l?!exTht>;-Prv0RlEK4{0-aY#lL&&V>@5B64kW_)*(B) zI&SvV-LZ6z9@FPqzUI%mvD;q~oIkX4+nu@zcV_0S4EE*zV5%u(H!LYm*8Ouk0_K4< zmM9r4aS{QKd5mNdCutayvP#mozCP(k{RtIar`z-Qw>#)DAC9aZ&zk_;TtGYMeCWel z^zP@@Z#ru`xMp8|=crYuMjtBanfB7s*|L_}om;1fHlI04@n;bB{O|@Y$a_8SC)9$j z8Oi4HJ67H7co~#FA5;H3qUjIpXx_B(CRpE8u{L&gSJs(=&Xc-{t%(eeFos9{Lp+*> zzdLtiCQq<>!^8-ZNyNi>#F|e=5g$XL>6^dm-SkG5Z10Nqchvp;3jB0F|5Emr8y|<4 zsrKzo`gZU2{Ok|Tz9RU|q2e7&0=Bl^C6fdDn>*h+VFon^KV3gdUioJC8%H)|Z`^sK ztu6h=>GtVuw_jLzupsC5)#Ddde*Gca_nd^^Ao_@}9;iNxx-|3BIUyA*_?Fblk|0L(~wLs0yoltaZ zIW{Hjv&r+dFJ|VUE6;E4T~xf{w_DcSs*UzeO@57=8|htrqTtsTrI$aMJg#WT-=<|) U+q(jPF`v+FJbEwXz0K$T3#7VA&j0`b literal 0 HcmV?d00001 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 000000000..2073c5c28 --- /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 000000000..9170f0733 --- /dev/null +++ b/test/unittest/js_file_permission_test/permission/FilePermission.test.js @@ -0,0 +1,757 @@ +/* + * 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('FileSharePermissionJSTest', 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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 uri and operationMode is WRITE_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I90ZW9 + */ + 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 policyInfo = { + uri: uri, + operationMode: fileShare.OperationMode.WRITE_MODE, + } + let policies = [policyInfo]; + try { + fileShare.persistPermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`persist_permission_test_002 err : ${err.code}`); + if (err.code == DEVICE_TYPE_ERR) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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#I90ZW9 + */ + 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 == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else 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 if (error.code == OPERATION_NOT_PERMITTED) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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 uri and operationMode is WRITE_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I90ZW9 + */ + 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 policyInfo = { + uri: uri, + operationMode: fileShare.OperationMode.WRITE_MODE, + } + let policies = [policyInfo]; + try { + await fileShare.persistPermission(policies); + } catch (error) { + console.info(`revoke_permission_test_002 persistPermission error : ${error.code}`); + } + try { + fileShare.revokePermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`revoke_permission_test_002 err : ${err.code}`); + if (err.code == DEVICE_TYPE_ERR) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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#I90ZW9 + */ + 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 == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else 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 if (error.code == OPERATION_NOT_PERMITTED) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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 uri and operationMode is WRITE_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I90ZW9 + */ + 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 policyInfo = { + uri: uri, + operationMode: fileShare.OperationMode.WRITE_MODE, + } + let policies = [policyInfo]; + try { + await fileShare.persistPermission(policies); + } catch (error) { + console.info(`activate_permission_test_002 persistPermission error : ${error.code}`); + } + try { + fileShare.activatePermission(policies).then(() => { + console.info(`activate_permission_test_002 success`); + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`activate_permission_test_002 err : ${err.code}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else 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 if (error.code == OPERATION_NOT_PERMITTED) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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#I90ZW9 + */ + 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 == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else 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 if (error.code == OPERATION_NOT_PERMITTED) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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 uri and operationMode is WRITE_MODE test + * @tc.type: FUNC test + * @tc.require: issueI#I90ZW9 + */ + 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 policyInfo = { + uri: uri, + operationMode: fileShare.OperationMode.WRITE_MODE, + } + let policies = [policyInfo]; + try { + await fileShare.persistPermission(policies); + } catch (error) { + console.info(`deactivate_permission_test_002 persistPermission error : ${error.code}`); + } + try { + await fileShare.activatePermission(policies); + } catch (error) { + console.info(`deactivate_permission_test_002 activatePermission error : ${error.code}`); + } + try { + fileShare.deactivatePermission(policies).then(() => { + expect(true).assertTrue(); + done(); + }).catch((err) => { + console.info(`deactivate_permission_test_002 err : ${err.code}`); + if (err.code == DEVICE_TYPE_ERR) { + 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#I90ZW9 + */ + 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}`); + if (err.code == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else if (err.code == PARAMETER_TYPE_ERR) { + expect(true).assertTrue(); + } else { + 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#I90ZW9 + */ + 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 == DEVICE_TYPE_ERR) { + expect(true).assertTrue(); + } else 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 if (error.code == OPERATION_NOT_PERMITTED) { + expect(true).assertTrue(); + } else { + expect(false).assertTrue(); + } + done(); + } + console.info(`deactivate_permission_test_004 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 000000000..f7260a4a3 --- /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 GIT binary patch literal 3502 zcmcgvdvp_39&R3OEhSJbP+)(oPZ< z#8g=U0a?#N70~i3s66%{TDoUNS63do;z6*-bpZvoy9=_gE~p3x+?louEeHPC<2mGy z%-rw(?%eO*-}n3OxgaBXJtyyxC8i}mNCdgUj*Mg-$Vk=-1p-I{@^kX$FEI&7kyt1I zne58jfr5@q_M_rVwq}8}m5jwHhL+Jpgp^iD<>jCpNN3!FJ&c!wCQ8O+eT*zok~R^s2t%j1*dc52kg){iqdY`{ zUy_XfA(+uzU4mk@cC*2Z!gj0=ZKQFt88zrp6n3@vVb+YmezVzQZ3y}NzE-#yW>LS> zJeP5q(?Nj2EY3R9SQQS3j4)J(Apsn1q^&@iH0WU);;*hpV8)ID9qV$a%+7|&gj=ps z;k6;wz&iEyR%;cOL~1<7`WBnfka9b8Eu;;pYouKcLjt$qtl8QZrN@%dJEIVf35gSq z>VVf6Zgo?L-fD+Q0}E1k8cT7j2zpqH-K@av)dYv8c@z&?Z(%sbBn@`h-p>)o^~P|> zRj&)V98hb6+`u-{9z9l#!|}d#p-CL8cc`LXJywq+cs~}val4|Dc5*lwF#v*Nk6Ys` z+Rxe8NMmfJ-X26;{0Jn~Y_#D@9qh-9C_3=YVkQ`vVZ`XFXV6N2Sp=#lu{w&GSrt<| zbR36dtV*GYcnm2f6t>C(l*Yn9%Fs*&Vx^J_Q(2-l?Xl}9w*UHfLdAKj>WhhS)5IuGf(skcGf&z_=r&evFjrwsFp6R}TT=~IYct#I9G5$zY?!^t z23PA5OG8tQrOJ#t`)1{4Y~g)J8Vyl>J{O~juykQZCg)!uBYX^G1n+i;gaV;Ztl1XX z4~FMFzKe!8yM#H>QaXV3h!eCO7L=FKtkVA6rsd5!blsZVRfCic%`ZGxYP~K0X z^j;)tVho@ElG=VB22N0zliRlqLczd(hy=MJBuni0RQOGI=bkfg^ZwC?e>45%od!*t zq`g@1&z+C_>G@M9PEW$OYrYeG_U!>$SZ1G7{O+L+>*~BQAH1kMBBGZc82j?(T2KRu zIXV-kh{u94i%0!+NtblY=lL7wcAb29LHD=W3pdG(U<4m9QXu$AEEWlK7lVm>dxUt5 zc+|(lxp%gutB-&B+c%%NkbUF(CW)YSXwF1b7Vrt7tQ{+NG!lU7i0TRhoiPm8mpB6pS;SD#F+4oTY9Uy@WF zxH+A<=z$}17j(<=*SEfN-swC#Z{4QHGuPfe<`f&3CH@2Xv; zox@gqI(%P6_oQbRKcY%EZrwOR_R8@O8Sxa#S(;cU1XJIb`fKKi9aC~^M{QYgrQ>-} zIVYw6u?6dmZfV`H{t8&zY+0S^*;aJCtn-L*?2>FwM+B#%-T@s=BHx=el*xU}-XJrA zR0{cE9r4ZkM_ZcyaSndCRD5>)tCx=@+R$CwbH3kssdW6u zJugarzfZGeQM6&{!9~A_?rH6O`_Hw&vG>ch)73R^b?ttC-T3ueFE3qMaQSHa?u6E&{tsTHPwB!bn&=Am-#=(&v%Xf?0nCIoLL=sfMH*&h;6LxnkKvc zR>O`D*Q_acKm6#)F_{TBo;y{&BG$W-I2&~)R`@?szWV5w+vG>7c;aTX&c|5ybWV@8%-_6K*x~vZ0aOp{U?aKn>8zHIUK;X5Q`_O?1>8@jQF7IA*Xx`Ug*sYUXC^i9uaB|i+mc1W*a1k4J z=%w-=pE3Gay2zx}