From a8de5868f32b45868f178f420138fcd2fe42f5fd Mon Sep 17 00:00:00 2001 From: HemangChothani <50404902+HemangChothani@users.noreply.github.com> Date: Wed, 26 Aug 2020 23:11:18 +0530 Subject: [PATCH] feat: error message return from api (#235) * feat(storage): error message retyrn from api * feat: add comment for clarification * fix: remove unknown error Co-authored-by: Tres Seaver Co-authored-by: Frank Natividad --- google/cloud/storage/blob.py | 8 +++++++- tests/unit/test_blob.py | 12 +++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/google/cloud/storage/blob.py b/google/cloud/storage/blob.py index c2ff5790e..08a86a52d 100644 --- a/google/cloud/storage/blob.py +++ b/google/cloud/storage/blob.py @@ -3427,7 +3427,13 @@ def _raise_from_invalid_response(error): to the failed status code """ response = error.response - error_message = str(error) + + # The 'response.text' gives the actual reason of error, where 'error' gives + # the message of expected status code. + if response.text: + error_message = response.text + ": " + str(error) + else: + error_message = str(error) message = u"{method} {url}: {error}".format( method=response.request.method, url=response.request.url, error=error_message diff --git a/tests/unit/test_blob.py b/tests/unit/test_blob.py index 20e20abe4..b2589499d 100644 --- a/tests/unit/test_blob.py +++ b/tests/unit/test_blob.py @@ -4356,7 +4356,7 @@ def _call_fut(error): return _raise_from_invalid_response(error) - def _helper(self, message, code=http_client.BAD_REQUEST, args=()): + def _helper(self, message, code=http_client.BAD_REQUEST, reason=None, args=()): import requests from google.resumable_media import InvalidResponse @@ -4364,6 +4364,7 @@ def _helper(self, message, code=http_client.BAD_REQUEST, args=()): response = requests.Response() response.request = requests.Request("GET", "http://example.com").prepare() + response._content = reason response.status_code = code error = InvalidResponse(response, message, *args) @@ -4381,9 +4382,14 @@ def test_default(self): def test_w_206_and_args(self): message = "Failure" + reason = b"Not available" args = ("one", "two") - exc_info = self._helper(message, code=http_client.PARTIAL_CONTENT, args=args) - expected = "GET http://example.com/: {}".format((message,) + args) + exc_info = self._helper( + message, code=http_client.PARTIAL_CONTENT, reason=reason, args=args + ) + expected = "GET http://example.com/: {}: {}".format( + reason.decode("utf-8"), (message,) + args + ) self.assertEqual(exc_info.exception.message, expected) self.assertEqual(exc_info.exception.errors, [])