| #!/usr/bin/env python |
| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import test_utils |
| |
| import pyauto_functional |
| import chromeos_network # pyauto_functional must come before chromeos_network |
| import pyauto_utils |
| |
| |
| class ChromeosWifiFunctional(chromeos_network.PyNetworkUITest): |
| """Tests for ChromeOS wifi functionality. |
| |
| These tests should be run within vacinity of the power strip where the wifi |
| routers are attached. |
| """ |
| |
| def setUp(self): |
| chromeos_network.PyNetworkUITest.setUp(self) |
| if self.GetLoginInfo().get('is_logged_in'): |
| self.Logout() |
| |
| def _SetupRouter(self, router_name): |
| """Turn on the router and wait for it to come on. |
| |
| Args: |
| router_name: The name of the router as defined in wifi_testbed_config. |
| |
| Returns: |
| A dictionary of the router and its attributes. The format is same as |
| the definition in wifi_testbed_config |
| """ |
| self.InitWifiPowerStrip() |
| router = self.GetRouterConfig(router_name) |
| self.RouterPower(router_name, True) |
| |
| # When we connect to a wifi service, it should be added to the |
| # remembered_wifi list. |
| self.WaitUntilWifiNetworkAvailable(router['ssid'], |
| is_hidden=router.get('hidden')) |
| return router |
| |
| def _VerifyIfConnectedToNetwork(self, network_ssid, status='Online state'): |
| """Verify if we are connected to the network. |
| |
| The test calling this function will fail for one of these three reasons: |
| 1. The server path for the SSID is not found. |
| 2. If we are not connected to the network. |
| 3. If we did not find the network in the wifi_networks list. |
| |
| Args: |
| newtork_ssid: The network to which we are supposed to be connected to. |
| status: The status that we expect the network to have, by default it |
| would be 'Online state'. |
| """ |
| service_path = self.GetServicePath(network_ssid) |
| self.assertTrue(service_path is not None, |
| msg='Could not find a service path for the given ssid %s.' % |
| network_ssid) |
| wifi_network = self.NetworkScan()['wifi_networks'] |
| for path in wifi_network: |
| if path == service_path: |
| self.assertTrue( |
| wifi_network[path]['status'] == status, |
| msg='Unexpected network status %s, Network %s should have ' |
| 'status %s.' % (wifi_network[path]['status'], |
| network_ssid, status)) |
| break; |
| else: |
| self.fail(msg='Did not find the network %s in the ' |
| 'wifi_networks list.' % network_ssid) |
| |
| def testConnectShareEncryptedNetwork(self): |
| """A shared encrypted network can connect and is remembered. |
| |
| Note: This test does not verify that the network is added to the public |
| profile |
| """ |
| router_name = 'D-Link_N150' |
| test_utils.LoginToDevice(self) |
| router = self._SetupRouter(router_name) |
| error = self.ConnectToWifiRouter(router_name, shared=True) |
| self.assertFalse(error, 'Failed to connect to wifi network %s. ' |
| 'Reason: %s.' % (router['ssid'], error)) |
| service_path = self.GetServicePath(router['ssid']) |
| self.assertTrue(service_path in self.GetNetworkInfo()['remembered_wifi'], |
| 'Connected wifi was not added to the remembered list.') |
| self.ForgetWifiNetwork(service_path) |
| self.assertFalse(service_path in self.GetNetworkInfo()['remembered_wifi'], |
| 'Connected wifi was not removed from the remembered list.') |
| |
| def testConnectNoShareEncryptedNetwork(self): |
| """A non-shared encrypted network can connect and is remembered. |
| |
| Note: This test does not verify that the network is added to the private |
| profile |
| """ |
| router_name = 'D-Link_N150' |
| test_utils.LoginToDevice(self) |
| router = self._SetupRouter(router_name) |
| error = self.ConnectToWifiRouter(router_name, shared=False) |
| self.assertFalse(error, 'Failed to connect to wifi network %s. ' |
| 'Reason: %s.' % (router['ssid'], error)) |
| service_path = self.GetServicePath(router['ssid']) |
| self.assertTrue(service_path in self.GetNetworkInfo()['remembered_wifi'], |
| 'Connected wifi was not added to the remembered list.') |
| self.ForgetWifiNetwork(service_path) |
| self.assertFalse(service_path in self.GetNetworkInfo()['remembered_wifi'], |
| 'Connected wifi was not removed from the remembered list.') |
| |
| def testConnectToSharedOpenNetwork(self): |
| """Can connect to a shared open network. |
| |
| Verify that the connected network is in the remembered network list |
| for all the users. |
| """ |
| router_name = 'Trendnet_639gr_4' |
| test_utils.LoginToDevice(self) |
| router = self._SetupRouter(router_name) |
| error = self.ConnectToWifiRouter(router_name) |
| self.assertFalse(error, msg='Failed to connect to wifi network %s. ' |
| 'Reason: %s.' % (router['ssid'], error)) |
| service_path = self.GetServicePath(router['ssid']) |
| self.assertTrue(service_path in self.GetNetworkInfo()['remembered_wifi'], |
| msg='Open wifi is not remembered for the current user.') |
| self.Logout() |
| test_utils.LoginToDevice(self, test_account='test_google_account_2') |
| self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], |
| msg='Open network is not shared with other users.') |
| |
| def testConnectToSharedHiddenNetwork(self): |
| """Can connect to shared hidden network and verify that it's shared.""" |
| router_name = 'Netgear_WGR614' |
| test_utils.LoginToDevice(self) |
| router = self._SetupRouter(router_name) |
| error = self.ConnectToWifiRouter(router_name) |
| self.assertFalse(error, msg='Failed to connect to hidden network %s. ' |
| 'Reason: %s.' % (router['ssid'], error)) |
| service_path = self.GetServicePath(router['ssid']) |
| self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], |
| msg='Hidden network is not added to the remembered list.') |
| self.Logout() |
| test_utils.LoginToDevice(self, test_account='test_google_account_2') |
| self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], |
| msg='Shared hidden network is not in other user\'s ' |
| 'remembered list.') |
| |
| def testConnectToNonSharedHiddenNetwork(self): |
| """Can connect to a non-shared hidden network. |
| |
| Verify that it is not shared with other users. |
| """ |
| router_name = 'Linksys_WRT54GL' |
| test_utils.LoginToDevice(self) |
| router = self._SetupRouter(router_name) |
| error = self.ConnectToWifiRouter(router_name, shared=False) |
| self.assertFalse(error, msg='Failed to connect to hidden network %s. ' |
| 'Reason: %s.' % (router['ssid'], error)) |
| service_path = self.GetServicePath(router['ssid']) |
| self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], |
| msg='Hidden network is not added to the remembered list.') |
| self.Logout() |
| test_utils.LoginToDevice(self, test_account='test_google_account_2') |
| self.assertFalse(service_path in self.NetworkScan()['remembered_wifi'], |
| msg='Non-shared hidden network %s is shared.' |
| % router['ssid']) |
| |
| def testConnectToEncryptedNetworkInLoginScreen(self): |
| """Can connect to encrypted network in login screen. |
| |
| Verify that this network is in the remembered list after login. |
| """ |
| router_name = 'Belkin_G' |
| if self.GetLoginInfo()['is_logged_in']: |
| self.Logout() |
| router = self._SetupRouter(router_name) |
| error = self.ConnectToWifiRouter(router_name) |
| self.assertFalse(error, 'Failed to connect to wifi network %s. ' |
| 'Reason: %s.' % (router['ssid'], error)) |
| service_path = self.GetServicePath(router['ssid']) |
| self._VerifyIfConnectedToNetwork(router['ssid'], 'Connected') |
| test_utils.LoginToDevice(self) |
| self.assertTrue(service_path in self.NetworkScan()['remembered_wifi'], |
| msg='Network is not added to the remembered list.') |
| |
| |
| if __name__ == '__main__': |
| pyauto_functional.Main() |