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