summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--swiftclient/client.py3
-rw-r--r--tests/unit/test_swiftclient.py23
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')