1#!/usr/bin/env python3.4 2# 3# Copyright 2016 - The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17import pprint 18import random 19import time 20 21from acts import asserts 22from acts import signals 23from acts.test_decorators import test_tracker_info 24from acts.test_utils.net.net_test_utils import start_tcpdump 25from acts.test_utils.net.net_test_utils import stop_tcpdump 26from acts.test_utils.wifi import wifi_test_utils as wutils 27from acts.test_utils.wifi.WifiBaseTest import WifiBaseTest 28 29WifiEnums = wutils.WifiEnums 30 31# EAP Macros 32EAP = WifiEnums.Eap 33EapPhase2 = WifiEnums.EapPhase2 34# Enterprise Config Macros 35Ent = WifiEnums.Enterprise 36 37 38class WifiEnterpriseTest(WifiBaseTest): 39 def __init__(self, controllers): 40 WifiBaseTest.__init__(self, controllers) 41 42 def setup_class(self): 43 self.dut = self.android_devices[0] 44 wutils.wifi_test_device_init(self.dut) 45 # If running in a setup with attenuators, set attenuation on all 46 # channels to zero. 47 if getattr(self, "attenuators", []): 48 for a in self.attenuators: 49 a.set_atten(0) 50 required_userparam_names = ( 51 "ca_cert", "client_cert", "client_key", "passpoint_ca_cert", 52 "passpoint_client_cert", "passpoint_client_key", "eap_identity", 53 "eap_password", "invalid_ca_cert", "invalid_client_cert", 54 "invalid_client_key", "fqdn", "provider_friendly_name", "realm", 55 "device_password", "ping_addr", "radius_conf_2g", "radius_conf_5g", 56 "radius_conf_pwd") 57 self.unpack_userparams(required_userparam_names, 58 roaming_consortium_ids=None, 59 plmn=None) 60 61 if "AccessPoint" in self.user_params: 62 self.legacy_configure_ap_and_start( 63 ent_network=True, 64 radius_conf_2g=self.radius_conf_2g, 65 radius_conf_5g=self.radius_conf_5g, 66 ent_network_pwd=True, 67 radius_conf_pwd=self.radius_conf_pwd,) 68 self.ent_network_2g = self.ent_networks[0]["2g"] 69 self.ent_network_5g = self.ent_networks[0]["5g"] 70 self.ent_network_pwd = self.ent_networks_pwd[0]["2g"] 71 72 # Default configs for EAP networks. 73 self.config_peap0 = { 74 Ent.EAP: int(EAP.PEAP), 75 Ent.CA_CERT: self.ca_cert, 76 Ent.IDENTITY: self.eap_identity, 77 Ent.PASSWORD: self.eap_password, 78 Ent.PHASE2: int(EapPhase2.MSCHAPV2), 79 WifiEnums.SSID_KEY: self.ent_network_5g[WifiEnums.SSID_KEY], 80 } 81 self.config_peap1 = dict(self.config_peap0) 82 self.config_peap1[WifiEnums.SSID_KEY] = \ 83 self.ent_network_2g[WifiEnums.SSID_KEY] 84 self.config_tls = { 85 Ent.EAP: int(EAP.TLS), 86 Ent.CA_CERT: self.ca_cert, 87 WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], 88 Ent.CLIENT_CERT: self.client_cert, 89 Ent.PRIVATE_KEY_ID: self.client_key, 90 Ent.IDENTITY: self.eap_identity, 91 } 92 self.config_ttls = { 93 Ent.EAP: int(EAP.TTLS), 94 Ent.CA_CERT: self.ca_cert, 95 Ent.IDENTITY: self.eap_identity, 96 Ent.PASSWORD: self.eap_password, 97 Ent.PHASE2: int(EapPhase2.MSCHAPV2), 98 WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], 99 } 100 self.config_pwd = { 101 Ent.EAP: int(EAP.PWD), 102 Ent.IDENTITY: self.eap_identity, 103 Ent.PASSWORD: self.eap_password, 104 WifiEnums.SSID_KEY: self.ent_network_pwd[WifiEnums.SSID_KEY], 105 } 106 self.config_sim = { 107 Ent.EAP: int(EAP.SIM), 108 WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], 109 } 110 self.config_aka = { 111 Ent.EAP: int(EAP.AKA), 112 WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], 113 } 114 self.config_aka_prime = { 115 Ent.EAP: int(EAP.AKA_PRIME), 116 WifiEnums.SSID_KEY: self.ent_network_2g[WifiEnums.SSID_KEY], 117 } 118 119 # Base config for passpoint networks. 120 self.config_passpoint = { 121 Ent.FQDN: self.fqdn, 122 Ent.FRIENDLY_NAME: self.provider_friendly_name, 123 Ent.REALM: self.realm, 124 Ent.CA_CERT: self.passpoint_ca_cert 125 } 126 if self.plmn: 127 self.config_passpoint[Ent.PLMN] = self.plmn 128 if self.roaming_consortium_ids: 129 self.config_passpoint[ 130 Ent.ROAMING_IDS] = self.roaming_consortium_ids 131 132 # Default configs for passpoint networks. 133 self.config_passpoint_tls = dict(self.config_tls) 134 self.config_passpoint_tls.update(self.config_passpoint) 135 self.config_passpoint_tls[Ent.CLIENT_CERT] = self.passpoint_client_cert 136 self.config_passpoint_tls[ 137 Ent.PRIVATE_KEY_ID] = self.passpoint_client_key 138 del self.config_passpoint_tls[WifiEnums.SSID_KEY] 139 self.config_passpoint_ttls = dict(self.config_ttls) 140 self.config_passpoint_ttls.update(self.config_passpoint) 141 del self.config_passpoint_ttls[WifiEnums.SSID_KEY] 142 # Set screen lock password so ConfigStore is unlocked. 143 self.dut.droid.setDevicePassword(self.device_password) 144 self.tcpdump_pid = None 145 146 def teardown_class(self): 147 wutils.reset_wifi(self.dut) 148 self.dut.droid.disableDevicePassword(self.device_password) 149 self.dut.ed.clear_all_events() 150 151 def setup_test(self): 152 self.dut.droid.wifiStartTrackingStateChange() 153 self.dut.droid.wakeLockAcquireBright() 154 self.dut.droid.wakeUpNow() 155 wutils.reset_wifi(self.dut) 156 self.dut.ed.clear_all_events() 157 self.tcpdump_pid = start_tcpdump(self.dut, self.test_name) 158 159 def teardown_test(self): 160 stop_tcpdump(self.dut, self.tcpdump_pid, self.test_name) 161 self.dut.droid.wakeLockRelease() 162 self.dut.droid.goToSleepNow() 163 self.dut.droid.wifiStopTrackingStateChange() 164 165 def on_fail(self, test_name, begin_time): 166 self.dut.cat_adb_log(test_name, begin_time) 167 168 """Helper Functions""" 169 170 def eap_negative_connect_logic(self, config, ad): 171 """Tries to connect to an enterprise network with invalid credentials 172 and expect a failure. 173 174 Args: 175 config: A dict representing an invalid EAP credential. 176 177 Returns: 178 True if connection failed as expected, False otherwise. 179 """ 180 with asserts.assert_raises(signals.TestFailure, extras=config): 181 verdict = wutils.wifi_connect(ad, config) 182 asserts.explicit_pass("Connection failed as expected.") 183 184 def gen_negative_configs(self, config, neg_params): 185 """Generic function used to generate negative configs. 186 187 For all the valid configurations, if a param in the neg_params also 188 exists in a config, a copy of the config is made with an invalid value 189 of the param. 190 191 Args: 192 config: A valid configuration. 193 neg_params: A dict that has all the invalid values. 194 195 Returns: 196 An invalid configurations generated based on the valid 197 configuration. Each invalid configuration has a different invalid 198 field. 199 """ 200 negative_config = dict(config) 201 if negative_config in [self.config_sim, self.config_aka, 202 self.config_aka_prime]: 203 negative_config[WifiEnums.SSID_KEY] = 'wrong_hostapd_ssid' 204 for k, v in neg_params.items(): 205 # Skip negative test for TLS's identity field since it's not 206 # used for auth. 207 if config[Ent.EAP] == EAP.TLS and k == Ent.IDENTITY: 208 continue 209 if k in config: 210 negative_config[k] = v 211 negative_config["invalid_field"] = k 212 return negative_config 213 214 def gen_negative_eap_configs(self, config): 215 """Generates invalid configurations for different EAP authentication 216 types. 217 218 For all the valid EAP configurations, if a param that is part of the 219 authentication info exists in a config, a copy of the config is made 220 with an invalid value of the param. 221 222 Args: 223 A valid network configration 224 225 Returns: 226 An invalid EAP configuration. 227 """ 228 neg_params = { 229 Ent.CLIENT_CERT: self.invalid_client_cert, 230 Ent.CA_CERT: self.invalid_ca_cert, 231 Ent.PRIVATE_KEY_ID: self.invalid_client_key, 232 Ent.IDENTITY: "fake_identity", 233 Ent.PASSWORD: "wrong_password" 234 } 235 return self.gen_negative_configs(config, neg_params) 236 237 def gen_negative_passpoint_configs(self, config): 238 """Generates invalid configurations for different EAP authentication 239 types with passpoint support. 240 241 Args: 242 A valid network configration 243 244 Returns: 245 An invalid EAP configuration with passpoint fields. 246 """ 247 neg_params = { 248 Ent.CLIENT_CERT: self.invalid_client_cert, 249 Ent.CA_CERT: self.invalid_ca_cert, 250 Ent.PRIVATE_KEY_ID: self.invalid_client_key, 251 Ent.IDENTITY: "fake_identity", 252 Ent.PASSWORD: "wrong_password", 253 Ent.FQDN: "fake_fqdn", 254 Ent.REALM: "where_no_one_has_gone_before", 255 Ent.PLMN: "fake_plmn", 256 Ent.ROAMING_IDS: [1234567890, 9876543210] 257 } 258 return self.gen_negative_configs(config, neg_params) 259 260 def eap_connect_toggle_wifi(self, 261 config, 262 *args): 263 """Connects to an enterprise network, toggles wifi state and ensures 264 that the device reconnects. 265 266 This logic expect the enterprise network to have Internet access. 267 268 Args: 269 config: A dict representing a wifi enterprise configuration. 270 args: args to be passed to |wutils.eap_connect|. 271 272 Returns: 273 True if the connection is successful and Internet access works. 274 """ 275 ad = args[0] 276 wutils.wifi_connect(ad, config) 277 wutils.toggle_wifi_and_wait_for_reconnection(ad, config, num_of_tries=5) 278 279 """ Tests """ 280 281 # EAP connect tests 282 """ Test connecting to enterprise networks of different authentication 283 types. 284 285 The authentication types tested are: 286 EAP-TLS 287 EAP-PEAP with different phase2 types. 288 EAP-TTLS with different phase2 types. 289 290 Procedures: 291 For each enterprise wifi network 292 1. Connect to the network. 293 2. Send a GET request to a website and check response. 294 295 Expect: 296 Successful connection and Internet access through the enterprise 297 networks. 298 """ 299 @test_tracker_info(uuid="4e720cac-ea17-4de7-a540-8dc7c49f9713") 300 def test_eap_connect_with_config_tls(self): 301 wutils.wifi_connect(self.dut, self.config_tls) 302 303 @test_tracker_info(uuid="10e3a5e9-0018-4162-a9fa-b41500f13340") 304 def test_eap_connect_with_config_pwd(self): 305 wutils.wifi_connect(self.dut, self.config_pwd) 306 307 @test_tracker_info(uuid="b4513f78-a1c4-427f-bfc7-2a6b3da714b5") 308 def test_eap_connect_with_config_sim(self): 309 wutils.wifi_connect(self.dut, self.config_sim) 310 311 @test_tracker_info(uuid="7d390e30-cb67-4b55-bf00-567adad2d9b0") 312 def test_eap_connect_with_config_aka(self): 313 wutils.wifi_connect(self.dut, self.config_aka) 314 315 @test_tracker_info(uuid="742f921b-27c3-4b68-a3ca-88e64fe79c1d") 316 def test_eap_connect_with_config_aka_prime(self): 317 wutils.wifi_connect(self.dut, self.config_aka_prime) 318 319 @test_tracker_info(uuid="d34e30f3-6ef6-459f-b47a-e78ed90ce4c6") 320 def test_eap_connect_with_config_ttls_none(self): 321 config = dict(self.config_ttls) 322 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.NONE.value 323 wutils.wifi_connect(self.dut, config) 324 325 @test_tracker_info(uuid="0dca3a15-472e-427c-8e06-4e38088ee973") 326 def test_eap_connect_with_config_ttls_pap(self): 327 config = dict(self.config_ttls) 328 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.PAP.value 329 wutils.wifi_connect(self.dut, config) 330 331 @test_tracker_info(uuid="47c4b459-2cb1-4fc7-b4e7-82534e8e090e") 332 def test_eap_connect_with_config_ttls_mschap(self): 333 config = dict(self.config_ttls) 334 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAP.value 335 wutils.wifi_connect(self.dut, config) 336 337 @test_tracker_info(uuid="fdb286c7-8069-481d-baf0-c5dd7a31ff03") 338 def test_eap_connect_with_config_ttls_mschapv2(self): 339 config = dict(self.config_ttls) 340 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 341 wutils.wifi_connect(self.dut, config) 342 343 @test_tracker_info(uuid="d9315962-7987-4ee7-905d-6972c78ce8a1") 344 def test_eap_connect_with_config_ttls_gtc(self): 345 config = dict(self.config_ttls) 346 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 347 wutils.wifi_connect(self.dut, config) 348 349 @test_tracker_info(uuid="90a67bd3-30da-4daf-8ab0-d964d7ad19be") 350 def test_eap_connect_with_config_peap0_mschapv2(self): 351 config = dict(self.config_peap0) 352 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 353 wutils.wifi_connect(self.dut, config) 354 355 @test_tracker_info(uuid="3c451ba4-0c83-4eef-bc95-db4c21893008") 356 def test_eap_connect_with_config_peap0_gtc(self): 357 config = dict(self.config_peap0) 358 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 359 wutils.wifi_connect(self.dut, config) 360 361 @test_tracker_info(uuid="6b45157d-0325-417a-af18-11af5d240d79") 362 def test_eap_connect_with_config_peap1_mschapv2(self): 363 config = dict(self.config_peap1) 364 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 365 wutils.wifi_connect(self.dut, config) 366 367 @test_tracker_info(uuid="1663decc-71ae-4f95-a027-8a6dbf9c337f") 368 def test_eap_connect_with_config_peap1_gtc(self): 369 config = dict(self.config_peap1) 370 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 371 wutils.wifi_connect(self.dut, config) 372 373 # EAP connect negative tests 374 """ Test connecting to enterprise networks. 375 376 Procedures: 377 For each enterprise wifi network 378 1. Connect to the network with invalid credentials. 379 380 Expect: 381 Fail to establish connection. 382 """ 383 @test_tracker_info(uuid="b2a91f1f-ccd7-4bd1-ab81-19aab3d8ee38") 384 def test_eap_connect_negative_with_config_tls(self): 385 config = self.gen_negative_eap_configs(self.config_tls) 386 self.eap_negative_connect_logic(config, self.dut) 387 388 @test_tracker_info(uuid="6466abde-1d16-4168-9dd8-1e7a0a19889b") 389 def test_eap_connect_negative_with_config_pwd(self): 390 config = self.gen_negative_eap_configs(self.config_pwd) 391 self.eap_negative_connect_logic(config, self.dut) 392 393 @test_tracker_info(uuid="d7742a2a-85b0-409a-99d8-47711ddc5612") 394 def test_eap_connect_negative_with_config_sim(self): 395 config = self.gen_negative_eap_configs(self.config_sim) 396 self.eap_negative_connect_logic(config, self.dut) 397 398 @test_tracker_info(uuid="0ec0de93-cab3-4f41-960b-c0af64ff48c4") 399 def test_eap_connect_negative_with_config_aka(self): 400 config = self.gen_negative_eap_configs(self.config_aka) 401 self.eap_negative_connect_logic(config, self.dut) 402 403 @test_tracker_info(uuid="bb640ea4-32a6-48ea-87c9-f7128fffbbf6") 404 def test_eap_connect_negative_with_config_aka_prime(self): 405 config = self.gen_negative_eap_configs(self.config_aka_prime) 406 self.eap_negative_connect_logic(config, self.dut) 407 408 @test_tracker_info(uuid="86336ada-0ced-45a4-8a22-c4aa23c81111") 409 def test_eap_connect_negative_with_config_ttls_none(self): 410 config = dict(self.config_ttls) 411 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.NONE.value 412 config = self.gen_negative_eap_configs(config) 413 self.eap_negative_connect_logic(config, self.dut) 414 415 @test_tracker_info(uuid="71e0498d-9973-4958-94bd-79051c328920") 416 def test_eap_connect_negative_with_config_ttls_pap(self): 417 config = dict(self.config_ttls) 418 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.PAP.value 419 config = self.gen_negative_eap_configs(config) 420 self.eap_negative_connect_logic(config, self.dut) 421 422 @test_tracker_info(uuid="c04142a8-b204-4d2d-98dc-150b16c8397e") 423 def test_eap_connect_negative_with_config_ttls_mschap(self): 424 config = dict(self.config_ttls) 425 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAP.value 426 config = self.gen_negative_eap_configs(config) 427 self.eap_negative_connect_logic(config, self.dut) 428 429 @test_tracker_info(uuid="625e7aa5-e3e6-4bbe-98c0-5aad8ca1555b") 430 def test_eap_connect_negative_with_config_ttls_mschapv2(self): 431 config = dict(self.config_ttls) 432 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 433 config = self.gen_negative_eap_configs(config) 434 self.eap_negative_connect_logic(config, self.dut) 435 436 @test_tracker_info(uuid="24ea0d80-0a3f-41c2-8e05-d6387e589058") 437 def test_eap_connect_negative_with_config_ttls_gtc(self): 438 config = dict(self.config_ttls) 439 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 440 config = self.gen_negative_eap_configs(config) 441 self.eap_negative_connect_logic(config, self.dut) 442 443 @test_tracker_info(uuid="b7c1f0f8-6338-4501-8e1d-c9b136aaba88") 444 def test_eap_connect_negative_with_config_peap0_mschapv2(self): 445 config = dict(self.config_peap0) 446 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 447 config = self.gen_negative_eap_configs(config) 448 self.eap_negative_connect_logic(config, self.dut) 449 450 @test_tracker_info(uuid="9cf83dcb-38ad-4f75-9ea9-98de1cfaf7f3") 451 def test_eap_connect_negative_with_config_peap0_gtc(self): 452 config = dict(self.config_peap0) 453 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 454 config = self.gen_negative_eap_configs(config) 455 self.eap_negative_connect_logic(config, self.dut) 456 457 @test_tracker_info(uuid="89bb2b6b-d073-402a-bdc1-68ac5f8752a3") 458 def test_eap_connect_negative_with_config_peap1_mschapv2(self): 459 config = dict(self.config_peap1) 460 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 461 config = self.gen_negative_eap_configs(config) 462 self.eap_negative_connect_logic(config, self.dut) 463 464 @test_tracker_info(uuid="2252a864-9ff7-43b5-82d9-afe57d1f5e5f") 465 def test_eap_connect_negative_with_config_peap1_gtc(self): 466 config = dict(self.config_peap1) 467 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 468 config = self.gen_negative_eap_configs(config) 469 self.eap_negative_connect_logic(config, self.dut) 470 471 # EAP connect config store tests 472 """ Test connecting to enterprise networks of different authentication 473 types after wifi toggle. 474 475 The authentication types tested are: 476 EAP-TLS 477 EAP-PEAP with different phase2 types. 478 EAP-TTLS with different phase2 types. 479 480 Procedures: 481 For each enterprise wifi network 482 1. Connect to the network. 483 2. Send a GET request to a website and check response. 484 3. Toggle wifi. 485 4. Ensure that the device reconnects to the same network. 486 487 Expect: 488 Successful connection and Internet access through the enterprise 489 networks. 490 """ 491 @test_tracker_info(uuid="2a933b7f-27d7-4201-a34f-25b9d8072a8c") 492 def test_eap_connect_config_store_with_config_tls(self): 493 self.eap_connect_toggle_wifi(self.config_tls, self.dut) 494 495 @test_tracker_info(uuid="08dc071b-9fea-408a-a3f6-d3493869f6d4") 496 def test_eap_connect_config_store_with_config_pwd(self): 497 self.eap_connect_toggle_wifi(self.config_pwd, self.dut) 498 499 @test_tracker_info(uuid="230cb03e-58bc-41cb-b9b3-7215c2ab2325") 500 def test_eap_connect_config_store_with_config_sim(self): 501 self.eap_connect_toggle_wifi(self.config_sim, self.dut) 502 503 @test_tracker_info(uuid="dfc3e59c-2309-4598-8c23-bb3fe95ef89f") 504 def test_eap_connect_config_store_with_config_aka(self): 505 self.eap_connect_toggle_wifi(self.config_aka, self.dut) 506 507 @test_tracker_info(uuid="6050a1d1-4f3a-476d-bf93-638abd066790") 508 def test_eap_connect_config_store_with_config_aka_prime(self): 509 self.eap_connect_toggle_wifi(self.config_aka_prime, self.dut) 510 511 @test_tracker_info(uuid="03108057-cc44-4a80-8331-77c93694099c") 512 def test_eap_connect_config_store_with_config_ttls_none(self): 513 config = dict(self.config_ttls) 514 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.NONE.value 515 self.eap_connect_toggle_wifi(config, self.dut) 516 517 @test_tracker_info(uuid="53dd8195-e272-4589-a261-b8fa3607ad8d") 518 def test_eap_connect_config_store_with_config_ttls_pap(self): 519 config = dict(self.config_ttls) 520 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.PAP.value 521 self.eap_connect_toggle_wifi(config, self.dut) 522 523 @test_tracker_info(uuid="640f697b-9c62-4b19-bd76-53b236a152e0") 524 def test_eap_connect_config_store_with_config_ttls_mschap(self): 525 config = dict(self.config_ttls) 526 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAP.value 527 self.eap_connect_toggle_wifi(config, self.dut) 528 529 @test_tracker_info(uuid="f0243684-fae0-46f3-afbd-bf525fc712e2") 530 def test_eap_connect_config_store_with_config_ttls_mschapv2(self): 531 config = dict(self.config_ttls) 532 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 533 self.eap_connect_toggle_wifi(config, self.dut) 534 535 @test_tracker_info(uuid="49ec7202-3b00-49c3-970a-201360888c74") 536 def test_eap_connect_config_store_with_config_ttls_gtc(self): 537 config = dict(self.config_ttls) 538 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 539 self.eap_connect_toggle_wifi(config, self.dut) 540 541 @test_tracker_info(uuid="1c6abfa3-f344-4e28-b891-5481ab79efcf") 542 def test_eap_connect_config_store_with_config_peap0_mschapv2(self): 543 config = dict(self.config_peap0) 544 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 545 self.eap_connect_toggle_wifi(config, self.dut) 546 547 @test_tracker_info(uuid="2815bc76-49fa-43a5-a4b6-84788f9809d5") 548 def test_eap_connect_config_store_with_config_peap0_gtc(self): 549 config = dict(self.config_peap0) 550 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 551 self.eap_connect_toggle_wifi(config, self.dut) 552 553 @test_tracker_info(uuid="e93f7472-6895-4e36-bff2-9b2dcfd07ad0") 554 def test_eap_connect_config_store_with_config_peap1_mschapv2(self): 555 config = dict(self.config_peap1) 556 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 557 self.eap_connect_toggle_wifi(config, self.dut) 558 559 @test_tracker_info(uuid="6da72fa0-b858-4475-9559-46fe052d0d64") 560 def test_eap_connect_config_store_with_config_peap1_gtc(self): 561 config = dict(self.config_peap1) 562 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 563 self.eap_connect_toggle_wifi(config, self.dut) 564 565 # Removing 'test_' for all passpoint based testcases as we want to disable 566 # them. Adding the valid test cases to self.tests make them run in serial 567 # (TODO): gmoturu - Update the passpoint tests to test the valid scenario 568 # Passpoint connect tests 569 """ Test connecting to enterprise networks of different authentication 570 types with passpoint support. 571 572 The authentication types tested are: 573 EAP-TLS 574 EAP-TTLS with MSCHAPV2 as phase2. 575 576 Procedures: 577 For each enterprise wifi network 578 1. Connect to the network. 579 2. Send a GET request to a website and check response. 580 581 Expect: 582 Successful connection and Internet access through the enterprise 583 networks with passpoint support. 584 """ 585 @test_tracker_info(uuid="0b942524-bde9-4fc6-ac6a-fef1c247cb8e") 586 def passpoint_connect_with_config_passpoint_tls(self): 587 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 588 "Passpoint is not supported on %s" % self.dut.model) 589 wutils.wifi_connect(self.dut, self.config_passpoint_tls) 590 591 @test_tracker_info(uuid="33a014aa-99e7-4612-b732-54fabf1bf922") 592 def passpoint_connect_with_config_passpoint_ttls_none(self): 593 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 594 "Passpoint is not supported on %s" % self.dut.model) 595 config = dict(self.config_passpoint_ttls) 596 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.NONE.value 597 wutils.wifi_connect(self.dut, config) 598 599 @test_tracker_info(uuid="1aba8bf9-2b09-4956-b418-c3f4dadab330") 600 def passpoint_connect_with_config_passpoint_ttls_pap(self): 601 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 602 "Passpoint is not supported on %s" % self.dut.model) 603 config = dict(self.config_passpoint_ttls) 604 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.PAP.value 605 wutils.wifi_connect(self.dut, config) 606 607 @test_tracker_info(uuid="cd978fc9-a393-4b1e-bba3-1efc52224500") 608 def passpoint_connect_with_config_passpoint_ttls_mschap(self): 609 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 610 "Passpoint is not supported on %s" % self.dut.model) 611 config = dict(self.config_passpoint_ttls) 612 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAP.value 613 wutils.wifi_connect(self.dut, config) 614 615 @test_tracker_info(uuid="bc311ee7-ba64-4c76-a629-b916701bf6a5") 616 def passpoint_connect_with_config_passpoint_ttls_mschapv2(self): 617 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 618 "Passpoint is not supported on %s" % self.dut.model) 619 config = dict(self.config_passpoint_ttls) 620 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 621 wutils.wifi_connect(self.dut, config) 622 623 @test_tracker_info(uuid="357e5162-5081-4149-bedd-ef2c0f88b97e") 624 def passpoint_connect_with_config_passpoint_ttls_gtc(self): 625 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 626 "Passpoint is not supported on %s" % self.dut.model) 627 config = dict(self.config_passpoint_ttls) 628 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 629 wutils.wifi_connect(self.dut, config) 630 631 # Passpoint connect negative tests 632 """ Test connecting to enterprise networks. 633 634 Procedures: 635 For each enterprise wifi network 636 1. Connect to the network with invalid credentials. 637 638 Expect: 639 Fail to establish connection. 640 """ 641 @test_tracker_info(uuid="7b6b44a0-ff70-49b4-94ca-a98bedc18f92") 642 def passpoint_connect_negative_with_config_passpoint_tls(self): 643 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 644 "Passpoint is not supported on %s" % self.dut.model) 645 config = self.gen_negative_passpoint_configs(self.config_passpoint_tls) 646 self.eap_negative_connect_logic(config, self.dut) 647 648 @test_tracker_info(uuid="3dbde40a-e88c-4166-b932-163663a10a41") 649 def passpoint_connect_negative_with_config_passpoint_ttls_none(self): 650 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 651 "Passpoint is not supported on %s" % self.dut.model) 652 config = dict(self.config_passpoint_ttls) 653 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.NONE.value 654 config = self.gen_negative_passpoint_configs(config) 655 self.eap_negative_connect_logic(config, self.dut) 656 657 @test_tracker_info(uuid="8ee22ad6-d561-4ca2-a808-9f372fce56b4") 658 def passpoint_connect_negative_with_config_passpoint_ttls_pap(self): 659 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 660 "Passpoint is not supported on %s" % self.dut.model) 661 config = dict(self.config_passpoint_ttls) 662 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.PAP.value 663 config = self.gen_negative_passpoint_configs(config) 664 self.eap_negative_connect_logic(config, self.dut) 665 666 @test_tracker_info(uuid="db5cefe7-9cb8-47a6-8635-006c80b97012") 667 def passpoint_connect_negative_with_config_passpoint_ttls_mschap(self): 668 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 669 "Passpoint is not supported on %s" % self.dut.model) 670 config = dict(self.config_passpoint_ttls) 671 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAP.value 672 config = self.gen_negative_passpoint_configs(config) 673 self.eap_negative_connect_logic(config, self.dut) 674 675 @test_tracker_info(uuid="8f49496e-80df-48ce-9c51-42f0c6b81aff") 676 def passpoint_connect_negative_with_config_passpoint_ttls_mschapv2(self): 677 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 678 "Passpoint is not supported on %s" % self.dut.model) 679 config = dict(self.config_passpoint_ttls) 680 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 681 config = self.gen_negative_passpoint_configs(config) 682 self.eap_negative_connect_logic(config, self.dut) 683 684 @test_tracker_info(uuid="6561508f-598e-408d-96b6-15b631664be6") 685 def passpoint_connect_negative_with_config_passpoint_ttls_gtc(self): 686 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 687 "Passpoint is not supported on %s" % self.dut.model) 688 config = dict(self.config_passpoint_ttls) 689 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 690 config = self.gen_negative_passpoint_configs(config) 691 self.eap_negative_connect_logic(config, self.dut) 692 693 # Passpoint connect config store tests 694 """ Test connecting to enterprise networks of different authentication 695 types with passpoint support after wifi toggle. 696 697 The authentication types tested are: 698 EAP-TLS 699 EAP-TTLS with MSCHAPV2 as phase2. 700 701 Procedures: 702 For each enterprise wifi network 703 1. Connect to the network. 704 2. Send a GET request to a website and check response. 705 3. Toggle wifi. 706 4. Ensure that the device reconnects to the same network. 707 708 Expect: 709 Successful connection and Internet access through the enterprise 710 networks with passpoint support. 711 """ 712 @test_tracker_info(uuid="5d5e6bb0-faea-4a6e-a6bc-c87de997a4fd") 713 def passpoint_connect_config_store_with_config_passpoint_tls(self): 714 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 715 "Passpoint is not supported on %s" % self.dut.model) 716 self.eap_connect_toggle_wifi(self.config_passpoint_tls, self.dut) 717 718 @test_tracker_info(uuid="0c80262d-23c1-439f-ad64-7b8ada5d1962") 719 def passpoint_connect_config_store_with_config_passpoint_ttls_none(self): 720 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 721 "Passpoint is not supported on %s" % self.dut.model) 722 config = dict(self.config_passpoint_ttls) 723 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.NONE.value 724 self.eap_connect_toggle_wifi(config, self.dut) 725 726 @test_tracker_info(uuid="786e424c-b5a6-4fe9-a951-b3de16ebb6db") 727 def passpoint_connect_config_store_with_config_passpoint_ttls_pap(self): 728 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 729 "Passpoint is not supported on %s" % self.dut.model) 730 config = dict(self.config_passpoint_ttls) 731 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.PAP.value 732 self.eap_connect_toggle_wifi(config, self.dut) 733 734 @test_tracker_info(uuid="22fd61bf-722a-4016-a778-fc33e94ed211") 735 def passpoint_connect_config_store_with_config_passpoint_ttls_mschap(self): 736 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 737 "Passpoint is not supported on %s" % self.dut.model) 738 config = dict(self.config_passpoint_ttls) 739 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAP.value 740 self.eap_connect_toggle_wifi(config, self.dut) 741 742 @test_tracker_info(uuid="2abd348c-9c66-456b-88ad-55f971717620") 743 def passpoint_connect_config_store_with_config_passpoint_ttls_mschapv2(self): 744 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 745 "Passpoint is not supported on %s" % self.dut.model) 746 config = dict(self.config_passpoint_ttls) 747 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.MSCHAPV2.value 748 self.eap_connect_toggle_wifi(config, self.dut) 749 750 @test_tracker_info(uuid="043e8cdd-db95-4f03-b308-3c8cecf874b1") 751 def passpoint_connect_config_store_with_config_passpoint_ttls_gtc(self): 752 asserts.skip_if(not self.dut.droid.wifiIsPasspointSupported(), 753 "Passpoint is not supported on %s" % self.dut.model) 754 config = dict(self.config_passpoint_ttls) 755 config[WifiEnums.Enterprise.PHASE2] = WifiEnums.EapPhase2.GTC.value 756 self.eap_connect_toggle_wifi(config, self.dut) 757