1073
1073
Only the urllib implementation is tested here.
1077
tests.TestCase.setUp(self)
1079
self.addCleanup(self._restore_env)
1081
def _install_env(self, env):
1082
for name, value in env.iteritems():
1083
self._old_env[name] = osutils.set_or_unset_env(name, value)
1085
def _restore_env(self):
1086
for name, value in self._old_env.iteritems():
1087
osutils.set_or_unset_env(name, value)
1089
1076
def _proxied_request(self):
1090
1077
handler = _urllib2_wrappers.ProxyHandler()
1091
1078
request = _urllib2_wrappers.Request('GET','http://baz/buzzle')
1095
1082
def test_empty_user(self):
1096
self._install_env({'http_proxy': 'http://bar.com'})
1083
self.overrideEnv('http_proxy', 'http://bar.com')
1097
1084
request = self._proxied_request()
1098
1085
self.assertFalse(request.headers.has_key('Proxy-authorization'))
1100
1087
def test_invalid_proxy(self):
1101
1088
"""A proxy env variable without scheme"""
1102
self._install_env({'http_proxy': 'host:1234'})
1089
self.overrideEnv('http_proxy', 'host:1234')
1103
1090
self.assertRaises(errors.InvalidURL, self._proxied_request)
1136
1123
self.no_proxy_host = self.server_host_port
1137
1124
# The secondary server is the proxy
1138
1125
self.proxy_url = self.get_secondary_url()
1141
1127
def _testing_pycurl(self):
1142
1128
# TODO: This is duplicated for lots of the classes in this file
1143
1129
return (features.pycurl.available()
1144
1130
and self._transport == PyCurlTransport)
1146
def _install_env(self, env):
1147
for name, value in env.iteritems():
1148
self._old_env[name] = osutils.set_or_unset_env(name, value)
1150
def _restore_env(self):
1151
for name, value in self._old_env.iteritems():
1152
osutils.set_or_unset_env(name, value)
1154
def proxied_in_env(self, env):
1155
self._install_env(env)
1156
t = self.get_readonly_transport()
1158
self.assertEqual('proxied contents of foo\n', t.get('foo').read())
1162
def not_proxied_in_env(self, env):
1163
self._install_env(env)
1164
t = self.get_readonly_transport()
1166
self.assertEqual('contents of foo\n', t.get('foo').read())
1132
def assertProxied(self):
1133
t = self.get_readonly_transport()
1134
self.assertEqual('proxied contents of foo\n', t.get('foo').read())
1136
def assertNotProxied(self):
1137
t = self.get_readonly_transport()
1138
self.assertEqual('contents of foo\n', t.get('foo').read())
1170
1140
def test_http_proxy(self):
1171
self.proxied_in_env({'http_proxy': self.proxy_url})
1141
self.overrideEnv('http_proxy', self.proxy_url)
1142
self.assertProxied()
1173
1144
def test_HTTP_PROXY(self):
1174
1145
if self._testing_pycurl():
1177
1148
# about. Should we ?)
1178
1149
raise tests.TestNotApplicable(
1179
1150
'pycurl does not check HTTP_PROXY for security reasons')
1180
self.proxied_in_env({'HTTP_PROXY': self.proxy_url})
1151
self.overrideEnv('HTTP_PROXY', self.proxy_url)
1152
self.assertProxied()
1182
1154
def test_all_proxy(self):
1183
self.proxied_in_env({'all_proxy': self.proxy_url})
1155
self.overrideEnv('all_proxy', self.proxy_url)
1156
self.assertProxied()
1185
1158
def test_ALL_PROXY(self):
1186
self.proxied_in_env({'ALL_PROXY': self.proxy_url})
1159
self.overrideEnv('ALL_PROXY', self.proxy_url)
1160
self.assertProxied()
1188
1162
def test_http_proxy_with_no_proxy(self):
1189
self.not_proxied_in_env({'http_proxy': self.proxy_url,
1190
'no_proxy': self.no_proxy_host})
1163
self.overrideEnv('no_proxy', self.no_proxy_host)
1164
self.overrideEnv('http_proxy', self.proxy_url)
1165
self.assertNotProxied()
1192
1167
def test_HTTP_PROXY_with_NO_PROXY(self):
1193
1168
if self._testing_pycurl():
1194
1169
raise tests.TestNotApplicable(
1195
1170
'pycurl does not check HTTP_PROXY for security reasons')
1196
self.not_proxied_in_env({'HTTP_PROXY': self.proxy_url,
1197
'NO_PROXY': self.no_proxy_host})
1171
self.overrideEnv('NO_PROXY', self.no_proxy_host)
1172
self.overrideEnv('HTTP_PROXY', self.proxy_url)
1173
self.assertNotProxied()
1199
1175
def test_all_proxy_with_no_proxy(self):
1200
self.not_proxied_in_env({'all_proxy': self.proxy_url,
1201
'no_proxy': self.no_proxy_host})
1176
self.overrideEnv('no_proxy', self.no_proxy_host)
1177
self.overrideEnv('all_proxy', self.proxy_url)
1178
self.assertNotProxied()
1203
1180
def test_ALL_PROXY_with_NO_PROXY(self):
1204
self.not_proxied_in_env({'ALL_PROXY': self.proxy_url,
1205
'NO_PROXY': self.no_proxy_host})
1181
self.overrideEnv('NO_PROXY', self.no_proxy_host)
1182
self.overrideEnv('ALL_PROXY', self.proxy_url)
1183
self.assertNotProxied()
1207
1185
def test_http_proxy_without_scheme(self):
1186
self.overrideEnv('http_proxy', self.server_host_port)
1208
1187
if self._testing_pycurl():
1209
1188
# pycurl *ignores* invalid proxy env variables. If that ever change
1210
1189
# in the future, this test will fail indicating that pycurl do not
1211
1190
# ignore anymore such variables.
1212
self.not_proxied_in_env({'http_proxy': self.server_host_port})
1191
self.assertNotProxied()
1214
self.assertRaises(errors.InvalidURL,
1215
self.proxied_in_env,
1216
{'http_proxy': self.server_host_port})
1193
self.assertRaises(errors.InvalidURL, self.assertProxied)
1219
1196
class TestRanges(http_utils.TestCaseWithWebserver):
1719
1694
def get_user_transport(self, user, password):
1720
self._install_env({'all_proxy': self.get_user_url(user, password)})
1695
self.overrideEnv('all_proxy', self.get_user_url(user, password))
1721
1696
return TestAuth.get_user_transport(self, user, password)
1723
def _install_env(self, env):
1724
for name, value in env.iteritems():
1725
self._old_env[name] = osutils.set_or_unset_env(name, value)
1727
def _restore_env(self):
1728
for name, value in self._old_env.iteritems():
1729
osutils.set_or_unset_env(name, value)
1731
1698
def test_empty_pass(self):
1732
1699
if self._testing_pycurl():