diff options
| author | Łukasz Langa <lukasz@langa.pl> | 2011-10-18 15:16:00 (GMT) |
|---|---|---|
| committer | Łukasz Langa <lukasz@langa.pl> | 2011-10-18 15:16:00 (GMT) |
| commit | 7a15390f83c57283b44163c33bb4a80fd453526b (patch) | |
| tree | 886352b96b8aa3e797b97a16985c75696aeb2078 /Lib/test/test_httplib.py | |
| parent | 086f927f25be79ea65679faca485bda06e21ac3b (diff) | |
| download | cpython-7a15390f83c57283b44163c33bb4a80fd453526b.zip cpython-7a15390f83c57283b44163c33bb4a80fd453526b.tar.gz cpython-7a15390f83c57283b44163c33bb4a80fd453526b.tar.bz2 | |
Fixes #10860: Handle empty port after port delimiter in httplib
Thanks, Shawn Ligocki!
3.x version will come as a separate patch.
Diffstat (limited to 'Lib/test/test_httplib.py')
| -rw-r--r-- | Lib/test/test_httplib.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py index 2708728..dbc1c7f 100644 --- a/Lib/test/test_httplib.py +++ b/Lib/test/test_httplib.py @@ -152,13 +152,15 @@ class BasicTest(TestCase): def test_host_port(self): # Check invalid host_port - for hp in ("www.python.org:abc", "www.python.org:"): + # Note that httplib does not accept user:password@ in the host-port. + for hp in ("www.python.org:abc", "user:password@www.python.org"): self.assertRaises(httplib.InvalidURL, httplib.HTTP, hp) for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", "fe80::207:e9ff:fe9b", 8000), ("www.python.org:80", "www.python.org", 80), ("www.python.org", "www.python.org", 80), + ("www.python.org:", "www.python.org", 80), ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80)): http = httplib.HTTP(hp) c = http._conn @@ -439,6 +441,27 @@ class HTTPSTimeoutTest(TestCase): h = httplib.HTTPSConnection(HOST, TimeoutTest.PORT, timeout=30) self.assertEqual(h.timeout, 30) + def test_host_port(self): + # Check invalid host_port + + # Note that httplib does not accept user:password@ in the host-port. + for hp in ("www.python.org:abc", "user:password@www.python.org"): + self.assertRaises(httplib.InvalidURL, httplib.HTTP, hp) + + for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", "fe80::207:e9ff:fe9b", + 8000), + ("pypi.python.org:443", "pypi.python.org", 443), + ("pypi.python.org", "pypi.python.org", 443), + ("pypi.python.org:", "pypi.python.org", 443), + ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 443)): + http = httplib.HTTPS(hp) + c = http._conn + if h != c.host: + self.fail("Host incorrectly parsed: %s != %s" % (h, c.host)) + if p != c.port: + self.fail("Port incorrectly parsed: %s != %s" % (p, c.host)) + + def test_main(verbose=None): test_support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, HTTPSTimeoutTest, SourceAddressTest) |
