diff options
author | Kristjan Valur Jonsson <sweskman@gmail.com> | 2011-03-30 11:39:24 (GMT) |
---|---|---|
committer | Kristjan Valur Jonsson <sweskman@gmail.com> | 2011-03-30 11:39:24 (GMT) |
commit | 3c136e19b9de13f8d4163a0feb3af54ab8b8c765 (patch) | |
tree | 8a0c2faa0a95fc1ddaf994f9b8cc6ecd88b547d9 /Lib/test/test_urllib2.py | |
parent | 978da33c7a07bf133d144a7ad342de7e20777250 (diff) | |
parent | 010a94848943b543dd54661e7e3857f19aabd741 (diff) | |
download | cpython-3c136e19b9de13f8d4163a0feb3af54ab8b8c765.zip cpython-3c136e19b9de13f8d4163a0feb3af54ab8b8c765.tar.gz cpython-3c136e19b9de13f8d4163a0feb3af54ab8b8c765.tar.bz2 |
Merge
Diffstat (limited to 'Lib/test/test_urllib2.py')
-rw-r--r-- | Lib/test/test_urllib2.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 1d0d98c..113c10d 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -10,6 +10,7 @@ import urllib.request # 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 +import urllib.error # XXX # Request @@ -1031,6 +1032,29 @@ class HandlerTests(unittest.TestCase): self.assertEqual(count, urllib.request.HTTPRedirectHandler.max_redirections) + + def test_invalid_redirect(self): + from_url = "http://example.com/a.html" + valid_schemes = ['http','https','ftp'] + invalid_schemes = ['file','imap','ldap'] + schemeless_url = "example.com/b.html" + h = urllib.request.HTTPRedirectHandler() + o = h.parent = MockOpener() + req = Request(from_url) + req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT + + for scheme in invalid_schemes: + invalid_url = scheme + '://' + schemeless_url + self.assertRaises(urllib.error.HTTPError, h.http_error_302, + req, MockFile(), 302, "Security Loophole", + MockHeaders({"location": invalid_url})) + + for scheme in valid_schemes: + valid_url = scheme + '://' + schemeless_url + h.http_error_302(req, MockFile(), 302, "That's fine", + MockHeaders({"location": valid_url})) + self.assertEqual(o.req.get_full_url(), valid_url) + def test_cookie_redirect(self): # cookies shouldn't leak into redirected requests from http.cookiejar import CookieJar |