From e9fb60f05c6d3e6d933ad88cdbb6b532f2e11ae9 Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Thu, 13 Dec 2018 12:01:50 +0000 Subject: [PATCH] Send extra headers to Template Preview /precompiled/sanitise endpoint We want to send two new headers, ServiceId and NotificationId to the template preview /precompiled/sanitise endpoint. This is to allow us to log errors from this endpoint in template preview with all the information needed, instead of needing to pass the information back to notifications-api and to log it there. --- app/celery/letters_pdf_tasks.py | 4 +++- tests/app/celery/test_letters_pdf_tasks.py | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/celery/letters_pdf_tasks.py b/app/celery/letters_pdf_tasks.py index a40f2bd91..485f258bf 100644 --- a/app/celery/letters_pdf_tasks.py +++ b/app/celery/letters_pdf_tasks.py @@ -261,7 +261,9 @@ def _sanitise_precompiled_pdf(self, notification, precompiled_pdf): current_app.config['TEMPLATE_PREVIEW_API_HOST'] ), data=precompiled_pdf, - headers={'Authorization': 'Token {}'.format(current_app.config['TEMPLATE_PREVIEW_API_KEY'])} + headers={'Authorization': 'Token {}'.format(current_app.config['TEMPLATE_PREVIEW_API_KEY']), + 'Service-ID': str(notification.service_id), + 'Notification-ID': str(notification.id)} ) resp.raise_for_status() return resp.content diff --git a/tests/app/celery/test_letters_pdf_tasks.py b/tests/app/celery/test_letters_pdf_tasks.py index 4af7edca2..13815ce05 100644 --- a/tests/app/celery/test_letters_pdf_tasks.py +++ b/tests/app/celery/test_letters_pdf_tasks.py @@ -508,6 +508,27 @@ def test_sanitise_precompiled_pdf_returns_none_on_validation_error(rmock, sample assert res is None +def test_sanitise_precompiled_pdf_passes_the_service_id_and_notification_id_to_template_preview( + mocker, + sample_letter_notification, +): + tp_mock = mocker.patch('app.celery.letters_pdf_tasks.requests_post') + sample_letter_notification.status = NOTIFICATION_PENDING_VIRUS_CHECK + mock_celery = Mock(**{'retry.side_effect': Retry}) + _sanitise_precompiled_pdf(mock_celery, sample_letter_notification, b'old_pdf') + + service_id = str(sample_letter_notification.service_id) + notification_id = str(sample_letter_notification.id) + + tp_mock.assert_called_once_with( + 'http://localhost:9999/precompiled/sanitise', + data=b'old_pdf', + headers={'Authorization': 'Token my-secret-key', + 'Service-ID': service_id, + 'Notification-ID': notification_id} + ) + + def test_sanitise_precompiled_pdf_retries_on_http_error(rmock, sample_letter_notification): sample_letter_notification.status = NOTIFICATION_PENDING_VIRUS_CHECK rmock.post('http://localhost:9999/precompiled/sanitise', content=b'new_pdf', status_code=500)