mirror of
https://github.com/python/cpython.git
synced 2025-08-30 21:48:47 +00:00
Issue #11500: Fixed a bug in the os x proxy bypass code for fully qualified IP addresses in the proxy exception list
Patch by Scott Wilson.
This commit is contained in:
parent
94eceeb89c
commit
e72e161851
3 changed files with 102 additions and 58 deletions
|
@ -6,7 +6,9 @@ import io
|
|||
import socket
|
||||
|
||||
import urllib.request
|
||||
from urllib.request import Request, OpenerDirector
|
||||
# The proxy bypass method imported below has logic specific to the OSX
|
||||
# proxy config data structure but is testable on all platforms.
|
||||
from urllib.request import Request, OpenerDirector, _proxy_bypass_macosx_sysconf
|
||||
|
||||
# XXX
|
||||
# Request
|
||||
|
@ -1030,6 +1032,17 @@ class HandlerTests(unittest.TestCase):
|
|||
self.assertEqual(req.get_host(), "www.python.org")
|
||||
del os.environ['no_proxy']
|
||||
|
||||
def test_proxy_no_proxy_all(self):
|
||||
os.environ['no_proxy'] = '*'
|
||||
o = OpenerDirector()
|
||||
ph = urllib.request.ProxyHandler(dict(http="proxy.example.com"))
|
||||
o.add_handler(ph)
|
||||
req = Request("http://www.python.org")
|
||||
self.assertEqual(req.get_host(), "www.python.org")
|
||||
r = o.open(req)
|
||||
self.assertEqual(req.get_host(), "www.python.org")
|
||||
del os.environ['no_proxy']
|
||||
|
||||
|
||||
def test_proxy_https(self):
|
||||
o = OpenerDirector()
|
||||
|
@ -1070,6 +1083,26 @@ class HandlerTests(unittest.TestCase):
|
|||
self.assertEqual(req.get_host(), "proxy.example.com:3128")
|
||||
self.assertEqual(req.get_header("Proxy-authorization"),"FooBar")
|
||||
|
||||
def test_osx_proxy_bypass(self):
|
||||
bypass = {
|
||||
'exclude_simple': False,
|
||||
'exceptions': ['foo.bar', '*.bar.com', '127.0.0.1', '10.10',
|
||||
'10.0/16']
|
||||
}
|
||||
# Check hosts that should trigger the proxy bypass
|
||||
for host in ('foo.bar', 'www.bar.com', '127.0.0.1', '10.10.0.1',
|
||||
'10.0.0.1'):
|
||||
self.assertTrue(_proxy_bypass_macosx_sysconf(host, bypass),
|
||||
'expected bypass of %s to be True' % host)
|
||||
# Check hosts that should not trigger the proxy bypass
|
||||
for host in ('abc.foo.bar', 'bar.com', '127.0.0.2', '10.11.0.1', 'test'):
|
||||
self.assertFalse(_proxy_bypass_macosx_sysconf(host, bypass),
|
||||
'expected bypass of %s to be False' % host)
|
||||
|
||||
# Check the exclude_simple flag
|
||||
bypass = {'exclude_simple': True, 'exceptions': []}
|
||||
self.assertTrue(_proxy_bypass_macosx_sysconf('test', bypass))
|
||||
|
||||
def test_basic_auth(self, quote_char='"'):
|
||||
opener = OpenerDirector()
|
||||
password_manager = MockPasswordManager()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue