From 15112b214838aebd8dd0ed5f722d948ffc9a1edb Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Tue, 9 Jun 2020 11:02:22 +0100 Subject: [PATCH] Update post_create_template_schema Updated the `post_create_template_schema` to check that the postage is one of our allowed values. --- app/template/template_schemas.py | 2 +- tests/app/template/test_rest.py | 35 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/template/template_schemas.py b/app/template/template_schemas.py index 9f38262a5..bb069db30 100644 --- a/app/template/template_schemas.py +++ b/app/template/template_schemas.py @@ -18,7 +18,7 @@ post_create_template_schema = { "subject": {"type": "string"}, "created_by": uuid, "parent_folder_id": uuid, - "postage": {"type": "string"}, + "postage": {"type": "string", "format": "postage"}, }, "if": { "properties": { diff --git a/tests/app/template/test_rest.py b/tests/app/template/test_rest.py index cb92e0b66..5726231bd 100644 --- a/tests/app/template/test_rest.py +++ b/tests/app/template/test_rest.py @@ -778,6 +778,41 @@ def test_create_a_template_with_foreign_service_reply_to(admin_request, sample_u ) +@pytest.mark.parametrize('post_data, expected_errors', [ + ( + {}, + [ + {"error": "ValidationError", "message": "subject is a required property"}, + {"error": "ValidationError", "message": "name is a required property"}, + {"error": "ValidationError", "message": "template_type is a required property"}, + {"error": "ValidationError", "message": "content is a required property"}, + {"error": "ValidationError", "message": "service is a required property"}, + {"error": "ValidationError", "message": "created_by is a required property"}, + ] + ), + ( + {"name": "my template", "template_type": "sms", "content": "hi", "postage": "third", + "service": "1af43c02-b5a8-4923-ad7f-5279b75ff2d0", "created_by": "30587644-9083-44d8-a114-98887f07f1e3"}, + [ + {"error": "ValidationError", "message": "postage invalid. It must be either first or second."}, + ] + ), +]) +def test_create_template_validates_against_json_schema( + admin_request, + sample_service_full_permissions, + post_data, + expected_errors, +): + response = admin_request.post( + 'template.create_template', + service_id=sample_service_full_permissions.id, + _data=post_data, + _expected_status=400 + ) + assert response['errors'] == expected_errors + + @pytest.mark.parametrize('template_default, service_default', [('template address', 'service address'), (None, 'service address'),