diff options
Diffstat (limited to 'glanceclient/tests/unit/test_exc.py')
-rw-r--r-- | glanceclient/tests/unit/test_exc.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/glanceclient/tests/unit/test_exc.py b/glanceclient/tests/unit/test_exc.py new file mode 100644 index 0000000..575c62b --- /dev/null +++ b/glanceclient/tests/unit/test_exc.py @@ -0,0 +1,70 @@ +# Copyright 2012 OpenStack Foundation +# 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 mock +import testtools + +from glanceclient import exc + +HTML_MSG = """<html> + <head> + <title>404 Entity Not Found</title> + </head> + <body> + <h1>404 Entity Not Found</h1> + Entity could not be found + <br /><br /> + </body> +</html>""" + + +class TestHTTPExceptions(testtools.TestCase): + def test_from_response(self): + """exc.from_response should return instance of an HTTP exception.""" + mock_resp = mock.Mock() + mock_resp.status_code = 400 + out = exc.from_response(mock_resp) + self.assertIsInstance(out, exc.HTTPBadRequest) + + def test_handles_json(self): + """exc.from_response should not print JSON.""" + mock_resp = mock.Mock() + mock_resp.status_code = 413 + mock_resp.json.return_value = { + "overLimit": { + "code": 413, + "message": "OverLimit Retry...", + "details": "Error Details...", + "retryAt": "2014-12-03T13:33:06Z" + } + } + mock_resp.headers = { + "content-type": "application/json" + } + err = exc.from_response(mock_resp, "Non-empty body") + self.assertIsInstance(err, exc.HTTPOverLimit) + self.assertEqual("OverLimit Retry...", err.details) + + def test_handles_html(self): + """exc.from_response should not print HTML.""" + mock_resp = mock.Mock() + mock_resp.status_code = 404 + mock_resp.text = HTML_MSG + mock_resp.headers = { + "content-type": "text/html" + } + err = exc.from_response(mock_resp, HTML_MSG) + self.assertIsInstance(err, exc.HTTPNotFound) + self.assertEqual("404 Entity Not Found: Entity could not be found", + err.details) |