Updated remove_version_from_href to be more intelligent
Added tests
This commit is contained in:
@@ -136,11 +136,21 @@ def get_id_from_href(href):
|
||||
raise webob.exc.HTTPBadRequest(_('could not parse id from href'))
|
||||
|
||||
|
||||
def remove_version_from_href(base_url):
|
||||
def remove_version_from_href(href):
|
||||
"""Removes the api version from the href.
|
||||
|
||||
Given: 'http://www.nova.com/v1.1/123'
|
||||
Returns: 'http://www.nova.com/123'
|
||||
|
||||
"""
|
||||
return base_url.rsplit('/', 1).pop(0)
|
||||
try:
|
||||
#matches /v#.#
|
||||
new_href = re.sub(r'[/][v][0-9]*.[0-9]*', '', href)
|
||||
if new_href == href:
|
||||
msg = _('href does not contain version')
|
||||
raise webob.exc.HTTPBadRequest(explanation=msg)
|
||||
return new_href
|
||||
except:
|
||||
LOG.debug(_("Error removing version from href: %s") % href)
|
||||
msg = _('could not parse version from href')
|
||||
raise webob.exc.HTTPBadRequest(explanation=msg)
|
||||
|
||||
@@ -190,3 +190,42 @@ class PaginationParamsTest(test.TestCase):
|
||||
req = Request.blank('/?limit=20&marker=40')
|
||||
self.assertEqual(common.get_pagination_params(req),
|
||||
{'marker': 40, 'limit': 20})
|
||||
|
||||
|
||||
class MiscFunctionsTest(test.TestCase):
|
||||
|
||||
def test_remove_version_from_href(self):
|
||||
|
||||
fixture = 'http://www.testsite.com/v1.1/images'
|
||||
expected = 'http://www.testsite.com/images'
|
||||
actual = common.remove_version_from_href(fixture)
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
def test_remove_version_from_href_2(self):
|
||||
|
||||
fixture = 'http://www.testsite.com/v1.1/'
|
||||
expected = 'http://www.testsite.com/'
|
||||
actual = common.remove_version_from_href(fixture)
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
def test_remove_version_from_href_bad_request(self):
|
||||
|
||||
fixture = 'http://www.testsite.com/1.1/images'
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
common.remove_version_from_href,
|
||||
fixture)
|
||||
|
||||
def test_get_id_from_href(self):
|
||||
|
||||
fixture = 'http://www.testsite.com/dir/45'
|
||||
actual = common.get_id_from_href(fixture)
|
||||
expected = 45
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
def test_get_id_from_href_bad_request(self):
|
||||
|
||||
fixture = 'http://45'
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
common.get_id_from_href,
|
||||
fixture)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user