From 616c0884816aed84697aae9b9d072e1d09a0f49a Mon Sep 17 00:00:00 2001 From: Kristian Mosti Date: Wed, 3 Apr 2024 14:16:40 +0200 Subject: [PATCH 1/2] fix(parse-errors): ensure if block execution When error messages contains more than one object, ensure that they are all parsed. --- jira/resilientsession.py | 6 +++--- tests/test_resilientsession.py | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/jira/resilientsession.py b/jira/resilientsession.py index f5447f2fa..306f02b19 100644 --- a/jira/resilientsession.py +++ b/jira/resilientsession.py @@ -105,11 +105,11 @@ def parse_errors(resp: Response) -> list[str]: if "message" in resp_data: # Jira 5.1 errors parsed_errors = [resp_data["message"]] - elif "errorMessage" in resp_data: + if "errorMessage" in resp_data: # Sometimes Jira returns `errorMessage` as a message error key # for example for the "Service temporary unavailable" error parsed_errors = [resp_data["errorMessage"]] - elif "errorMessages" in resp_data: + if "errorMessages" in resp_data: # Jira 5.0.x error messages sometimes come wrapped in this array # Sometimes this is present but empty error_messages = resp_data["errorMessages"] @@ -118,7 +118,7 @@ def parse_errors(resp: Response) -> list[str]: parsed_errors = list(error_messages) else: parsed_errors = [error_messages] - elif "errors" in resp_data: + if "errors" in resp_data: resp_errors = resp_data["errors"] if len(resp_errors) > 0 and isinstance(resp_errors, dict): # Catching only 'errors' that are dict. See https://github.com/pycontribs/jira/issues/350 diff --git a/tests/test_resilientsession.py b/tests/test_resilientsession.py index 4a7bbd800..e8770e995 100644 --- a/tests/test_resilientsession.py +++ b/tests/test_resilientsession.py @@ -159,6 +159,7 @@ def test_status_codes_retries( (500, {}, '{"errorMessages": "err1"}', ["err1"]), (500, {}, '{"errorMessages": ["err1", "err2"]}', ["err1", "err2"]), (500, {}, '{"errors": {"code1": "err1", "code2": "err2"}}', ["err1", "err2"]), + (500, {}, '{"errorMessages": [], "errors": {"code1": "err1", "code2": "err2"}}', ["err1", "err2"]), ] From bb7ab50a3fff3379ea70ba9b320dabb64648d6f1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 12:27:43 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_resilientsession.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/test_resilientsession.py b/tests/test_resilientsession.py index e8770e995..7762ec8fa 100644 --- a/tests/test_resilientsession.py +++ b/tests/test_resilientsession.py @@ -159,7 +159,12 @@ def test_status_codes_retries( (500, {}, '{"errorMessages": "err1"}', ["err1"]), (500, {}, '{"errorMessages": ["err1", "err2"]}', ["err1", "err2"]), (500, {}, '{"errors": {"code1": "err1", "code2": "err2"}}', ["err1", "err2"]), - (500, {}, '{"errorMessages": [], "errors": {"code1": "err1", "code2": "err2"}}', ["err1", "err2"]), + ( + 500, + {}, + '{"errorMessages": [], "errors": {"code1": "err1", "code2": "err2"}}', + ["err1", "err2"], + ), ]