added tests for mixed-case scheme URLs, changed adapters passing down URLs into urllib3 by lower-ifying them so that the underlying pool manager can effectively pool by scheme as dictionary key

This commit is contained in:
Viktor Haag
2013-05-24 16:14:14 -04:00
parent 5e94f38001
commit 01993d21dc
2 changed files with 16 additions and 9 deletions
+3 -3
View File
@@ -190,13 +190,13 @@ class HTTPAdapter(BaseAdapter):
:param proxies: (optional) A Requests-style dictionary of proxies used on this request.
"""
proxies = proxies or {}
proxy = proxies.get(urlparse(url).scheme)
proxy = proxies.get(urlparse(url.lower()).scheme)
if proxy:
proxy = prepend_scheme_if_needed(proxy, urlparse(url).scheme)
proxy = prepend_scheme_if_needed(proxy, urlparse(url.lower()).scheme)
conn = ProxyManager(self.poolmanager.connection_from_url(proxy))
else:
conn = self.poolmanager.connection_from_url(url)
conn = self.poolmanager.connection_from_url(url.lower())
return conn
+13 -6
View File
@@ -89,22 +89,29 @@ class RequestsTestCase(unittest.TestCase):
def test_mixed_case_scheme_acceptable(self):
s = requests.Session()
r = requests.Request('GET', 'HTTP://httbin.org/get')
r = requests.Request('GET', 'http://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'hTTp://httbin.org/get')
s = requests.Session()
r = requests.Request('GET', 'HTTP://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'HttP://httbin.org/get')
r = requests.Request('GET', 'hTTp://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'HTTPS://httbin.org/get')
r = requests.Request('GET', 'HttP://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'hTTps://httbin.org/get')
r = requests.Request('GET', 'https://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'HttPs://httbin.org/get')
r = requests.Request('GET', 'HTTPS://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'hTTps://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)
r = requests.Request('GET', 'HttPs://httpbin.org/get')
r = s.send(r.prepare())
self.assertEqual(r.status_code,200)