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