diff options
| -rw-r--r-- | ceilometerclient/common/http.py | 8 | ||||
| -rw-r--r-- | tests/test_http.py | 50 | ||||
| -rw-r--r-- | tests/utils.py | 3 | ||||
| -rw-r--r-- | tools/test-requires | 1 |
4 files changed, 58 insertions, 4 deletions
diff --git a/ceilometerclient/common/http.py b/ceilometerclient/common/http.py index 2c61536..ea4d64f 100644 --- a/ceilometerclient/common/http.py +++ b/ceilometerclient/common/http.py @@ -118,6 +118,11 @@ class HTTPClient(object): dump.extend([body, '']) LOG.debug('\n'.join(dump)) + def _make_connection_url(self, url): + (_class, _args, _kwargs) = self.connection_params + base_url = _args[2] + return '%s/%s' % (base_url.rstrip('/'), url.lstrip('/')) + def _http_request(self, url, method, **kwargs): """ Send an http request with the specified characteristics. @@ -134,8 +139,7 @@ class HTTPClient(object): conn = self.get_connection() try: - conn_params = self.connection_params[1][2] - conn_url = os.path.normpath('%s/%s' % (conn_params, url)) + conn_url = self._make_connection_url(url) conn.request(method, conn_url, **kwargs) resp = conn.getresponse() except socket.gaierror as e: diff --git a/tests/test_http.py b/tests/test_http.py new file mode 100644 index 0000000..2445810 --- /dev/null +++ b/tests/test_http.py @@ -0,0 +1,50 @@ +# Copyright 2012 OpenStack LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import unittest + +from tests import utils + +from ceilometerclient.common import http + + +fixtures = {} + + +class HttpClientTest(unittest.TestCase): + + def test_url_generation_trailing_slash_in_base(self): + client = http.HTTPClient('http://localhost/') + url = client._make_connection_url('/v1/resources') + print client.connection_params + self.assertEqual(url, '/v1/resources') + + def test_url_generation_without_trailing_slash_in_base(self): + client = http.HTTPClient('http://localhost') + url = client._make_connection_url('/v1/resources') + print client.connection_params + self.assertEqual(url, '/v1/resources') + + def test_url_generation_prefix_slash_in_path(self): + client = http.HTTPClient('http://localhost/') + url = client._make_connection_url('/v1/resources') + print client.connection_params + self.assertEqual(url, '/v1/resources') + + def test_url_generation_without_prefix_slash_in_path(self): + client = http.HTTPClient('http://localhost') + url = client._make_connection_url('v1/resources') + print client.connection_params + self.assertEqual(url, '/v1/resources') diff --git a/tests/utils.py b/tests/utils.py index 2ec4a60..3987e2f 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -40,7 +40,7 @@ class FakeAPI(object): class FakeResponse(object): - def __init__(self, headers, body=None): + def __init__(self, headers, body=None, version=None): """ :param headers: dict representing HTTP response headers :param body: file-like object @@ -56,3 +56,4 @@ class FakeResponse(object): def read(self, amt): return self.body.read(amt) + diff --git a/tools/test-requires b/tools/test-requires index c39eaf1..9f9f13a 100644 --- a/tools/test-requires +++ b/tools/test-requires @@ -1,5 +1,4 @@ distribute>=0.6.24 - mox nose nose-exclude |
