From ff860ec24231b83a4215a1f722dee8848dafc152 Mon Sep 17 00:00:00 2001 From: Ken Tsang Date: Fri, 25 Aug 2017 16:12:26 +0100 Subject: [PATCH] 403 when creating a letter job in trial mode --- app/job/rest.py | 5 ++++- tests/app/job/test_rest.py | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/job/rest.py b/app/job/rest.py index 6a8a86ee4..8b2165760 100644 --- a/app/job/rest.py +++ b/app/job/rest.py @@ -32,7 +32,7 @@ from app.schemas import ( from app.celery.tasks import process_job -from app.models import JOB_STATUS_SCHEDULED, JOB_STATUS_PENDING, JOB_STATUS_CANCELLED +from app.models import JOB_STATUS_SCHEDULED, JOB_STATUS_PENDING, JOB_STATUS_CANCELLED, LETTER_TYPE from app.utils import pagination_links @@ -190,6 +190,9 @@ def create_job(service_id): }) template = dao_get_template_by_id(data['template']) + if template.template_type == LETTER_TYPE and service.restricted: + raise InvalidRequest("Create letter job is not allowed for service in trial mode ", 403) + errors = unarchived_template_schema.validate({'archived': template.archived}) if errors: diff --git a/tests/app/job/test_rest.py b/tests/app/job/test_rest.py index 7ce45b51e..920bc3397 100644 --- a/tests/app/job/test_rest.py +++ b/tests/app/job/test_rest.py @@ -186,6 +186,29 @@ def test_create_job_returns_403_if_service_is_not_active(client, fake_uuid, samp mock_job_dao.assert_not_called() +def test_create_job_returns_403_if_letter_template_type_and_service_in_trial( + client, fake_uuid, sample_service, sample_trial_letter_template, mocker): + data = { + 'id': fake_uuid, + 'service': str(sample_trial_letter_template.service.id), + 'template': str(sample_trial_letter_template.id), + 'original_file_name': 'thisisatest.csv', + 'notification_count': 1, + 'created_by': str(sample_trial_letter_template.created_by.id) + } + mock_job_dao = mocker.patch("app.dao.jobs_dao.dao_create_job") + auth_header = create_authorization_header() + response = client.post('/service/{}/job'.format(sample_service.id), + data=json.dumps(data), + headers=[('Content-Type', 'application/json'), auth_header]) + + assert response.status_code == 403 + resp_json = json.loads(response.get_data(as_text=True)) + assert resp_json['result'] == 'error' + assert resp_json['message'] == "Create letter job is not allowed for service in trial mode " + mock_job_dao.assert_not_called() + + def test_should_not_create_scheduled_job_more_then_24_hours_hence(notify_api, sample_template, mocker, fake_uuid): with notify_api.test_request_context(): with notify_api.test_client() as client: