diff --git a/requirements.txt b/requirements.txt index 73cf5b94b..98b9ef1da 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,6 +29,6 @@ notifications-python-client>=3.1,<3.2 awscli>=1.11,<1.12 awscli-cwlogs>=1.4,<1.5 -git+https://github.com/alphagov/notifications-utils.git@13.9.6#egg=notifications-utils==13.9.6 +git+https://github.com/alphagov/notifications-utils.git@15.0.0#egg=notifications-utils==15.0.0 git+https://github.com/alphagov/boto.git@2.43.0-patch3#egg=boto==2.43.0-patch3 diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index 671d52189..7a410bc60 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -1018,4 +1018,4 @@ def test_dvla_letter_template(sample_letter_notification): letter = LetterDVLATemplate(t, sample_letter_notification.personalisation, 12345) - assert str(letter) == "140|500|001||201703230012345|23032017||||||||||||A1|A2|A3|A4|A5|A6||A_POST||||||||Template subject|Dear Sir/Madam, Hello. Yours Truly, The Government." # noqa + assert str(letter) == "140|500|001||201703230012345|||||||||||||A1|A2|A3|A4|A5|A6||A_POST|||||||||23 March 2017

Template subjectDear Sir/Madam, Hello. Yours Truly, The Government." # noqa diff --git a/tests/app/notifications/rest/test_send_notification.py b/tests/app/notifications/rest/test_send_notification.py index 90e2c64e7..d6a4e9c31 100644 --- a/tests/app/notifications/rest/test_send_notification.py +++ b/tests/app/notifications/rest/test_send_notification.py @@ -133,6 +133,65 @@ def test_send_notification_with_placeholders_replaced(notify_api, sample_email_t assert response_data['subject'] == 'Jo' +@pytest.mark.parametrize('personalisation, expected_body, expected_subject', [ + ( + ['Jo', 'John', 'Josephine'], + ( + 'Hello \n\n' + '* Jo\n' + '* John\n' + '* Josephine\n' + 'This is an email from GOV.\u200BUK' + ), + 'Jo, John and Josephine', + ), + ( + 6, + ( + 'Hello 6\n' + 'This is an email from GOV.\u200BUK' + ), + '6', + ), + pytest.mark.xfail(( + None, + ('we consider None equivalent to missing personalisation'), + '', + )), +]) +def test_send_notification_with_placeholders_replaced_with_unusual_types( + client, + sample_email_template_with_placeholders, + mocker, + personalisation, + expected_body, + expected_subject, +): + mocked = mocker.patch('app.celery.provider_tasks.deliver_email.apply_async') + + response = client.post( + path='/notifications/email', + data=json.dumps( + { + 'to': 'ok@ok.com', + 'template': str(sample_email_template_with_placeholders.id), + 'personalisation': { + 'name': personalisation + } + } + ), + headers=[ + ('Content-Type', 'application/json'), + create_authorization_header(service_id=sample_email_template_with_placeholders.service.id) + ] + ) + + assert response.status_code == 201 + response_data = json.loads(response.data)['data'] + assert response_data['body'] == expected_body + assert response_data['subject'] == expected_subject + + def test_should_not_send_notification_for_archived_template(notify_api, sample_template): with notify_api.test_request_context(): with notify_api.test_client() as client: