• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium'
17
18import wifi from '@ohos.wifi'
19import osaccount from '@ohos.account.osAccount'
20import bundle from '@ohos.bundle'
21import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
22
23async function applyPermission() {
24    let osAccountManager = osaccount.getAccountManager();
25    console.info("=== getAccountManager finish");
26    let localId = await osAccountManager.getOsAccountLocalIdFromProcess();
27    console.info("LocalId is :" + localId);
28    let appInfo = await bundle.getApplicationInfo('ohos.acts.communication.wifi.wifidevice', 0, localId);
29    let atManager = abilityAccessCtrl.createAtManager();
30    if (atManager != null) {
31        let tokenID = appInfo.accessTokenId;
32        console.info('[permission] case accessTokenID is ' + tokenID);
33        let permissionName1 = 'ohos.permission.LOCATION';
34        await atManager.grantUserGrantedPermission(tokenID, permissionName1, 1).then((result) => {
35            console.info('[permission] case grantUserGrantedPermission success :' + JSON.stringify(result));
36        }).catch((err) => {
37            console.info('[permission] case grantUserGrantedPermission failed :' + JSON.stringify(err));
38        });
39    } else {
40        console.info('[permission] case apply permission failed, createAtManager failed');
41    }
42}
43
44function sleep(delay) {
45    return new Promise(resovle => setTimeout(resovle, delay))
46}
47
48function checkWifiPowerOn(){
49    console.info("[wifi_test]wifi status:" + wifi.isWifiActive());
50}
51function resolveIP(ip) {
52    return (ip>>24 & 0xFF) + "." + (ip>>16 & 0xFF) + "." + (ip>>8 & 0xFF) + "." + (ip & 0xFF);
53}
54
55export default function actsWifiFunctionsTest() {
56    describe('actsWifiFunctionsTest', function() {
57        beforeAll(async function (done) {
58            console.info('beforeAll case');
59            await applyPermission();
60            done();
61        })
62
63        beforeEach(function () {
64            checkWifiPowerOn();
65        })
66        afterEach(function () {
67        })
68
69        /**
70        * @tc.number Communication_WiFi_XTS_Sta_0002
71        * @tc.name testgetScanInfos
72        * @tc.desc Test getScanInfos promise and callback API functionality.
73        * @tc.type Function
74        * @tc.level Level 0
75        */
76        it('Communication_WiFi_XTS_Sta_0002', 0, async function (done) {
77            await wifi.getScanInfos()
78                .then(result => {
79                    let clen = Object.keys(result).length;
80                    expect(true).assertEqual(clen >= 0);
81                    console.info("[wifi_test]getScanInfos promise result:" + JSON.stringify(result));
82                });
83            function getScan() {
84                return new Promise((resolve, reject) => {
85                    wifi.getScanInfos(
86                        (err, result) => {
87                            if (err) {
88                                console.log("[wifi_test] wifi getScanInfos failed:" + err);
89                            }
90                            let clen = Object.keys(result).length;
91                            if (!(clen == 0)) {
92                                expect(clen).assertLarger(0);
93                                console.info("[wifi_test] getScanInfos callback result: " + JSON.stringify(result));
94                                for (let j = 0; j < clen; ++j) {
95                                    console.info("ssid: " + result[j].ssid + "bssid: " + result[j].bssid +
96                                    "securityType: " + result[j].securityType +
97                                    "rssi: " + result[j].rssi + "band: " + result[j].band +
98                                    "frequency: " + result[j].frequency + "channelWidth: " + result[j].channelWidth +
99                                    "timestamp" + result[j].timestamp + "capabilities" + result[j].capabilities);
100                                }
101                            }
102                            resolve();
103                        });
104                });
105            }
106            await getScan();
107            done();
108        })
109
110        /**
111        * @tc.number Communication_WiFi_XTS_Sta_0021
112        * @tc.name testGetSignalLevel
113        * @tc.desc Test getSignalLevel API functionality..
114        * @tc.type Function
115        * @tc.level Level 3
116        */
117        it('Communication_WiFi_XTS_Sta_0021', 0, function () {
118            console.info("[wifi_test] check the 2.4G rssi assgined to level test.");
119            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-65, 1));
120            expect(wifi.getSignalLevel(-65, 1)).assertEqual(4);
121            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-66, 1));
122            expect(wifi.getSignalLevel(-66, 1)).assertEqual(3);
123            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-75, 1));
124            expect(wifi.getSignalLevel(-75, 1)).assertEqual(3);
125            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-76, 1));
126            expect(wifi.getSignalLevel(-76, 1)).assertEqual(2);
127            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-82, 1));
128            expect(wifi.getSignalLevel(-82, 1)).assertEqual(2);
129            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-83, 1));
130            expect(wifi.getSignalLevel(-83, 1)).assertEqual(1);
131            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-88, 1));
132            expect(wifi.getSignalLevel(-88, 1)).assertEqual(1);
133            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-89, 1));
134            expect(wifi.getSignalLevel(-89, 1)).assertEqual(0);
135            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-127, 1));
136            expect(wifi.getSignalLevel(-127, 1)).assertEqual(0);
137
138            console.info("[wifi_test] check the 5G rssi assgined to level test.");
139            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-65, 2));
140            expect(wifi.getSignalLevel(-65, 2)).assertEqual(4);
141            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-66, 2));
142            expect(wifi.getSignalLevel(-66, 2)).assertEqual(3);
143            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-72, 2));
144            expect(wifi.getSignalLevel(-72, 2)).assertEqual(3);
145            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-73, 2));
146            expect(wifi.getSignalLevel(-73, 2)).assertEqual(2);
147            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-79, 2));
148            expect(wifi.getSignalLevel(-79, 2)).assertEqual(2);
149            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-80, 2));
150            expect(wifi.getSignalLevel(-80, 2)).assertEqual(1);
151            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-85, 2));
152            expect(wifi.getSignalLevel(-85, 2)).assertEqual(1);
153            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-86, 2));
154            expect(wifi.getSignalLevel(-86, 2)).assertEqual(0);
155            console.info("[wifi_test] getSignalLevel " + wifi.getSignalLevel(-127, 2));
156            expect(wifi.getSignalLevel(-127, 2)).assertEqual(0);
157        })
158
159        /**
160        * @tc.number Communication_WiFi_XTS_Sta_0017
161        * @tc.name testgetCountryCode
162        * @tc.desc Test getCountryCode API function.
163        * @tc.type Function
164        * @tc.level Level 3
165        */
166        it('Communication_WiFi_XTS_Sta_0017', 0, function () {
167            expect(wifi.isWifiActive()).assertTrue();
168            let getCountryCodeResult = wifi.getCountryCode();
169            console.info("[wifi_test]getCountryCode :" + JSON.stringify(getCountryCodeResult));
170            let countrylenth = getCountryCodeResult.length;
171            console.info("[wifi_test]getCountryCode.length :" + JSON.stringify(countrylenth));
172            expect(true).assertEqual(countrylenth == 2);
173        })
174
175        /**
176        * @tc.number Communication_WiFi_XTS_Sta_0020
177        * @tc.name testFeatureSupported
178        * @tc.desc Test FeatureSupported API function.
179        * @tc.type Function
180        * @tc.level Level 3
181        */
182        it('Communication_WiFi_XTS_Sta_0020', 0, function () {
183            expect(wifi.isWifiActive()).assertTrue();
184            let wifiUtils = {
185                WIFI_FEATURE_INFRA: 0x0001,
186                WIFI_FEATURE_INFRA_5G: 0x0002,
187                WIFI_GAS_ANQP: 0x0004,
188                WIFI_WIFI_DIRECT: 0x0008,
189                WIFI_FEATURE_MOBILE_HOTSPOT: 0x0010,
190                WIFI_FEATURE_AWARE: 0x0040,
191                WIFI_FEATURE_AP_STA: 0x8000,
192                WIFI_FEATURE_WPA3_SAE: 0x8000000,
193                WIFI_FEATURE_WPA3_SUITE_B: 0x10000000,
194                WIFI_FEATURE_OWE: 0x20000000
195            }
196            let isSupport1 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_INFRA);
197            console.info("[wifi_test] isFeatureSupported -> " + isSupport1);
198            let isSupport2 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_INFRA_5G);
199            console.info("[wifi_test] isFeatureSupported2 -> " + isSupport2);
200            let isSupport3 = wifi.isFeatureSupported(wifiUtils.WIFI_GAS_ANQP);
201            console.info("[wifi_test] isFeatureSupported3 -> " + isSupport3);
202            let isSupport4 = wifi.isFeatureSupported(wifiUtils.WIFI_WIFI_DIRECT);
203            console.info("[wifi_test] isFeatureSupported4 -> " + isSupport4);
204            let isSupport5 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_MOBILE_HOTSPOT);
205            console.info("[wifi_test] isFeatureSupported5 -> " + isSupport5);
206            let isSupport6 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_AWARE);
207            console.info("[wifi_test] isFeatureSupported6 -> " + isSupport6);
208            let isSupport7 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_AP_STA);
209            console.info("[wifi_test] isFeatureSupported7 -> " + isSupport7);
210            let isSupport8 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_WPA3_SAE);
211            console.info("[wifi_test] isFeatureSupported8 -> " + isSupport8);
212            let isSupport9 = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_WPA3_SUITE_B);
213            console.info("[wifi_test] isFeatureSupported9 -> " + isSupport9);
214            let isSupport = wifi.isFeatureSupported(wifiUtils.WIFI_FEATURE_OWE);
215            console.info("[wifi_test] isFeatureSupported -> " + isSupport);
216        })
217
218        /**
219        * @tc.number Communication_WiFi_XTS_Sta_0004
220        * @tc.name testGetLinkedInfo
221        * @tc.desc Test Test getLinkedInfo and getIpInfo  information.
222        * @tc.type Function
223        * @tc.level Level 1
224        */
225        it('Communication_WiFi_XTS_Sta_0004', 0, async function (done) {
226            let isConnectedResult = wifi.isConnected();
227            let ipInfoResult = wifi.getIpInfo();
228            expect(JSON.stringify(ipInfoResult)).assertContain("gateway");
229            let ipAddress = resolveIP(ipInfoResult.ipAddress);
230            console.info("[wifi_test]ipAddress result: " + ipAddress);
231            console.info("gateway: " + ipInfoResult.gateway + "ipAddress: " + ipInfoResult.ipAddress
232            + "leaseDuration: " + ipInfoResult.leaseDuration +
233            "leaseDuration: " + ipInfoResult.leaseDuration +
234            "netmask: " + ipInfoResult.netmask + "primaryDns:" + ipInfoResult.primaryDns +
235            "secondDns: " + ipInfoResult.secondDns + "serverIp: " + ipInfoResult.serverIp);
236            await wifi.getLinkedInfo()
237                .then((result) => {
238                    console.info("[wifi_test]get wifi link promise:" + JSON.stringify(result));
239                    done();
240                }).catch((error) => {
241                    console.info("[wifi_test]promise then error." + JSON.stringify(error));
242                    expect().assertFail();
243                });
244
245            function getLinked(){
246                return new Promise((resolve, reject) => {
247                    wifi.getLinkedInfo(
248                        (err, result) => {
249                            if(err) {
250                                console.log("[wifi_test]wifi getLinkedInfo failed " + err);
251                            }
252                            let clen = Object.keys(result).length;
253                            expect(clen).assertLarger(0);
254                            console.info("[wifi_test]getLinkedInfo callback result: " + JSON.stringify(result));
255                            console.info("ssid: " + result.ssid + "bssid:" + result.bssid + "band: " + result.band +
256                            "isHidden: " + result.isHidden + "isRestricted: " + result.isRestricted +
257                            "chload: " + result.chload + "rssi " + result.rssi + "netWorkId: " + result.netWorkId +
258                            "linkSpeed: " + result.linkSpeed + "frequency:"
259                            + result.frequency + "snr:" + result.snr +
260                            "macAddress: " + result.macAddress + "ipAddress: " + result.ipAddress +
261                            "suppState: " + result.suppState + "ConnState: " + result.ConnState
262                            + "macType: " + result.macType);
263                            let state = wifi.getLinkedInfo().ConnState;
264                            if (state == wifi.ConnState.SCANNING) {
265                                expect(true).assertEqual(state == 0);
266                            }
267                            if (state == wifi.ConnState.CONNECTING) {
268                                expect(true).assertEqual(state == 1);
269                            }
270                            if (state == wifi.ConnState.AUTHENTICATING) {
271                                expect(true).assertEqual(state == 2);
272                            }
273                            if (state == wifi.ConnState.OBTAINING_IPADDR) {
274                                expect(true).assertEqual(state == 3);
275                            }
276                            if (state == wifi.ConnState.CONNECTED) {
277                                expect(true).assertEqual(state == 4);
278                            }
279                            if (state == wifi.ConnState.DISCONNECTING) {
280                                expect(true).assertEqual(state == 5);
281                            }
282                            if (state == wifi.ConnState.DISCONNECTED) {
283                                expect(true).assertEqual(state == 6);
284                            }
285                            if (state == wifi.ConnState.UNKNOWN) {
286                                expect(true).assertEqual(state == 7);
287                            }
288                            resolve();
289                        });
290                });
291            }
292            await getLinked();
293            done();
294        })
295        console.log("*************[wifi_test] start wifi js unit test end*************");
296    })
297}
298
299