From dc44cb29d135368e07803792bb559ece09f072ac Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Fri, 27 Mar 2020 08:02:51 +0000 Subject: [PATCH 1/2] To make the deployment and testing a little easier move the high volume service ids to the credential repo. This way we can only add the ids when we are ready and all the infrastrure for the new service has been applied. --- app/config.py | 7 ++++--- app/v2/notifications/post_notifications.py | 2 +- .../v2/notifications/test_post_notifications.py | 16 +++++++++------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/config.py b/app/config.py index 473c92222..dacda4ff7 100644 --- a/app/config.py +++ b/app/config.py @@ -163,8 +163,6 @@ class Config(object): MOU_SIGNED_ON_BEHALF_ON_BEHALF_RECEIPT_TEMPLATE_ID = '522b6657-5ca5-4368-a294-6b527703bd0b' MOU_NOTIFY_TEAM_ALERT_TEMPLATE_ID = 'd0e66c4c-0c50-43f0-94f5-f85b613202d4' - HIGH_VOLUME_SERVICE = '539d63a1-701d-400d-ab11-f3ee2319d4d4' - BROKER_URL = 'sqs://' BROKER_TRANSPORT_OPTIONS = { 'region': AWS_REGION, @@ -334,10 +332,11 @@ class Config(object): FIRETEXT_INBOUND_SMS_AUTH = json.loads(os.environ.get('FIRETEXT_INBOUND_SMS_AUTH', '[]')) MMG_INBOUND_SMS_AUTH = json.loads(os.environ.get('MMG_INBOUND_SMS_AUTH', '[]')) MMG_INBOUND_SMS_USERNAME = json.loads(os.environ.get('MMG_INBOUND_SMS_USERNAME', '[]')) - ROUTE_SECRET_KEY_1 = os.environ.get('ROUTE_SECRET_KEY_1', '') ROUTE_SECRET_KEY_2 = os.environ.get('ROUTE_SECRET_KEY_2', '') + HIGH_VOLUME_SERVICE = json.loads(os.environ.get('HIGH_VOLUME_SERVICE', '[]')) + # Format is as follows: # {"dataset_1": "token_1", ...} PERFORMANCE_PLATFORM_ENDPOINTS = json.loads(os.environ.get('PERFORMANCE_PLATFORM_ENDPOINTS', '{}')) @@ -404,6 +403,8 @@ class Test(Development): NOTIFY_ENVIRONMENT = 'test' TESTING = True + HIGH_VOLUME_SERVICE = ['941b6f9a-50d7-4742-8d50-f365ca74bf27'] + CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload' TEST_LETTERS_BUCKET_NAME = 'test-test-letters' DVLA_RESPONSE_BUCKET_NAME = 'test.notify.com-ftp' diff --git a/app/v2/notifications/post_notifications.py b/app/v2/notifications/post_notifications.py index d58786f36..d43ccfcf7 100644 --- a/app/v2/notifications/post_notifications.py +++ b/app/v2/notifications/post_notifications.py @@ -203,7 +203,7 @@ def process_sms_or_email_notification(*, form, notification_type, api_key, templ simulated=simulated ) - if str(service.id) == current_app.config.get('HIGH_VOLUME_SERVICE') and api_key.key_type == KEY_TYPE_NORMAL \ + if str(service.id) in current_app.config.get('HIGH_VOLUME_SERVICE') and api_key.key_type == KEY_TYPE_NORMAL \ and notification_type == EMAIL_TYPE: # Put GOV.UK Email notifications onto a queue # To take the pressure off the db for API requests put the notification for our high volume service onto a queue diff --git a/tests/app/v2/notifications/test_post_notifications.py b/tests/app/v2/notifications/test_post_notifications.py index 0b2431892..960bc4906 100644 --- a/tests/app/v2/notifications/test_post_notifications.py +++ b/tests/app/v2/notifications/test_post_notifications.py @@ -955,8 +955,9 @@ def test_post_email_notification_when_data_is_empty_returns_400(client, sample_s def test_post_notifications_saves_email_to_queue(client, notify_db_session, mocker): save_email_task = mocker.patch("app.celery.tasks.save_api_email.apply_async") + mock_send_task = mocker.patch('app.celery.provider_tasks.deliver_email.apply_async') - service = create_service(service_id='539d63a1-701d-400d-ab11-f3ee2319d4d4', service_name='high volume service') + service = create_service(service_id='941b6f9a-50d7-4742-8d50-f365ca74bf27', service_name='high volume service') template = create_template(service=service, content='((message))', template_type=EMAIL_TYPE) data = { "email_address": "joe.citizen@example.com", @@ -976,14 +977,15 @@ def test_post_notifications_saves_email_to_queue(client, notify_db_session, mock assert json_resp['content']['body'] == "Dear citizen, have a nice day" assert json_resp['template']['id'] == str(template.id) save_email_task.assert_called_once_with([mock.ANY], queue='save-api-email-tasks') + assert not mock_send_task.called assert len(Notification.query.all()) == 0 def test_post_notifications_doesnt_save_email_to_queue_for_test_emails(client, notify_db_session, mocker): save_email_task = mocker.patch("app.celery.tasks.save_api_email.apply_async") - mocked_send_task = mocker.patch('app.celery.provider_tasks.deliver_email.apply_async') + mock_send_task = mocker.patch('app.celery.provider_tasks.deliver_email.apply_async') - service = create_service(service_id='539d63a1-701d-400d-ab11-f3ee2319d4d4', service_name='high volume service') + service = create_service(service_id='941b6f9a-50d7-4742-8d50-f365ca74bf27', service_name='high volume service') # create_api_key(service=service, key_type='test') template = create_template(service=service, content='((message))', template_type=EMAIL_TYPE) data = { @@ -1004,16 +1006,16 @@ def test_post_notifications_doesnt_save_email_to_queue_for_test_emails(client, n assert json_resp['id'] assert json_resp['content']['body'] == "Dear citizen, have a nice day" assert json_resp['template']['id'] == str(template.id) - assert mocked_send_task.called + assert mock_send_task.called assert not save_email_task.called assert len(Notification.query.all()) == 1 def test_post_notifications_doesnt_save_email_to_queue_for_sms(client, notify_db_session, mocker): save_email_task = mocker.patch("app.celery.tasks.save_api_email.apply_async") - mocked_send_task = mocker.patch('app.celery.provider_tasks.deliver_sms.apply_async') + mock_send_task = mocker.patch('app.celery.provider_tasks.deliver_sms.apply_async') - service = create_service(service_id='539d63a1-701d-400d-ab11-f3ee2319d4d4', service_name='high volume service') + service = create_service(service_id='941b6f9a-50d7-4742-8d50-f365ca74bf27', service_name='high volume service') template = create_template(service=service, content='((message))', template_type=SMS_TYPE) data = { "phone_number": '+447700900855', @@ -1030,7 +1032,7 @@ def test_post_notifications_doesnt_save_email_to_queue_for_sms(client, notify_db assert response.status_code == 201 assert json_resp['id'] - assert mocked_send_task.called + assert mock_send_task.called assert not save_email_task.called assert len(Notification.query.all()) == 1 From 1d7c3466b0ecea2969a3e186706531339792b90a Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Fri, 27 Mar 2020 10:08:30 +0000 Subject: [PATCH 2/2] Add cred to manifest --- manifest.yml.j2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/manifest.yml.j2 b/manifest.yml.j2 index cc72ffc24..8424f56d8 100644 --- a/manifest.yml.j2 +++ b/manifest.yml.j2 @@ -81,6 +81,9 @@ applications: ROUTE_SECRET_KEY_2: '{{ ROUTE_SECRET_KEY_2 }}' CRONITOR_KEYS: '{{ CRONITOR_KEYS | tojson }}' + HIGH_VOLUME_SERVICE: '{{ HIGH_VOLUME_SERVICE | tojson }}' + + PERFORMANCE_PLATFORM_ENDPOINTS: '{{ PERFORMANCE_PLATFORM_ENDPOINTS | tojson }}' DOCUMENT_DOWNLOAD_API_HOST: '{{ DOCUMENT_DOWNLOAD_API_HOST }}'