From 7634c2e77253d0fd8b8f0393b05204e6917b687b Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Thu, 15 Dec 2016 16:35:27 +0000 Subject: [PATCH] Add robustness to our v2 schema error messages: * Ensure we dont raise exception if e.cause does not contain a message * Ensure we handle case where e.path may be empty * Refactor existing tests to conform to new format --- app/schema_validation/__init__.py | 23 ++++++++++++++++++- tests/app/delivery/test_send_to_providers.py | 1 - .../notifications/test_get_notifications.py | 4 ++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/schema_validation/__init__.py b/app/schema_validation/__init__.py index fe643ad61..593e1b41a 100644 --- a/app/schema_validation/__init__.py +++ b/app/schema_validation/__init__.py @@ -42,4 +42,25 @@ def build_error_message(errors): def __format_message(e): - return e.message.replace("'", "") if not e.cause else "{} {}".format(e.path[0], e.cause.message) + def get_path(e): + error_path = None + try: + error_path = e.path[0] + finally: + return error_path + + def get_error_message(e): + error_message = None + try: + error_message = e.cause.message + except AttributeError: + error_message = e.message + finally: + return error_message.replace("'", '') + + path = get_path(e) + message = get_error_message(e) + if path: + return "{} {}".format(path, message) + else: + return "{}".format(message) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index dfddbb49b..2f37d1eed 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -109,7 +109,6 @@ def test_should_send_personalised_template_to_correct_email_provider_and_persist assert '