mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
Issue #26804: urllib.request will prefer lower_case proxy environment variables
over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen. Reviewed by Martin Panter and Senthil Kumaran.
This commit is contained in:
parent
d3304e3e20
commit
a7c0ff2f0b
5 changed files with 80 additions and 11 deletions
|
@ -226,8 +226,46 @@ class ProxyTests(unittest.TestCase):
|
|||
# getproxies_environment use lowered case truncated (no '_proxy') keys
|
||||
self.assertEqual('localhost', proxies['no'])
|
||||
# List of no_proxies with space.
|
||||
self.env.set('NO_PROXY', 'localhost, anotherdomain.com, newdomain.com')
|
||||
self.env.set('NO_PROXY', 'localhost, anotherdomain.com, newdomain.com:1234')
|
||||
self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com'))
|
||||
self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com:8888'))
|
||||
self.assertTrue(urllib.request.proxy_bypass_environment('newdomain.com:1234'))
|
||||
|
||||
|
||||
class ProxyTests_withOrderedEnv(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
# We need to test conditions, where variable order _is_ significant
|
||||
self._saved_env = os.environ
|
||||
# Monkey patch os.environ, start with empty fake environment
|
||||
os.environ = collections.OrderedDict()
|
||||
|
||||
def tearDown(self):
|
||||
os.environ = self._saved_env
|
||||
|
||||
def test_getproxies_environment_prefer_lowercase(self):
|
||||
# Test lowercase preference with removal
|
||||
os.environ['no_proxy'] = ''
|
||||
os.environ['No_Proxy'] = 'localhost'
|
||||
self.assertFalse(urllib.request.proxy_bypass_environment('localhost'))
|
||||
self.assertFalse(urllib.request.proxy_bypass_environment('arbitrary'))
|
||||
os.environ['http_proxy'] = ''
|
||||
os.environ['HTTP_PROXY'] = 'http://somewhere:3128'
|
||||
proxies = urllib.request.getproxies_environment()
|
||||
self.assertEqual({}, proxies)
|
||||
# Test lowercase preference of proxy bypass and correct matching including ports
|
||||
os.environ['no_proxy'] = 'localhost, noproxy.com, my.proxy:1234'
|
||||
os.environ['No_Proxy'] = 'xyz.com'
|
||||
self.assertTrue(urllib.request.proxy_bypass_environment('localhost'))
|
||||
self.assertTrue(urllib.request.proxy_bypass_environment('noproxy.com:5678'))
|
||||
self.assertTrue(urllib.request.proxy_bypass_environment('my.proxy:1234'))
|
||||
self.assertFalse(urllib.request.proxy_bypass_environment('my.proxy'))
|
||||
self.assertFalse(urllib.request.proxy_bypass_environment('arbitrary'))
|
||||
# Test lowercase preference with replacement
|
||||
os.environ['http_proxy'] = 'http://somewhere:3128'
|
||||
os.environ['Http_Proxy'] = 'http://somewhereelse:3128'
|
||||
proxies = urllib.request.getproxies_environment()
|
||||
self.assertEqual('http://somewhere:3128', proxies['http'])
|
||||
|
||||
class urlopen_HttpTests(unittest.TestCase, FakeHTTPMixin, FakeFTPMixin):
|
||||
"""Test urlopen() opening a fake http connection."""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue