diff --git a/miscservices/BUILD.gn b/miscservices/BUILD.gn index bf26586acb38e6cedd61629861b87940fa177489..87f23d3e167e516901df00d2ff4d8439c3d0f93e 100755 --- a/miscservices/BUILD.gn +++ b/miscservices/BUILD.gn @@ -15,6 +15,7 @@ import("//build/ohos_var.gni") group("miscservices") { testonly = true deps = [ + "RequestTest_js:miscservices_request_js_test", "TimeTest_js:time_js_test", "TimerTest_js:timer_js_test", ] diff --git a/miscservices/RequestTest_js/BUILD.gn b/miscservices/RequestTest_js/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..c06dba948962e8365e16f6271ec02b64c2e9363e --- /dev/null +++ b/miscservices/RequestTest_js/BUILD.gn @@ -0,0 +1,30 @@ +# Copyright (C) 2021 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("miscservices_request_js_test") { + hap_profile = "./entry/src/main/config.json" + deps = [ + ":request_js_assets", + ":request_js_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "MiscservicesRequestJSApiTest" +} +ohos_js_assets("request_js_assets") { + source_dir = "./entry/src/main/js/default" +} +ohos_resources("request_js_resources") { + sources = [ "./entry/src/main/resources" ] + hap_profile = "./entry/src/main/config.json" +} diff --git a/miscservices/RequestTest_js/Test.json b/miscservices/RequestTest_js/Test.json new file mode 100644 index 0000000000000000000000000000000000000000..d7fafc875cb62970e9b727491b4363fd96cd8afd --- /dev/null +++ b/miscservices/RequestTest_js/Test.json @@ -0,0 +1,23 @@ +{ + "description": "Configuration for MiscservicesRequestJSApiTest js api Tests", + "driver": { + "type": "JSUnitTest", + "test-timeout": "4200000", + "package": "com.example.myapplication.hmservice", + "shell-timeout": "60000" + }, + "kits": [ + { + "test-file-name": ["MiscservicesRequestJSApiTest.hap"], + "type": "AppInstallKit", + "cleanup-apps": true + }, + { + "type": "ShellKit", + "run-command": [ + "mkdir -p /data/accounts/account_0/appdata/com.example.myapplication.hmservice/cache", + "echo \"123456\" > /data/accounts/account_0/appdata/com.example.myapplication.hmservice/cache/test.txt" + ] + } + ] +} diff --git a/miscservices/RequestTest_js/entry/src/main/config.json b/miscservices/RequestTest_js/entry/src/main/config.json new file mode 100644 index 0000000000000000000000000000000000000000..3b09ad691ef96fe340a6a16bc6f340cc5e3a4f90 --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/config.json @@ -0,0 +1,56 @@ +{ + "app": { + "bundleName": "com.example.myapplication.hmservice", + "vendor": "example", + "version": { + "code": 1, + "name": "1.0.0" + }, + "apiVersion": { + "compatible": 6, + "target": 6, + "releaseType": "Beta1" + } + }, + "deviceConfig": {}, + "module": { + "package": "com.example.myapplication.hmservice", + "name": ".MyApplication", + "mainAbility": "com.example.myapplication.hmservice.MainAbility", + "deviceType": ["phone"], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": true + }, + "abilities": [ + { + "skills": [ + { + "entities": ["entity.system.home"], + "actions": ["action.system.home"] + } + ], + "name": "com.example.myapplication.hmservice.MainAbility", + "icon": "$media:icon", + "description": "$string:mainability_description", + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard", + "visible": true, + "isVisible": "true" + } + ], + "js": [ + { + "pages": ["pages/index/index"], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": true + } + } + ] + } +} diff --git a/miscservices/RequestTest_js/entry/src/main/js/Test/List.test.js b/miscservices/RequestTest_js/entry/src/main/js/Test/List.test.js new file mode 100644 index 0000000000000000000000000000000000000000..8eec19a5df535ef01679f56abfe194d95ff7b72e --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/Test/List.test.js @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2021 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. + */ + +require('./UploadCallbackXTSJsunit.test.js') diff --git a/miscservices/RequestTest_js/entry/src/main/js/Test/Publicfunction.js b/miscservices/RequestTest_js/entry/src/main/js/Test/Publicfunction.js new file mode 100644 index 0000000000000000000000000000000000000000..7e7822e9cf4bf83ee3c1c052727faafba18aa396 --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/Test/Publicfunction.js @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2021 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, it, expect} from 'deccjsunit/index' +import request from '@ohos.request' + +let RequestData = [{ + name: '', // Represents the name of the form element. + value: '' // Represents the value of the form element. +}] + +let RequestDataArray=new Array(); + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +function getUploadConfig(fileurl){ + let File = { + filename: 'test', // When multipart is submitted, the file name in the request header. + name: 'test', // When multipart is submitted, the name of the form item. The default is file. + uri: 'internal://cache/test.txt', + //The local storage path of the file + // (please refer to the storage directory definition for path usage). + type: 'txt' + //The content type of the file is obtained by default + // according to the suffix of the file name or path. + } + let FileArray=new Array(); + FileArray[0] = File; + let headerHttp = { headers: 'http' } + let UploadConfig = { + url: 'http://192.168.112.124/upload_test/',// Resource address. + header: headerHttp, // Adds an HTTP or HTTPS header to be included with the upload request. + method: 'POST', // Request method: POST, PUT. The default POST. + files: FileArray, // A list of files to be uploaded. Please use multipart/form-data to submit. + data: RequestData // The requested form data. + } + return UploadConfig +} + +//upload公共方法 +function publicupload(UploadConfig){ + console.log(`Testupdate UploadConfig ${JSON.stringify(UploadConfig)}`) + return new Promise(function(resolve, reject) { + request.upload(UploadConfig, (err, data) => { + console.log("Testupdate publiconprogress Updatetask =" + JSON.stringify(data)); + resolve(data); + }) + }) +} + +//onprogress公共方法 +function publiconprogress(Updatetask, Type){ + return new Promise(function(resolve, reject) { + Updatetask.on(Type, function(data1 ,data2){ + let progress = { + uploadedSize : data1, + totalSize : data2 + } + console.log("Testupdate publiconprogress uploadedSize =" + data1); + console.log("Testupdate publiconprogress totalSize =" + data2); + resolve(progress); + }) + }) +} + +//offprogress公共方法 +function publicoffprogress(Updatetask, Type){ + return new Promise(function(resolve, reject) { + Updatetask.off(Type, function(data1 ,data2){ + let progress = { + uploadedSize : data1, + totalSize : data2 + } + console.log("Testupdate publicoffprogress uploadedSize =" + data1); + console.log("Testupdate publicoffprogress totalSize =" + data2); + resolve(progress); + }) + }) +} + +//其他on公共方法 +function publicon(Updatetask, Type){ + return new Promise(function(resolve, reject) { + Updatetask.on(Type, function(data){ + console.log("Testupdate publicon =" + data); + resolve(data); + }) + }) +} + +//其他off公共方法 +function publicoff(Updatetask, Type){ + return new Promise(function(resolve, reject) { + Updatetask.off(Type, function(data){ + console.log("Testupdate publicoff =" + data); + resolve(data); + }) + }) +} + +//remove公共方法 +function publicremove(Updatetask, Type){ + return new Promise(function(resolve, reject) { + Updatetask.remove((err,data) => { + console.log("Testupdate publicremove =" + data); + resolve(data); + }) + }) +} + +export{publicupload,publicon,publicoff,publicremove,publiconprogress,publicoffprogress,getUploadConfig,sleep} \ No newline at end of file diff --git a/miscservices/RequestTest_js/entry/src/main/js/Test/UploadCallbackXTSJsunit.test.js b/miscservices/RequestTest_js/entry/src/main/js/Test/UploadCallbackXTSJsunit.test.js new file mode 100644 index 0000000000000000000000000000000000000000..8f7c4a320721dfc203c34aa99e7055150d1cd2c1 --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/Test/UploadCallbackXTSJsunit.test.js @@ -0,0 +1,202 @@ +/* + * Copyright (C) 2021 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, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' +import request from '@ohos.request'; +import * as pubfun from './Publicfunction.js' + +var typeProgress = 'progress'; +var typeHeaderReceive = 'headerReceive'; +var typeFail = 'fail'; +let uploadTask; +let file7url = 'internal://cache/test.txt'; + +describe('UploadTest', function () { + beforeAll(function () { + console.info('beforeAll: Prerequisites at the test suite level, ' + + 'which are executed before the test suite is executed.'); + }) + beforeEach(function () { + console.info('beforeEach: Prerequisites at the test case level,' + + ' which are executed before each test case is executed.'); + }) + afterEach(function () { + console.info('afterEach: Test case-level clearance conditions, ' + + 'which are executed after each test case is executed.'); + }) + afterAll(function () { + console.info('afterAll: Test suite-level cleanup condition, ' + + 'which is executed after the test suite is executed'); + }) + + /* + * @tc.number : InitUploadtaskCallback001 + * @tc.name : Use getEntries get the value by mixing the string key + * @tc.desc : Mixed strings value can be obtained correctly + * @tc.size : MediumTest + * @tc.type : Function + * @tc.level : Level 1 + */ + it('InitUploadtaskCallback001', 0, async function (done) { + try { + console.log("Testupdate before getuploadconfig"); + let UploadConfig = pubfun.getUploadConfig(file7url) + console.log("Testupdate before upload UploadConfig = " + JSON.stringify(UploadConfig)); + console.log("Testupdate before upload"); + await pubfun.publicupload(UploadConfig).then((data) => { + console.log("Testupdate going upload uploadTask = " + data); + uploadTask = data; + expect(true).assertEqual((data != undefined) || (data != "") || (data != {})); + done(); + }).catch((err) => { + console.log("InitUploadtaskCallback001 fail 1" + JSON.stringify(err)); + expect(err).assertFail(); + done(); + }) + } catch (e) { + console.log("InitUploadtaskCallback001 fail 2" + JSON.stringify(e)); + expect(e).assertFail(); + done(); + } + }) + + /* + * @tc.number : SwitchOnProgressCallback001 + * @tc.name : Use getEntries get the value by mixing the string key + * @tc.desc : Mixed strings value can be obtained correctly + * @tc.size : MediumTest + * @tc.type : Function + * @tc.level : Level 1 + */ + it('SwitchOnProgressCallback001', 0, async function (done) { + try { + pubfun.publiconprogress(uploadTask, typeProgress); + expect(true).assertEqual(0 == 0); + done(); + } catch (err) { + console.log("Testupdate SwitchOnProgressCallback001 catch err " + JSON.stringify(err)); + expect(err).assertFail(); + done(); + } + }); + + /* + * @tc.number : SwitchOffProgressCallback001 + * @tc.name : Use getEntries get the value by mixing the string key + * @tc.desc : Mixed strings value can be obtained correctly + * @tc.size : MediumTest + * @tc.type : Function + * @tc.level : Level 1 + */ + it('SwitchOffProgressCallback001', 0, async function (done) { + try { + pubfun.publiconprogress(uploadTask, typeProgress); + expect(true).assertEqual(0 == 0); + + await pubfun.publicoffprogress(uploadTask, typeProgress).then((data) => { + console.log("SwitchOffProgressCallback001 data" + JSON.stringify(data)); + expect(7).assertEqual(data.totalSize); + done(); + }).catch((err) => { + console.log("SwitchOffProgressCallback001 fail 2" + JSON.stringify(err)); + expect(err).assertFail(); + done(); + }) + } catch (e) { + console.log("SwitchOffProgressCallback001 fail 3" + JSON.stringify(e)); + expect(e).assertFail(); + done(); + } + }) + + /* + * @tc.number : SwitchOnFailCallback001 + * @tc.name : Use getEntries get the value by mixing the string key + * @tc.desc : Mixed strings value can be obtained correctly + * @tc.size : MediumTest + * @tc.type : Function + * @tc.level : Level 1 + */ + it('SwitchOnFailCallback001', 0, async function (done) { + try { + await pubfun.publicon(uploadTask, typeFail).then((data) => { + console.log("SwitchOnFailCallback001 data " + data); + expect(5).assertEqual(data); + done(); + }).catch((err) => { + console.log("SwitchOnFailCallback001 fail 2" + JSON.stringify(err)); + expect(err).assertFail(); + done(); + }) + } catch (e) { + console.log("SwitchOnFailCallback001 fail 3" + JSON.stringify(e)); + expect(e).assertFail(); + done(); + } + }) + + /* + * @tc.number : SwitchOffFailCallback001 + * @tc.name : Use getEntries get the value by mixing the string key + * @tc.desc : Mixed strings value can be obtained correctly + * @tc.size : MediumTest + * @tc.type : Function + * @tc.level : Level 1 + */ + it('SwitchOffFailCallback001', 0, async function (done) { + try { + await pubfun.publicon(uploadTask, typeFail) + await pubfun.publicoff(uploadTask, typeFail).then((data) => { + console.log("SwitchOffFailCallback001 data " + data); + expect(5).assertEqual(data); + done(); + }).catch((err) => { + console.log("SwitchOffFailCallback001 fail 2" + JSON.stringify(err)); + done(); + expect(err).assertFail(); + }) + } catch (e) { + console.log("SwitchOffFailCallback001 fail 3" + JSON.stringify(e)); + expect(e).assertFail(); + done(); + } + }) + + /* + * @tc.number : RemoveCallback001 + * @tc.name : Use getEntries get the value by mixing the string key + * @tc.desc : Mixed strings value can be obtained correctly + * @tc.size : MediumTest + * @tc.type : Function + * @tc.level : Level 1 + */ + it('RemoveCallback001', 0, async function (done) { + try { + await pubfun.publicremove(uploadTask).then((data) => { + console.log("RemoveCallback001 data " + data); + expect(true).assertEqual(data); + done(); + }).catch((err) => { + console.log("RemoveCallback001 fail 2" + JSON.stringify(err)); + expect(err).assertFail(); + done(); + }) + } catch (e) { + console.log("RemoveCallback001 fail 3" + JSON.stringify(e)); + expect(e).assertFail(); + done(); + } + }) +}) \ No newline at end of file diff --git a/miscservices/RequestTest_js/entry/src/main/js/default/app.js b/miscservices/RequestTest_js/entry/src/main/js/default/app.js new file mode 100644 index 0000000000000000000000000000000000000000..b98633982ee2425768385c73a97e56bf6ee92ece --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/default/app.js @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2021 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/miscservices/RequestTest_js/entry/src/main/js/default/i18n/en-US.json b/miscservices/RequestTest_js/entry/src/main/js/default/i18n/en-US.json new file mode 100644 index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/default/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + } +} \ No newline at end of file diff --git a/miscservices/RequestTest_js/entry/src/main/js/default/i18n/zh-CN.json b/miscservices/RequestTest_js/entry/src/main/js/default/i18n/zh-CN.json new file mode 100644 index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/default/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + } +} \ No newline at end of file diff --git a/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.css b/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.css new file mode 100644 index 0000000000000000000000000000000000000000..5bd7567028568bd522193b2519d545ca6dcf397d --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.css @@ -0,0 +1,46 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; +} + +.title { + font-size: 40px; + color: #000000; + opacity: 0.9; +} + +@media screen and (device-type: tablet) and (orientation: landscape) { + .title { + font-size: 100px; + } +} + +@media screen and (device-type: wearable) { + .title { + font-size: 28px; + color: #FFFFFF; + } +} + +@media screen and (device-type: tv) { + .container { + background-image: url("/common/images/Wallpaper.png"); + background-size: cover; + background-repeat: no-repeat; + background-position: center; + } + + .title { + font-size: 100px; + color: #FFFFFF; + } +} + +@media screen and (device-type: phone) and (orientation: landscape) { + .title { + font-size: 60px; + } +} diff --git a/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.hml b/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.hml new file mode 100644 index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184 --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.hml @@ -0,0 +1,5 @@ +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.js b/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.js new file mode 100644 index 0000000000000000000000000000000000000000..f4629924c9ab7f27602773439f9a6e918a97e2f1 --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/js/default/pages/index/index.js @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2021 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 { Core, ExpectExtend } from 'deccjsunit/index' +import { DataDriver } from 'deccjsunit' + +export default { + data: { + title: '', + }, + onInit() { + this.title = this.$t('strings.world') + }, + onShow() { + console.info('onShow finish') + const core = Core.getInstance() + const expectExtend = new ExpectExtend({ + id: 'extend', + }) + core.addService('expect', expectExtend) + core.init() + const configService = core.getDefaultService('config') + configService.setConfig(this) + console.log('test start') + require('../../../Test/List.test.js') + core.execute() + this.title = this.$t('strings.bye') + }, + onReady() {}, +} diff --git a/miscservices/RequestTest_js/entry/src/main/resources/base/element/string.json b/miscservices/RequestTest_js/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000000000000000000000000000000000..0bae6bd40f7360d5d818998221b199d3ec0f69c0 --- /dev/null +++ b/miscservices/RequestTest_js/entry/src/main/resources/base/element/string.json @@ -0,0 +1,12 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "entry_MainAbility" + }, + { + "name": "mainability_description", + "value": "JS_Empty Ability" + } + ] +} \ No newline at end of file diff --git a/miscservices/RequestTest_js/entry/src/main/resources/base/media/icon.png b/miscservices/RequestTest_js/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/miscservices/RequestTest_js/entry/src/main/resources/base/media/icon.png differ diff --git a/miscservices/RequestTest_js/signature/openharmony_sx.p7b b/miscservices/RequestTest_js/signature/openharmony_sx.p7b new file mode 100644 index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5 Binary files /dev/null and b/miscservices/RequestTest_js/signature/openharmony_sx.p7b differ