From 03fe7674bf4c51b8524ba7fa4fea0739781a867b Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Mon, 30 Dec 2019 16:53:32 +0000 Subject: [PATCH] Add a url_converter to check the date format. --- app/__init__.py | 2 ++ app/main/views/returned_letters.py | 2 +- app/url_converters.py | 4 ++++ tests/app/main/views/test_returned_letters.py | 12 ++++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index 0436f5e98..62d070d19 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -85,6 +85,7 @@ from app.notify_client.template_statistics_api_client import ( from app.notify_client.user_api_client import user_api_client from app.url_converters import ( LetterFileExtensionConverter, + SimpleDateTypeConverter, TemplateTypeConverter, ) from app.utils import format_thousands, get_logo_cdn_domain, id_safe @@ -221,6 +222,7 @@ def init_app(application): application.url_map.converters['uuid'].to_python = lambda self, value: value application.url_map.converters['template_type'] = TemplateTypeConverter application.url_map.converters['letter_file_extension'] = LetterFileExtensionConverter + application.url_map.converters['simple_date'] = SimpleDateTypeConverter def convert_to_boolean(value): diff --git a/app/main/views/returned_letters.py b/app/main/views/returned_letters.py index adda4e29d..6d6b24d12 100644 --- a/app/main/views/returned_letters.py +++ b/app/main/views/returned_letters.py @@ -17,7 +17,7 @@ def returned_letter_summary(service_id): ) -@main.route("/services//returned-letters-csv/", methods=["GET"]) +@main.route("/services//returned-letters-csv/", methods=["GET"]) @user_has_permissions('view_activity') def returned_letters_report(service_id, reported_at): returned_letters = service_api_client.get_returned_letters(service_id, reported_at) diff --git a/app/url_converters.py b/app/url_converters.py index e90012f59..9dc649b5a 100644 --- a/app/url_converters.py +++ b/app/url_converters.py @@ -9,3 +9,7 @@ class TemplateTypeConverter(BaseConverter): class LetterFileExtensionConverter(BaseConverter): regex = '(?:pdf|png)' + + +class SimpleDateTypeConverter(BaseConverter): + regex = r'([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))' diff --git a/tests/app/main/views/test_returned_letters.py b/tests/app/main/views/test_returned_letters.py index 96df90981..eb373b07d 100644 --- a/tests/app/main/views/test_returned_letters.py +++ b/tests/app/main/views/test_returned_letters.py @@ -70,3 +70,15 @@ def test_returned_letters_reports( + '12345678,2344567,2019-12-24 13:30,test@gov.uk,' + 'First letter template,3445667,2,,,test_letter.pdf' ) + + +def test_returned_letters_reports_returns_404_for_bad_date( + client_request, + mocker +): + mock = mocker.patch("app.service_api_client.get_returned_letters") + client_request.get_response("main.returned_letters_report", + service_id=SERVICE_ONE_ID, + reported_at='19-12-2019', + _expected_status=404) + mock.assert_not_called()