• 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 'deccjsunit/index'
17
18import wifi from '@ohos.wifi'
19
20function sleep(delay) {
21    var start = (new Date()).getTime();
22    while ((new Date()).getTime() - start > delay) {
23        break;
24    }
25}
26
27function checkWifiPowerOn(){
28	console.info("wifi_test/wifi status:" + wifi.isWifiActive());
29}
30
31function resolveIP(ip) {
32    return (ip>>24 & 0xFF) + "." + (ip>>16 & 0xFF ) + "." +(ip>>8 & 0xFF ) + "." + (ip & 0xFF );
33}
34
35
36let WifiSecurityType = {
37    WIFI_SEC_TYPE_INVALID: 0,
38    WIFI_SEC_TYPE_OPEN: 1,
39    WIFI_SEC_TYPE_WEP: 2,
40    WIFI_SEC_TYPE_PSK: 3,
41    WIFI_SEC_TYPE_SAE: 4,
42}
43
44let ConnState = {
45    SCANNING: 0,
46    CONNECTING: 1,
47    AUTHENTICATING: 2,
48    OBTAINING_IPADDR: 3,
49    CONNECTED: 4,
50    DISCONNECTING: 5,
51    DISCONNECTED: 6,
52    UNKNOWN: 7,
53}
54
55let untrustedDeviceConfig = {
56    "ssid": "untrusted_ssid",
57    "bssid": "",
58    "preSharedKey": "12345678",
59    "isHiddenSsid": false,
60    "securityType":WifiSecurityType.WIFI_SEC_TYPE_PSK
61}
62
63let WifiChannelWidth = {
64    WIDTH_20MHZ : 0,
65    WIDTH_40MHZ : 1,
66    WIDTH_80MHZ : 2,
67    WIDTH_160MHZ : 3,
68    WIDTH_80MHZ_PLUS : 4,
69    WIDTH_INVALID : null,
70}
71
72describe('ActsWifiTest', function() {
73
74    beforeEach(function() {
75        checkWifiPowerOn();
76    })
77
78    afterEach(function() {})
79
80
81    /**
82     * @tc.number     open_0001
83     * @tc.name       SUB_Communication_WiFi_Sta_Open_0001
84     * @since 6
85     * @tc.desc       Test wifi.isWifiActive API functionality.
86     */
87    it('SUB_Communication_WiFi_Sta_WifiActive_0001', 0,  function() {
88        sleep(3000);
89        console.log("[wifi_test]  check the state of wifi: " + wifi.isWifiActive());
90        expect(wifi.isWifiActive()).assertTrue();
91    })
92
93    /**
94     * @tc.number     Scan_0001
95     * @tc.name       SUB_Communication_WiFi_Sta_Scan_0001
96     * @tc.desc       Test get ScanInfos callback API functionality.
97     */
98    it('SUB_Communication_WiFi_Sta_Scan_0001', 0, async function(done) {
99        let scan = wifi.scan();
100        sleep(3000);
101        console.log("[wifi_test] open wifi scan result: " + scan);
102        expect(scan).assertTrue();
103
104        await wifi.getScanInfos()
105            .then(result => {
106                let clen = Object.keys(result).length;
107                expect(clen).assertLarger(0);
108                console.info("[wifi_test] getScanInfos promise result " + JSON.stringify(result));
109            });
110
111        wifi.getScanInfos(
112            (err,result) => {
113                if(err) {
114                    console.log("[wifi_test] wifi getScanInfos failed " + err);
115                }
116                let clen = Object.keys(result).length;
117                if (!(clen == 0)) {
118                    expect(clen).assertLarger(0);
119                    console.info("[wifi_test] getScanInfos callback result: " + JSON.stringify(result));
120                    for (let j = 0; j < clen; ++j) {
121                        console.info("ssid: " + result[j].ssid + "bssid: " + result[j].bssid +
122                        "securityType: " + result[j].securityType +
123                         "rssi: " + result[j].rssi + "band: " + result[j].band +
124                          "frequency: " + result[j].frequency +
125                          "timestamp" + result[j].timestamp + "capabilities" + result[j].capabilities
126                          + "channelWidth: " + result[j].channelWidth+"centerFrequency0"
127                          +result[j].centerFrequency0
128                          +"centerFrequency1"+result[j].centerFrequency1
129                          +"infoElems"+result[j].infoElems
130                          );
131                    }
132                }
133                done()
134            });
135    })
136
137    /**
138     * @tc.number     Scan_0004
139     * @tc.name       SUB_Communication_WiFi_Sta_Scan_0004
140     * @since 7
141     * @tc.desc       Test wifi.getSignalLevel API functionality.
142     */
143    it('SUB_Communication_WiFi_Sta_Scan_0004', 0,  function() {
144        console.info("[wifi_test] check the 2.4G rssi assgined to level test.");
145        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-65,1));
146        expect(wifi.getSignalLevel(-65, 1)).assertEqual(4);
147        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-66,1));
148        expect(wifi.getSignalLevel(-66, 1)).assertEqual(3);
149        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-75,1));
150        expect(wifi.getSignalLevel(-75, 1)).assertEqual(3);
151        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-76,1));
152        expect(wifi.getSignalLevel(-76, 1)).assertEqual(2);
153        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-82,1));
154        expect(wifi.getSignalLevel(-82, 1)).assertEqual(2);
155        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-83,1));
156        expect(wifi.getSignalLevel(-83, 1)).assertEqual(1);
157        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-88,1));
158        expect(wifi.getSignalLevel(-88, 1)).assertEqual(1);
159        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-89,1));
160        expect(wifi.getSignalLevel(-89, 1)).assertEqual(0);
161        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-127,1));
162        expect(wifi.getSignalLevel(-127, 1)).assertEqual(0);
163        console.info("[wifi_test] check the 5G rssi assgined to level test.");
164        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-65,2));
165        expect(wifi.getSignalLevel(-65, 2)).assertEqual(4);
166        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-66,2));
167        expect(wifi.getSignalLevel(-66, 2)).assertEqual(3);
168        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-72,2));
169        expect(wifi.getSignalLevel(-72, 2)).assertEqual(3);
170        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-73,2));
171        expect(wifi.getSignalLevel(-73, 2)).assertEqual(2);
172        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-79,2));
173        expect(wifi.getSignalLevel(-79, 2)).assertEqual(2);
174        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-80,2));
175        expect(wifi.getSignalLevel(-80, 2)).assertEqual(1);
176        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-85,2));
177        expect(wifi.getSignalLevel(-85, 2)).assertEqual(1);
178        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-86,2));
179        expect(wifi.getSignalLevel(-86, 2)).assertEqual(0);
180        console.info("[wifi_test] getSignalLevel" + wifi.getSignalLevel(-127,2));
181        expect(wifi.getSignalLevel(-127, 2)).assertEqual(0);
182
183    })
184
185
186    /**
187     * @tc.number SUB_Communication_WiFi_Sta_info_0002
188     * @tc.name testgetCountryCode
189     * @tc.desc Test getCountryCode api.
190     * @since 7
191     * @tc.size MEDIUM
192     * @tc.type Function
193     * @tc.level Level 3
194     */
195    it('SUB_Communication_WiFi_Sta_Info_0002', 0,  function() {
196        expect(wifi.isWifiActive()).assertTrue();
197        let countryCode = wifi.getCountryCode();
198        console.info("[wifi_test] getCountryCode -> " + JSON.stringify(countryCode));
199        let countrylen = countryCode.length;
200        console.info("[wifi_test] getCountryCode.length -> " + JSON.stringify(countrylen));
201        expect(true).assertEqual(countrylen == 2);
202    })
203
204    /**
205     * @tc.number SUB_Communication_WiFi_Sta_info_0004
206     * @tc.name testFeatureSupported
207     * @tc.desc Test FeatureSupported api.
208     * @since 7
209     * @tc.size MEDIUM
210     * @tc.type Function
211     * @tc.level Level 3
212     */
213
214    it('SUB_Communication_WiFi_Sta_info_0004', 0,  function () {
215        expect(wifi.isWifiActive()).assertTrue();
216        let WifiUtils = {
217            WIFI_FEATURE_INFRA: 0x0001,
218            WIFI_FEATURE_INFRA_5G: 0x0002,
219            WIFI_GAS_ANQP: 0x0004,
220            WIFI_WIFI_DIRECT: 0x0008,
221            WIFI_FEATURE_MOBILE_HOTSPOT: 0x0010,
222            WIFI_FEATURE_AWARE: 0x0040,
223            WIFI_FEATURE_AP_STA: 0x8000,
224            WIFI_FEATURE_WPA3_SAE: 0x8000000,
225            WIFI_FEATURE_WPA3_SUITE_B:0x10000000,
226            WIFI_FEATURE_OWE:0x20000000
227        }
228        let isSupport1 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_INFRA);
229        console.info("[wifi_test] isFeatureSupported -> " + isSupport1);
230        let isSupport2 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_INFRA_5G);
231        console.info("[wifi_test] isFeatureSupported2 -> " + isSupport2);
232        let isSupport3 = wifi.isFeatureSupported(WifiUtils.WIFI_GAS_ANQP);
233        console.info("[wifi_test] isFeatureSupported3 -> " + isSupport3);
234        let isSupport4 = wifi.isFeatureSupported(WifiUtils.WIFI_WIFI_DIRECT);
235        console.info("[wifi_test] isFeatureSupported4 -> " + isSupport4);
236        let isSupport5 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_MOBILE_HOTSPOT);
237        console.info("[wifi_test] isFeatureSupported5 -> " + isSupport5);
238        let isSupport6 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_AWARE);
239        console.info("[wifi_test] isFeatureSupported6 -> " + isSupport6);
240        let isSupport7 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_AP_STA);
241        console.info("[wifi_test] isFeatureSupported7 -> " + isSupport7);
242        let isSupport8 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_WPA3_SAE);
243        console.info("[wifi_test] isFeatureSupported8 -> " + isSupport8);
244        let isSupport9 = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_WPA3_SUITE_B);
245        console.info("[wifi_test] isFeatureSupported9 -> " + isSupport9);
246        let isSupport = wifi.isFeatureSupported(WifiUtils.WIFI_FEATURE_OWE);
247        console.info("[wifi_test] isFeatureSupported -> " + isSupport);
248    })
249
250    /**
251     * @tc.number     conn_Config_0002
252     * @tc.name       SUB_Communication_WiFi_Sta_Conn_Info_0002
253     * @since 7
254     * @tc.desc       Test getLinkedInfo information
255     */
256    it('SUB_Communication_WiFi_Sta_Conn_Info_0002', 0, async function(done) {
257        let isConnected = wifi.isConnected();
258        expect(isConnected).assertFalse();
259        await wifi.getLinkedInfo()
260            .then((result) => {
261                console.info("[wifi_test] get wifi link [promise] -> " + JSON.stringify(result));
262                expect(JSON.stringify(result)).assertContain('band');
263                done();
264            }).catch((error) => {
265                console.info("[wifi_test] promise then error." + JSON.stringify(error));
266                expect().assertFail();
267            });
268    })
269
270    /**
271     * @tc.number     conn_Config_0003
272     * @tc.name       SUB_Communication_WiFi_Sta_Conn_Info_0003
273     * @since 7
274     * @tc.desc       Test getLinkedInfo callback information
275     */
276    it('SUB_Communication_WiFi_Sta_Conn_Info_0003', 0, async function(done) {
277        wifi.getLinkedInfo(
278            (err,result) => {
279                if(err) {
280                    console.log("[wifi_test] wifi getLinkedInfo failed " + err);
281                }
282                let clen = Object.keys(result).length;
283                expect(clen).assertLarger(0);
284                console.info("[wifi_test] getLinkedInfo callback result: " + JSON.stringify(result));
285                console.info("ssid: " + result.ssid + "bssid:"+ result.bssid +"band: " + result.band+
286                "isHidden: " + result.isHidden + "isRestricted: " + result.isRestricted +
287                "chload: " + result.chload + "rssi " + result.rssi + "netWorkId" + result.netWorkId +
288                "linkSpeed: " + result.linkSpeed + "frequency:"
289                 + result.frequency + "snr:" +result.snr +
290                "macAddress: " + result.macAddress + "ipAddress: " + result.ipAddress +
291                "suppState:" + result.suppState +"connState: " + result.connState+
292                "macType: " + result.macType);
293
294                let state = wifi.getLinkedInfo().connState;
295                if(state == ConnState.SCANNING){
296                    expect(true).assertEqual(state == 0);
297                }
298                if(state == ConnState.CONNECTING){
299                    expect(true).assertEqual(state == 1);
300                }
301                if(state == ConnState.AUTHENTICATING){
302                    expect(true).assertEqual(state == 2);
303                }
304                if(state == ConnState.OBTAINING_IPADDR){
305                    expect(true).assertEqual(state == 3);
306                }
307                if(state == ConnState.CONNECTED){
308                    expect(true).assertEqual(state == 4);
309                }
310                if(state == ConnState.DISCONNECTING){
311                    expect(true).assertEqual(state == 5);
312                }
313                if(state == ConnState.DISCONNECTED){
314                    expect(true).assertEqual(state == 6);
315                }
316                if(state == ConnState.UNKNOWN){
317                    expect(true).assertEqual(state == 7);
318                }
319                done();
320            });
321    })
322
323    /**
324    * @tc.number     Conn_Info_0001
325    * @tc.name       SUB_Communication_WiFi_Sta_Conn_Info_0003
326    * @since 7
327    * @tc.desc       Test get IpInfo information
328    */
329    it('SUB_Communication_WiFi_Sta_Conn_Info_0003', 0,  function () {
330        let isConnected= wifi.isConnected();
331        expect(isConnected).assertFalse();
332        let ipInfo = wifi.getIpInfo();
333        expect(JSON.stringify(ipInfo)).assertContain("gateway");
334        let ipAddress = resolveIP(ipInfo.ipAddress);
335        console.info("ipAddress result: " + ipAddress);
336        console.info("gateway: " + ipInfo.gateway + "ipAddress: " + ipInfo.ipAddress
337         + "leaseDuration: " + ipInfo.leaseDuration +
338        "leaseDuration: " + ipInfo.leaseDuration +
339        "netmask: " + ipInfo.netmask + "primaryDns:" + ipInfo.primaryDns +
340        "secondDns: " + ipInfo.secondDns + "serverIp: " + ipInfo.serverIp );
341    })
342
343   /**
344    * @tc.number     wifiStateChange_0001
345    * @tc.name       SUB_Communication_WiFi_Sta_wifiStateChange_0001
346    * @since 7
347    * @tc.desc       Test wifiStateChange callback
348    */
349    it('SUB_Communication_WiFi_Sta_wifiStateChange_0001', 0, async function (done) {
350        wifi.on('wifiStateChange', async result => {
351             console.info("wifiStateChange callback, result:" + JSON.stringify(result));
352             expect(true).assertEqual(result !=null);
353             let promise = new Promise((resolve) => {
354                wifi.off('wifiStateChange', result => {
355                    console.info("offwifiStateChange callback, result: " + JSON.stringify(result));
356                    expect(true).assertEqual(result !=null);
357                    resolve()
358                });
359            })
360             await promise.then(done)
361        });
362        done();
363    })
364
365  /**
366    * @tc.number     wifiConnectionChange_0002
367    * @tc.name       SUB_Communication_WiFi_Sta_wifiConnectionChange_0002
368    * @since 7
369    * @tc.desc       Test wifiStateChange callback
370    */
371    it('SUB_Communication_WiFi_Sta_wifiConnectionChange_0002', 0, async function (done) {
372        wifi.on('wifiConnectionChange', async result => {
373            console.info("wifiConnectionChange callback, result:" + JSON.stringify(result));
374            expect(true).assertEqual(result !=null);
375            let promise = new Promise((resolve) => {
376                console.info('[wifi_test] offwifiConnectionChange test start ...');
377                wifi.off('wifiConnectionChange', result => {
378                    console.info("offwifiConnectionChange callback, result:  " + JSON.stringify(result));
379                    expect(true).assertEqual(result !=null);
380                    resolve()
381                });
382            })
383            await promise.then(done)
384         });
385        done();
386    })
387
388   /**
389    * @tc.number     wifiScanStateChange_0003
390    * @tc.name       SUB_Communication_WiFi_Sta_wifiScanStateChange_0003
391    * @since 7
392    * @tc.desc       Test wifiScanStateChange callback
393    */
394    it('SUB_Communication_WiFi_Sta_wifiScanStateChange_0003', 0, async function (done) {
395        wifi.on('wifiScanStateChange', async result => {
396             console.info("wifiScanStateChange callback, result:" + JSON.stringify(result));
397             expect(true).assertEqual(result !=null);
398             let promise = new Promise((resolve) => {
399                console.info('[wifi_test] offwifiScanStateChange test start ...');
400                wifi.off('wifiScanStateChange', result => {
401                    console.info("offwifiScanStateChange callback, result:  " + JSON.stringify(result));
402                    expect(true).assertEqual(result !=null);
403                    resolve()
404                });
405            })
406             await promise.then(done)
407         });
408        let scan = wifi.scan();
409        sleep(3000);
410        done();
411
412    })
413
414   /**
415    * @tc.number     wifiRssiChange_0004
416    * @tc.name       SUB_Communication_WiFi_Sta_wifiRssiChange_0004
417    * @since 7
418    * @tc.desc       Test wifiRssiChange callback
419    */
420   it('SUB_Communication_WiFi_Sta_wifiRssiChange_0004', 0, async function (done) {
421        wifi.on('wifiRssiChange', async result => {
422             console.info("wifiRssiChange callback, result:" + JSON.stringify(result));
423             expect(true).assertEqual(result !=null);
424             let promise = new Promise((resolve) => {
425                console.info('[wifi_test] offwifiRssiChange test start ...');
426                wifi.off('wifiRssiChange', result => {
427                    console.info("offwifiRssiChange callback, result:  " + JSON.stringify(result));
428                    expect(true).assertEqual(result !=null);
429                    resolve()
430                });
431            })
432            await promise.then(done)
433         });
434         done();
435
436    })
437
438    /**
439     * @tc.number SUB_Communication_WiFi_Hotspot_ON_0001
440     * @tc.name testhotspotStateChangeOn
441     * @tc.desc Test hotspotStateChangeOn api.
442     * @since 7
443     * @tc.size MEDIUM
444     * @tc.type Function
445     * @tc.level Level 3
446     */
447    it('SUB_Communication_WiFi_Hotspot_ON_0001', 0, async function (done) {
448        console.info("[wifi_test]hotspotStateChange On test");
449        try {
450            await wifi.on('hotspotStateChange', (data) => {
451                console.info("[wifi_test] hotspotStateChange On ->" + data);
452                expect(true).assertEqual(data != null);
453            });
454
455        }catch(e) {
456            expect(null).assertFail();
457        }
458        done();
459    })
460
461    /**
462     * @tc.number SUB_Communication_WiFi_Hotspot_Off_0002
463     * @tc.name testhotspotStateChangeOff
464     * @tc.desc Test hotspotStateChange api.
465     * @since 7
466     * @tc.size MEDIUM
467     * @tc.type Function
468     * @tc.level Level 3
469     */
470    it('SUB_Communication_WiFi_Hotspot_Off_0002', 0, async function (done) {
471        console.info("[wifi_test] hotspotStateChange off test");
472        try {
473           await wifi.off('hotspotStateChange', (data) => {
474                console.info("[wifi_test] hotspotStateChange Off ->" + data);
475                expect(true).assertEqual(data != null);
476            });
477
478        }catch(e) {
479            expect(null).assertFail();
480        }
481        done();
482    })
483    console.log("*************[wifi_test] start wifi js unit test end*************");
484})
485
486
487