Merge "Improve url generation func to cover more cases"

This commit is contained in:
Jenkins
2016-12-28 18:31:07 +00:00
committed by Gerrit Code Review
2 changed files with 64 additions and 6 deletions

View File

@@ -38,10 +38,17 @@ def update_service_root():
def get_rfs_url(serviceext): def get_rfs_url(serviceext):
if cfg.redfish_base_ext in serviceext: # Strip slash to make sure all input with/without slash
redfish_base_ext = cfg.redfish_base_ext.strip("/")
serviceext = serviceext.strip("/")
# Check whether serviceext statswith redfish_base_ext "redfish/v1", if yes,
# use it as relative_url, otherwise add "redfish/v1" before it.
if serviceext.startswith(redfish_base_ext):
relative_url = serviceext relative_url = serviceext
else: else:
relative_url = os.path.join(cfg.redfish_base_ext, serviceext) relative_url = os.path.normpath(
"/".join([redfish_base_ext, serviceext]))
return requests.compat.urljoin(cfg.podm_url, relative_url) return requests.compat.urljoin(cfg.podm_url, relative_url)

View File

@@ -11,6 +11,7 @@
# under the License. # under the License.
import mock import mock
from requests.compat import urljoin
from unittest import TestCase from unittest import TestCase
from valence import config as cfg from valence import config as cfg
@@ -20,16 +21,66 @@ from valence.tests.unit import fakes
class TestRedfish(TestCase): class TestRedfish(TestCase):
def test_get_rfs_url_no_service_ext(self): def test_get_rfs_url(self):
expected = cfg.podm_url + "/redfish/v1/Systems/1" cfg.podm_url = "https://127.0.0.1:8443"
expected = urljoin(cfg.podm_url, "redfish/v1/Systems/1")
# test without service_ext
result = redfish.get_rfs_url("/Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("/Systems/1")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("Systems/1") result = redfish.get_rfs_url("Systems/1")
self.assertEqual(expected, result) self.assertEqual(expected, result)
def test_get_rfs_url_with_service_ext(self): # test with service_ext
expected = cfg.podm_url + "/redfish/v1/Systems/1" result = redfish.get_rfs_url("/redfish/v1/Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("/redfish/v1/Systems/1") result = redfish.get_rfs_url("/redfish/v1/Systems/1")
self.assertEqual(expected, result) self.assertEqual(expected, result)
result = redfish.get_rfs_url("redfish/v1/Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("redfish/v1/Systems/1")
self.assertEqual(expected, result)
def test_get_rfs_url_with_tailing_slash(self):
cfg.podm_url = "https://127.0.0.1:8443/"
expected = urljoin(cfg.podm_url, "redfish/v1/Systems/1")
# test without service_ext
result = redfish.get_rfs_url("/Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("/Systems/1")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("Systems/1")
self.assertEqual(expected, result)
# test with service_ext
result = redfish.get_rfs_url("/redfish/v1/Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("/redfish/v1/Systems/1")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("redfish/v1/Systems/1/")
self.assertEqual(expected, result)
result = redfish.get_rfs_url("redfish/v1/Systems/1")
self.assertEqual(expected, result)
@mock.patch('valence.redfish.redfish.send_request') @mock.patch('valence.redfish.redfish.send_request')
def test_get_base_resource_url_chassis(self, mock_request): def test_get_base_resource_url_chassis(self, mock_request):
fake_resp = fakes.mock_request_get(fakes.fake_service_root(), "200") fake_resp = fakes.mock_request_get(fakes.fake_service_root(), "200")