Merge "Raise Not Authorized Exception when connection request is forbidden"
This commit is contained in:
commit
57f2e99cce
@ -130,13 +130,12 @@ class BaseClient(object):
|
|||||||
|
|
||||||
verify_ssl = self._get_verify_connection_option()
|
verify_ssl = self._get_verify_connection_option()
|
||||||
|
|
||||||
try:
|
response = requests.get(
|
||||||
versions = requests.get(
|
url, headers=headers, verify=verify_ssl
|
||||||
url, headers=headers, verify=verify_ssl
|
)
|
||||||
).json()
|
_check_request_status(response)
|
||||||
return versions
|
versions = response.json()
|
||||||
except requests.RequestException as e:
|
return versions
|
||||||
raise exceptions.OneViewConnectionError(e.message)
|
|
||||||
|
|
||||||
# --- Requests ---
|
# --- Requests ---
|
||||||
def _prepare_and_do_request(
|
def _prepare_and_do_request(
|
||||||
@ -698,8 +697,9 @@ def _check_request_status(response):
|
|||||||
repeat = False
|
repeat = False
|
||||||
status = response.status_code
|
status = response.status_code
|
||||||
|
|
||||||
if status == 401:
|
if status in (401, 403):
|
||||||
raise exceptions.OneViewNotAuthorizedException()
|
error_code = response.json().get('errorCode')
|
||||||
|
raise exceptions.OneViewNotAuthorizedException(error_code)
|
||||||
elif status == 404:
|
elif status == 404:
|
||||||
raise exceptions.OneViewResourceNotFoundError()
|
raise exceptions.OneViewResourceNotFoundError()
|
||||||
elif status in (408, 409,):
|
elif status in (408, 409,):
|
||||||
|
@ -940,7 +940,8 @@ class OneViewClientTestCase(unittest.TestCase):
|
|||||||
mock_get_oneview_version.assert_called_once_with()
|
mock_get_oneview_version.assert_called_once_with()
|
||||||
|
|
||||||
@mock.patch.object(client.Client, 'get_oneview_version')
|
@mock.patch.object(client.Client, 'get_oneview_version')
|
||||||
def test_verify_oneview_version_fail(self, mock_get_oneview_version):
|
def test_verify_oneview_version_under_supported(self,
|
||||||
|
mock_get_oneview_version):
|
||||||
mock_get_oneview_version.return_value = {
|
mock_get_oneview_version.return_value = {
|
||||||
'minimumVersion': 120,
|
'minimumVersion': 120,
|
||||||
'currentVersion': 120
|
'currentVersion': 120
|
||||||
@ -950,6 +951,85 @@ class OneViewClientTestCase(unittest.TestCase):
|
|||||||
self.oneview_client.verify_oneview_version
|
self.oneview_client.verify_oneview_version
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, 'get_oneview_version')
|
||||||
|
def test_verify_oneview_version_within_supported(
|
||||||
|
self,
|
||||||
|
mock_get_oneview_version
|
||||||
|
):
|
||||||
|
mock_get_oneview_version.return_value = {
|
||||||
|
'minimumVersion': 120,
|
||||||
|
'currentVersion': 300
|
||||||
|
}
|
||||||
|
self.oneview_client.verify_oneview_version()
|
||||||
|
mock_get_oneview_version.assert_called_once_with()
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, 'get_oneview_version')
|
||||||
|
def test_verify_oneview_version_within_supported2(
|
||||||
|
self,
|
||||||
|
mock_get_oneview_version
|
||||||
|
):
|
||||||
|
mock_get_oneview_version.return_value = {
|
||||||
|
'minimumVersion': 200,
|
||||||
|
'currentVersion': 300
|
||||||
|
}
|
||||||
|
self.oneview_client.verify_oneview_version()
|
||||||
|
mock_get_oneview_version.assert_called_once_with()
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, 'get_oneview_version')
|
||||||
|
def test_verify_oneview_version_over_supported(self,
|
||||||
|
mock_get_oneview_version):
|
||||||
|
mock_get_oneview_version.return_value = {
|
||||||
|
'minimumVersion': 300,
|
||||||
|
'currentVersion': 400
|
||||||
|
}
|
||||||
|
self.assertRaises(
|
||||||
|
exceptions.IncompatibleOneViewAPIVersion,
|
||||||
|
self.oneview_client.verify_oneview_version
|
||||||
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(client.Client, 'get_oneview_version')
|
||||||
|
def test_verify_oneview_version_not_authorized(self,
|
||||||
|
mock_get_oneview_version):
|
||||||
|
mock_get_oneview_version.side_effect = [
|
||||||
|
exceptions.OneViewNotAuthorizedException
|
||||||
|
]
|
||||||
|
|
||||||
|
self.assertRaises(
|
||||||
|
exceptions.OneViewNotAuthorizedException,
|
||||||
|
self.oneview_client.verify_oneview_version
|
||||||
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(requests, 'get')
|
||||||
|
def test_get_oneview_version_forbidden_with_json(self, mock_get):
|
||||||
|
response = mock_get.return_value
|
||||||
|
response.status_code = http_client.FORBIDDEN
|
||||||
|
response.json.return_value = {
|
||||||
|
'errorSource': None,
|
||||||
|
'recommendedActions': [
|
||||||
|
'Check the request URI, then resend the request.'
|
||||||
|
],
|
||||||
|
'nestedErrors': [],
|
||||||
|
'errorCode': 'GENERIC_HTTP_403',
|
||||||
|
'details': 'You are not allowed to access the requested resource.',
|
||||||
|
'message': 'Forbidden',
|
||||||
|
'data': {}
|
||||||
|
}
|
||||||
|
mock_get.return_value = response
|
||||||
|
self.assertRaises(
|
||||||
|
exceptions.OneViewNotAuthorizedException,
|
||||||
|
self.oneview_client.get_oneview_version
|
||||||
|
)
|
||||||
|
|
||||||
|
@mock.patch.object(requests, 'get')
|
||||||
|
def test_get_oneview_version_forbidden_without_json(self, mock_get):
|
||||||
|
response = mock_get.return_value
|
||||||
|
response.status_code = http_client.FORBIDDEN
|
||||||
|
mock_get.return_value = response
|
||||||
|
self.assertRaises(
|
||||||
|
exceptions.OneViewNotAuthorizedException,
|
||||||
|
self.oneview_client.get_oneview_version
|
||||||
|
)
|
||||||
|
|
||||||
@mock.patch.object(client.Client, 'get_server_profile_from_hardware')
|
@mock.patch.object(client.Client, 'get_server_profile_from_hardware')
|
||||||
def test_is_mac_compatible_with_server_profile(
|
def test_is_mac_compatible_with_server_profile(
|
||||||
self, mock_get_server_profile_from_hardware
|
self, mock_get_server_profile_from_hardware
|
||||||
|
Loading…
x
Reference in New Issue
Block a user