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 |