| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import os | |
| 7 import test_utils | |
| 8 | |
| 9 import pyauto_functional | |
| 10 import chromeos_network # pyauto_functional must come before chromeos_network | |
| 11 import pyauto_utils | |
| 12 | |
| 13 | |
| 14 class ChromeosWifiFunctional(chromeos_network.PyNetworkUITest): | |
| 15 """Tests for ChromeOS wifi functionality. | |
| 16 | |
| 17 These tests should be run within vacinity of the power strip where the wifi | |
| 18 routers are attached. | |
| 19 """ | |
| 20 | |
| 21 def setUp(self): | |
| 22 chromeos_network.PyNetworkUITest.setUp(self) | |
| 23 if self.GetLoginInfo().get('is_logged_in'): | |
| 24 self.Logout() | |
| 25 | |
| 26 def _SetupRouter(self, router_name): | |
| 27 """Turn on the router and wait for it to come on. | |
| 28 | |
| 29 Args: | |
| 30 router_name: The name of the router as defined in wifi_testbed_config. | |
| 31 | |
| 32 Returns: | |
| 33 A dictionary of the router and its attributes. The format is same as | |
| 34 the definition in wifi_testbed_config | |
| 35 """ | |
| 36 self.InitWifiPowerStrip() | |
| 37 router = self.GetRouterConfig(router_name) | |
| 38 self.RouterPower(router_name, True) | |
| 39 | |
| 40 # When we connect to a wifi service, it should be added to the | |
| 41 # remembered_wifi list. | |
| 42 self.WaitUntilWifiNetworkAvailable(router['ssid'], | |
| 43 is_hidden=router.get('hidden')) | |
| 44 return router | |
| 45 | |
| 46 def _VerifyIfConnectedToNetwork(self, network_ssid, status='Online state'): | |
| 47 """Verify if we are connected to the network. | |
| 48 | |
| 49 The test calling this function will fail for one of these three reasons: | |
| 50 1. The server path for the SSID is not found. | |
| 51 2. If we are not connected to the network. | |
| 52 3. If we did not find the network in the wifi_networks list. | |
| 53 | |
| 54 Args: | |
| 55 newtork_ssid: The network to which we are supposed to be connected to. | |
| 56 status: The status that we expect the network to have, by default it | |
| 57 would be 'Online state'. | |
| 58 """ | |
| 59 service_path = self.GetServicePath(network_ssid) | |
| 60 self.assertTrue(service_path is not None, | |
| 61 msg='Could not find a service path for the given ssid %s.' % | |
| 62 network_ssid) | |
| 63 wifi_network = self.NetworkScan()['wifi_networks'] | |
| 64 for path in wifi_network: | |
| 65 if path == service_path: | |
| 66 self.assertTrue( | |
| 67 wifi_network[path]['status'] == status, | |
| 68 msg='Unexpected network status %s, Network %s should have ' | |
| 69 'status %s.' % (wifi_network[path]['status'], | |
| 70 network_ssid, status)) | |
| 71 break; | |
| 72 else: | |
| 73 self.fail(msg='Did not find the network %s in the ' | |
| 74 'wifi_networks list.' % network_ssid) | |
| 75 | |
| 76 def testConnectShareEncryptedNetwork(self): | |
| 77 """A shared encrypted network can connect and is remembered. | |
| 78 | |
| 79 Note: This test does not verify that the network is added to the public | |
| 80 profile | |
| 81 """ | |
| 82 router_name = 'D-Link_N150' | |
| 83 test_utils.LoginToDevice(self) | |
| 84 router = self._SetupRouter(router_name) | |
| 85 error = self.ConnectToWifiRouter(router_name, shared=True) | |
| 86 self.assertFalse(error, 'Failed to connect to wifi network %s. ' | |
| 87 'Reason: %s.' % (router['ssid'], error)) | |
| 88 service_path = self.GetServicePath(router['ssid']) | |
| 89 self.assertTrue(service_path in self.GetNetworkInfo()['remembered_wifi'], | |
| 90 'Connected wifi was not added to the remembered list.') | |
| 91 self.ForgetWifiNetwork(service_path) | |
| 92 self.assertFalse(service_path in self.GetNetworkInfo()['remembered_wifi'], | |
| 93 'Connected wifi was not removed from the remembered list.') | |
| 94 | |
| 95 def testConnectNoShareEncryptedNetwork(self): | |
| 96 """A non-shared encrypted network can connect and is remembered. | |
| 97 | |
| 98 Note: This test does not verify that the network is added to the private | |
| 99 profile | |
| 100 """ | |
| 101 router_name = 'D-Link_N150' | |
| 102 test_utils.LoginToDevice(self) | |
| 103 router = self._SetupRouter(router_name) | |
| 104 error = self.ConnectToWifiRouter(router_name, shared=False) | |
| 105 self.assertFalse(error, 'Failed to connect to wifi network %s. ' | |
| 106 'Reason: %s.' % (router['ssid'], error)) | |
| 107 service_path = self.GetServicePath(router['ssid']) | |
| 108 self.assertTrue(service_path in self.GetNetworkInfo()['remembered_wifi'], | |
| 109 'Connected wifi was not added to the remembered list.') | |
| 110 self.ForgetWifiNetwork(service_path) | |
| 111 self.assertFalse(service_path in self.GetNetworkInfo()['remembered_wifi'], | |
| 112 'Connected wifi was not removed from the remembered list.') | |
| 113 | |
| 114 def testConnectToSharedOpenNetwork(self): | |
| 115 """Can connect to a shared open network. | |
| 116 | |
| 117 Verify that the connected network is in the remembered network list | |
| 118 for all the users. | |
| 119 """ | |
| 120 router_name = 'Trendnet_639gr_4' | |
| 121 test_utils.LoginToDevice(self) | |
| 122 router = self._SetupRouter(router_name) | |
| 123 error = self.ConnectToWifiRouter(router_name) | |
| 124 self.assertFalse(error, msg='Failed to connect to wifi network %s. ' | |
| 125 'Reason: %s.' % (router['ssid'], error)) | |
| 126 service_path = self.GetServicePath(router['ssid']) | |
| 127 self.assertTrue(service_path in self.GetNetworkInfo()['remembered_wifi'], | |
| 128 msg='Open wifi is not remembered for the current user.') | |
| 129 self.Logout() | |
| 130 test_utils.LoginToDevice(self, test_account='test_google_account_2') | |
| 131 self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], | |
| 132 msg='Open network is not shared with other users.') | |
| 133 | |
| 134 def testConnectToSharedHiddenNetwork(self): | |
| 135 """Can connect to shared hidden network and verify that it's shared.""" | |
| 136 router_name = 'Netgear_WGR614' | |
| 137 test_utils.LoginToDevice(self) | |
| 138 router = self._SetupRouter(router_name) | |
| 139 error = self.ConnectToWifiRouter(router_name) | |
| 140 self.assertFalse(error, msg='Failed to connect to hidden network %s. ' | |
| 141 'Reason: %s.' % (router['ssid'], error)) | |
| 142 service_path = self.GetServicePath(router['ssid']) | |
| 143 self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], | |
| 144 msg='Hidden network is not added to the remembered list.') | |
| 145 self.Logout() | |
| 146 test_utils.LoginToDevice(self, test_account='test_google_account_2') | |
| 147 self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], | |
| 148 msg='Shared hidden network is not in other user\'s ' | |
| 149 'remembered list.') | |
| 150 | |
| 151 def testConnectToNonSharedHiddenNetwork(self): | |
| 152 """Can connect to a non-shared hidden network. | |
| 153 | |
| 154 Verify that it is not shared with other users. | |
| 155 """ | |
| 156 router_name = 'Linksys_WRT54GL' | |
| 157 test_utils.LoginToDevice(self) | |
| 158 router = self._SetupRouter(router_name) | |
| 159 error = self.ConnectToWifiRouter(router_name, shared=False) | |
| 160 self.assertFalse(error, msg='Failed to connect to hidden network %s. ' | |
| 161 'Reason: %s.' % (router['ssid'], error)) | |
| 162 service_path = self.GetServicePath(router['ssid']) | |
| 163 self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], | |
| 164 msg='Hidden network is not added to the remembered list.') | |
| 165 self.Logout() | |
| 166 test_utils.LoginToDevice(self, test_account='test_google_account_2') | |
| 167 self.assertFalse(service_path in self.NetworkScan()['remembered_wifi'], | |
| 168 msg='Non-shared hidden network %s is shared.' | |
| 169 % router['ssid']) | |
| 170 | |
| 171 def testConnectToEncryptedNetworkInLoginScreen(self): | |
| 172 """Can connect to encrypted network in login screen. | |
| 173 | |
| 174 Verify that this network is in the remembered list after login. | |
| 175 """ | |
| 176 router_name = 'Belkin_G' | |
| 177 if self.GetLoginInfo()['is_logged_in']: | |
| 178 self.Logout() | |
| 179 router = self._SetupRouter(router_name) | |
| 180 error = self.ConnectToWifiRouter(router_name) | |
| 181 self.assertFalse(error, 'Failed to connect to wifi network %s. ' | |
| 182 'Reason: %s.' % (router['ssid'], error)) | |
| 183 service_path = self.GetServicePath(router['ssid']) | |
| 184 self._VerifyIfConnectedToNetwork(router['ssid'], 'Connected') | |
| 185 test_utils.LoginToDevice(self) | |
| 186 self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], | |
| 187 msg='Network is not added to the remembered list.') | |
| 188 | |
| 189 | |
| 190 if __name__ == '__main__': | |
| 191 pyauto_functional.Main() | |
| OLD | NEW |