Merge "Fill status code for every HTTPException"
This commit is contained in:
commit
090ae32542
@ -45,7 +45,7 @@ class HTTPException(BaseException):
|
|||||||
"""Base exception for all HTTP-derived exceptions."""
|
"""Base exception for all HTTP-derived exceptions."""
|
||||||
code = 'N/A'
|
code = 'N/A'
|
||||||
|
|
||||||
def __init__(self, message=None):
|
def __init__(self, message=None, code=None):
|
||||||
super(HTTPException, self).__init__(message)
|
super(HTTPException, self).__init__(message)
|
||||||
try:
|
try:
|
||||||
self.error = jsonutils.loads(message)
|
self.error = jsonutils.loads(message)
|
||||||
@ -60,6 +60,8 @@ class HTTPException(BaseException):
|
|||||||
except Exception:
|
except Exception:
|
||||||
self.error = {'error':
|
self.error = {'error':
|
||||||
{'message': self.message or self.__class__.__doc__}}
|
{'message': self.message or self.__class__.__doc__}}
|
||||||
|
if self.code == "N/A" and code is not None:
|
||||||
|
self.code = code
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
message = self.error['error'].get('message', 'Internal Error')
|
message = self.error['error'].get('message', 'Internal Error')
|
||||||
@ -179,7 +181,7 @@ for obj_name in dir(sys.modules[__name__]):
|
|||||||
def from_response(response):
|
def from_response(response):
|
||||||
"""Return an instance of an HTTPException based on requests response."""
|
"""Return an instance of an HTTPException based on requests response."""
|
||||||
cls = _code_map.get(response.status_code, HTTPException)
|
cls = _code_map.get(response.status_code, HTTPException)
|
||||||
return cls(response.content)
|
return cls(response.content, response.status_code)
|
||||||
|
|
||||||
|
|
||||||
class NoTokenLookupException(Exception):
|
class NoTokenLookupException(Exception):
|
||||||
|
@ -818,6 +818,22 @@ class SessionClientTest(testtools.TestCase):
|
|||||||
# Assert that the raised exception can be converted to string
|
# Assert that the raised exception can be converted to string
|
||||||
self.assertIsNotNone(six.text_type(e))
|
self.assertIsNotNone(six.text_type(e))
|
||||||
|
|
||||||
|
def test_504_error_response(self):
|
||||||
|
# for 504 we don't have specific exception type
|
||||||
|
fake = fakes.FakeHTTPResponse(
|
||||||
|
504,
|
||||||
|
'FAIL',
|
||||||
|
{'content-type': 'application/octet-stream'},
|
||||||
|
'')
|
||||||
|
self.request.return_value = (fake, '')
|
||||||
|
|
||||||
|
client = http.SessionClient(session=mock.ANY,
|
||||||
|
auth=mock.ANY)
|
||||||
|
e = self.assertRaises(exc.HTTPException,
|
||||||
|
client.request, '', 'GET')
|
||||||
|
|
||||||
|
self.assertEqual(504, e.code)
|
||||||
|
|
||||||
def test_kwargs(self):
|
def test_kwargs(self):
|
||||||
fake = fakes.FakeHTTPResponse(
|
fake = fakes.FakeHTTPResponse(
|
||||||
200,
|
200,
|
||||||
|
Loading…
Reference in New Issue
Block a user