Fix Issue8123 - TypeError in urllib when trying to use HTTP authentication
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index cea153e..98308b6 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -190,6 +190,17 @@
finally:
self.unfakehttp()
+ def test_userpass_inurl(self):
+ self.fakehttp(b"Hello!")
+ try:
+ fp = urlopen("http://user:pass@python.org/")
+ self.assertEqual(fp.readline(), b"Hello!")
+ self.assertEqual(fp.readline(), b"")
+ self.assertEqual(fp.geturl(), 'http://user:pass@python.org/')
+ self.assertEqual(fp.getcode(), 200)
+ finally:
+ self.unfakehttp()
+
class urlretrieve_FileTests(unittest.TestCase):
"""Test urllib.urlretrieve() on local files"""
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 6c4b5f7..24a4797 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1591,13 +1591,13 @@
if proxy_passwd:
import base64
- proxy_auth = base64.b64encode(proxy_passwd).strip()
+ proxy_auth = base64.b64encode(proxy_passwd.encode()).strip()
else:
proxy_auth = None
if user_passwd:
import base64
- auth = base64.b64encode(user_passwd).strip()
+ auth = base64.b64encode(user_passwd.encode()).strip()
else:
auth = None
http_conn = connection_factory(host)