diff options
-rw-r--r-- | swiftclient/client.py | 3 | ||||
-rw-r--r-- | tests/unit/test_swiftclient.py | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/swiftclient/client.py b/swiftclient/client.py index 11725f8..b18241d 100644 --- a/swiftclient/client.py +++ b/swiftclient/client.py @@ -172,7 +172,8 @@ class HTTPConnection(object): self.requests_args = {} self.request_session = requests.Session() if self.parsed_url.scheme not in ('http', 'https'): - raise ClientException("Unsupported scheme") + raise ClientException('Unsupported scheme "%s" in url "%s"' + % (self.parsed_url.scheme, url)) self.requests_args['verify'] = not insecure if cacert and not insecure: # verify requests parameter is used to pass the CA_BUNDLE file diff --git a/tests/unit/test_swiftclient.py b/tests/unit/test_swiftclient.py index 9737520..0c2a669 100644 --- a/tests/unit/test_swiftclient.py +++ b/tests/unit/test_swiftclient.py @@ -1036,6 +1036,29 @@ class TestGetCapabilities(MockHttpTest): class TestHTTPConnection(MockHttpTest): + def test_bad_url_scheme(self): + url = u'www.test.com' + exc = self.assertRaises(c.ClientException, c.http_connection, url) + expected = u'Unsupported scheme "" in url "www.test.com"' + self.assertEqual(expected, str(exc)) + + url = u'://www.test.com' + exc = self.assertRaises(c.ClientException, c.http_connection, url) + expected = u'Unsupported scheme "" in url "://www.test.com"' + self.assertEqual(expected, str(exc)) + + url = u'blah://www.test.com' + exc = self.assertRaises(c.ClientException, c.http_connection, url) + expected = u'Unsupported scheme "blah" in url "blah://www.test.com"' + self.assertEqual(expected, str(exc)) + + def test_ok_url_scheme(self): + for scheme in ('http', 'https', 'HTTP', 'HTTPS'): + url = u'%s://www.test.com' % scheme + parsed_url, conn = c.http_connection(url) + self.assertEqual(scheme.lower(), parsed_url.scheme) + self.assertEqual(u'%s://www.test.com' % scheme, conn.url) + def test_ok_proxy(self): conn = c.http_connection(u'http://www.test.com/', proxy='http://localhost:8080') |