Add a url_converter to check the date format.

This commit is contained in:
Rebecca Law
2019-12-30 16:53:32 +00:00
parent 41be4c054b
commit 03fe7674bf
4 changed files with 19 additions and 1 deletions

View File

@@ -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):

View File

@@ -17,7 +17,7 @@ def returned_letter_summary(service_id):
)
@main.route("/services/<uuid:service_id>/returned-letters-csv/<reported_at>", methods=["GET"])
@main.route("/services/<uuid:service_id>/returned-letters-csv/<simple_date:reported_at>", 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)

View File

@@ -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]))'

View File

@@ -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()