| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2011 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 pyauto_functional | |
| 7 import pyauto | |
| 8 import re | |
| 9 from pyauto_errors import AutomationCommandTimeout | |
| 10 from pyauto_errors import JSONInterfaceError | |
| 11 | |
| 12 class ChromeosProxy(pyauto.PyUITest): | |
| 13 """Tests for ChromeOS proxy. | |
| 14 | |
| 15 The following tests are for UI testing to verify the user defined | |
| 16 proxy settings can be set and saved. The proxy addresses used in these | |
| 17 tests are not real proxies and are used for testing purposes. | |
| 18 """ | |
| 19 | |
| 20 # The list of the default ports by protocol. The default ports | |
| 21 # for https and ftp are both 80 as explained in crosbug.com/14390#c3. | |
| 22 DEFAULT_PORTS = { | |
| 23 'http' : 80, | |
| 24 'https': 80, | |
| 25 'ftp' : 80, | |
| 26 'socks' : 1080, | |
| 27 } | |
| 28 | |
| 29 # Defines the translation used for entering fields. | |
| 30 MANUAL_PROXY_FIELDS = { | |
| 31 'http' : { 'url' : 'httpurl', 'port' : 'httpport' }, | |
| 32 'https' : { 'url' : 'httpsurl', 'port' : 'httpsport' }, | |
| 33 'ftp' : { 'url' : 'ftpurl', 'port' : 'ftpport' }, | |
| 34 'socks' : { 'url' : 'socks', 'port' : 'socksport' }, | |
| 35 } | |
| 36 | |
| 37 def setUp(self): | |
| 38 pyauto.PyUITest.setUp(self) | |
| 39 self.ResetProxySettingsOnChromeOS() | |
| 40 | |
| 41 def tearDown(self): | |
| 42 self.ResetProxySettingsOnChromeOS() | |
| 43 pyauto.PyUITest.tearDown(self) | |
| 44 | |
| 45 def _BasicSetManualProxyFieldTest(self, proxy_type, proxy_url, | |
| 46 proxy_port=None): | |
| 47 """Basic test for setting one manual port field and verifying it is saved | |
| 48 | |
| 49 Args: | |
| 50 proxy_type: One of http, https, ftp, or socks. | |
| 51 proxy_url: The URL of the proxy server. | |
| 52 proxy_port: The port number. May be left blank to imply using the default | |
| 53 port. The default ports are defined by self.DEFAULT_PORTS. | |
| 54 """ | |
| 55 if proxy_type == 'socks': | |
| 56 url_path = proxy_type | |
| 57 else: | |
| 58 url_path = proxy_type + 'url' | |
| 59 port_path = proxy_type + 'port' | |
| 60 proxy_dict = { | |
| 61 'url_path': url_path, | |
| 62 'port_path': port_path, | |
| 63 'proxy_url': proxy_url, | |
| 64 'proxy_port': proxy_port, | |
| 65 } | |
| 66 | |
| 67 self.SetProxySettingOnChromeOS(proxy_dict) | |
| 68 result = self.GetProxySettingsOnChromeOS() | |
| 69 | |
| 70 self.assertEqual(result['type'], self.PROXY_TYPE_MANUAL, 'Proxy type ' | |
| 71 'should be Manual but instead we got %s.' % | |
| 72 self.GetProxyTypeName(result['type'])) | |
| 73 self.assertTrue(url_path in result, | |
| 74 'No %s url entry was saved' % proxy_type) | |
| 75 self.assertEqual(result[url_path], proxy_url, | |
| 76 'Saved proxy url %s does not match user set url %s.' % | |
| 77 (result[url_path], proxy_url)) | |
| 78 # Verify the port. If proxy_port is empty, we verify the | |
| 79 # default port is used | |
| 80 if proxy_port is None: | |
| 81 self.assertEqual(ChromeosProxy.DEFAULT_PORTS[proxy_type], | |
| 82 result[port_path], | |
| 83 'Proxy port %d was used instead of default port %d.' % | |
| 84 (result[port_path], | |
| 85 ChromeosProxy.DEFAULT_PORTS[proxy_type])) | |
| 86 else: | |
| 87 self.assertEqual(proxy_port, result[port_path], | |
| 88 'Proxy port %d was used instead of user set port %d.' % | |
| 89 (result[port_path], proxy_port)) | |
| 90 | |
| 91 # Verify that all other proxy fields are not set. | |
| 92 for key, val in self.MANUAL_PROXY_FIELDS.iteritems(): | |
| 93 if proxy_type != key: | |
| 94 self.assertFalse(result.get(val['url']), 'Only %s url should have ' | |
| 95 'been set. %s url should have been left blank.' % | |
| 96 (proxy_type, key)) | |
| 97 self.assertFalse(result.get(val['port']), 'Only %s port should have ' | |
| 98 'been set. %s port should have been left blank.' % | |
| 99 (proxy_type, key)) | |
| 100 | |
| 101 def testSetHTTPProxySettingsDefaultPort(self): | |
| 102 """Set the http proxy without a port and verify it saves. | |
| 103 | |
| 104 If http proxy is provided but the port is not, the default port | |
| 105 should be used. | |
| 106 """ | |
| 107 self._BasicSetManualProxyFieldTest('http', '192.168.1.1') | |
| 108 | |
| 109 def testSetHTTPProxySettingsDefaultPortByDomain(self): | |
| 110 """Set the http proxy by domain without a port and verify it saves. | |
| 111 | |
| 112 If http proxy is provided but the port is not, the default port | |
| 113 should be used. | |
| 114 """ | |
| 115 self._BasicSetManualProxyFieldTest('http', 'test_proxy.google.com') | |
| 116 | |
| 117 def testSetHTTPSProxySettingsDefaultPort(self): | |
| 118 """Set https proxy without a port and verify it saves. | |
| 119 | |
| 120 If https proxy is provided but the port is not, the default port | |
| 121 should be used. | |
| 122 """ | |
| 123 self._BasicSetManualProxyFieldTest('https', '192.168.1.1') | |
| 124 | |
| 125 def testSetHTTPSProxySettingsDefaultPortByDomain(self): | |
| 126 """Set the https proxy by domain without a port and verify it saves. | |
| 127 | |
| 128 If https proxy is provided but the port is not, the default port | |
| 129 should be used. | |
| 130 """ | |
| 131 self._BasicSetManualProxyFieldTest('https', 'test_proxy.google.com') | |
| 132 | |
| 133 def testSetFTPProxySettingsDefaultPort(self): | |
| 134 """Set ftp proxy without a port and verify it saves. | |
| 135 | |
| 136 If ftp proxy is provided but the port is not, the default port | |
| 137 should be used. | |
| 138 """ | |
| 139 self._BasicSetManualProxyFieldTest('ftp', '192.168.1.1') | |
| 140 | |
| 141 def testSetFTPSProxySettingsDefaultPortByDomain(self): | |
| 142 """Set the ftp proxy by domain without a port and verify it saves. | |
| 143 | |
| 144 If ftp proxy is provided but the port is not, the default port | |
| 145 should be used. | |
| 146 """ | |
| 147 self._BasicSetManualProxyFieldTest('ftp', 'test_proxy.google.com') | |
| 148 | |
| 149 def testSetSocksProxySettingsDefaultPort(self): | |
| 150 """Set socks proxy without a port and verify it saves. | |
| 151 | |
| 152 If socks proxy is provided but the port is not, the default port | |
| 153 should be used. | |
| 154 """ | |
| 155 self._BasicSetManualProxyFieldTest('socks', '192.168.1.1') | |
| 156 | |
| 157 def testSetSocksProxySettingsDefaultPortByDomain(self): | |
| 158 """Set socks proxy without a port and verify it saves. | |
| 159 | |
| 160 If socks proxy is provided but the port is not, the default port | |
| 161 should be used. | |
| 162 """ | |
| 163 self._BasicSetManualProxyFieldTest('socks', 'test_proxy.google.com') | |
| 164 | |
| 165 def testSetHTTPProxySettings(self): | |
| 166 """Set the http proxy and verify it saves.""" | |
| 167 self._BasicSetManualProxyFieldTest('http', '192.168.1.1', 3128) | |
| 168 | |
| 169 def testSetHTTPProxySettingsAndNavigate(self): | |
| 170 """Set an invalid httpurl and verify that we cant navigate.""" | |
| 171 invalid_url='10.10' | |
| 172 self._BasicSetManualProxyFieldTest('http', invalid_url, 3128) | |
| 173 self.assertRaises(AutomationCommandTimeout, | |
| 174 lambda: self.NavigateToURL('http://www.google.com')) | |
| 175 | |
| 176 def testSetHTTPProxySettingsByDomain(self): | |
| 177 """Set the http proxy by domain name and verify it saves.""" | |
| 178 self._BasicSetManualProxyFieldTest('http', 'test_proxy.google.com', 3128) | |
| 179 | |
| 180 def testSetHTTPSProxySettings(self): | |
| 181 """Set the https proxy and verify it saves.""" | |
| 182 self._BasicSetManualProxyFieldTest('https', '192.168.1.1', 6000) | |
| 183 | |
| 184 def testSetHTTPSProxySettingsByDomain(self): | |
| 185 """Set the https proxy by domain name and verify it saves.""" | |
| 186 self._BasicSetManualProxyFieldTest('https', 'test_proxy.google.com', 6000) | |
| 187 | |
| 188 def testSetFtpProxySettingsByDomain(self): | |
| 189 """Set the ftpproxy by domain name and verify it saves.""" | |
| 190 self._BasicSetManualProxyFieldTest('ftp', 'test_proxy.google.com', 7000) | |
| 191 | |
| 192 def testSetFTPProxySettings(self): | |
| 193 """Set the ftp proxy and verify it saves.""" | |
| 194 self._BasicSetManualProxyFieldTest('ftp', '192.168.1.1', 7000) | |
| 195 | |
| 196 def testSetSocksProxySettings(self): | |
| 197 """Set the socks proxy and verify it saves.""" | |
| 198 self._BasicSetManualProxyFieldTest('socks', '192.168.1.1', 3128) | |
| 199 | |
| 200 def testSetSocksProxySettingsByDomain(self): | |
| 201 """Set the Socks proxy by domain name and verify it saves.""" | |
| 202 self._BasicSetManualProxyFieldTest('socks', 'test_proxy.google.com', 3128) | |
| 203 | |
| 204 | |
| 205 if __name__ == '__main__': | |
| 206 pyauto_functional.Main() | |
| OLD | NEW |