From 857c37b54febada11ff9b66f4ae26ca9658ee33c Mon Sep 17 00:00:00 2001 From: Gianluca Paronitti Date: Tue, 19 Oct 2021 19:16:45 +0200 Subject: [PATCH] fix: bug #1570, manages JSONDecodeError exception test: copes with possible future regressions --- googleapiclient/model.py | 5 +++-- tests/test_json_model.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/googleapiclient/model.py b/googleapiclient/model.py index 659ec0b08e2..0107a74778e 100644 --- a/googleapiclient/model.py +++ b/googleapiclient/model.py @@ -280,11 +280,12 @@ def deserialize(self, content): pass try: body = json.loads(content) - if self._data_wrapper and isinstance(body, dict) and "data" in body: - body = body["data"] except json.decoder.JSONDecodeError: if isinstance(content, str): body = content + else: + if self._data_wrapper and isinstance(body, dict) and "data" in body: + body = body["data"] return body @property diff --git a/tests/test_json_model.py b/tests/test_json_model.py index 4d5bb595ac7..cd3d7db3b6c 100644 --- a/tests/test_json_model.py +++ b/tests/test_json_model.py @@ -35,6 +35,7 @@ from googleapiclient.model import JsonModel _LIBRARY_VERSION = pkg_resources.get_distribution("google-api-python-client").version +CSV_TEXT_MOCK = 'column1,column2,column3\nstring1,1.2,string2' class Model(unittest.TestCase): @@ -293,9 +294,9 @@ def test_no_data_wrapper_deserialize_text_format(self): model = JsonModel(data_wrapper=False) resp = httplib2.Response({"status": "200"}) resp.reason = "OK" - content = 'column1,column2,column3\nstring1,1.2,string2' + content = CSV_TEXT_MOCK content = model.response(resp, content) - self.assertEqual(content, 'column1,column2,column3\nstring1,1.2,string2') + self.assertEqual(content, CSV_TEXT_MOCK) def test_data_wrapper_deserialize(self): model = JsonModel(data_wrapper=True)