diff --git a/app/celery/broadcast_message_tasks.py b/app/celery/broadcast_message_tasks.py index a319027ec..bfde17f42 100644 --- a/app/celery/broadcast_message_tasks.py +++ b/app/celery/broadcast_message_tasks.py @@ -106,10 +106,6 @@ def check_provider_message_should_send(broadcast_event, provider): @notify_celery.task(name="send-broadcast-event") @statsd(namespace="tasks") def send_broadcast_event(broadcast_event_id): - if not current_app.config['CBC_PROXY_ENABLED']: - current_app.logger.info(f'CBC Proxy disabled, not sending broadcast_event {broadcast_event_id}') - return - broadcast_event = dao_get_broadcast_event_by_id(broadcast_event_id) if ( @@ -149,6 +145,13 @@ def send_broadcast_event(broadcast_event_id): @notify_celery.task(bind=True, name="send-broadcast-provider-message", max_retries=None) @statsd(namespace="tasks") def send_broadcast_provider_message(self, broadcast_event_id, provider): + if not current_app.config['CBC_PROXY_ENABLED']: + current_app.logger.info( + "CBC Proxy disabled, not sending broadcast_provider_message for " + f"broadcast_event_id {broadcast_event_id} with provider {provider}" + ) + return + broadcast_event = dao_get_broadcast_event_by_id(broadcast_event_id) check_provider_message_should_send(broadcast_event, provider) diff --git a/app/config.py b/app/config.py index 81bb897e5..82269e82d 100644 --- a/app/config.py +++ b/app/config.py @@ -365,13 +365,10 @@ class Config(object): AWS_REGION = 'eu-west-1' - # CBC Proxy - # if the access keys are empty then noop client is used + CBC_PROXY_ENABLED = True CBC_PROXY_AWS_ACCESS_KEY_ID = os.environ.get('CBC_PROXY_AWS_ACCESS_KEY_ID', '') CBC_PROXY_AWS_SECRET_ACCESS_KEY = os.environ.get('CBC_PROXY_AWS_SECRET_ACCESS_KEY', '') - CBC_PROXY_ENABLED = bool(CBC_PROXY_AWS_ACCESS_KEY_ID) - ENABLED_CBCS = {BroadcastProvider.EE, BroadcastProvider.THREE, BroadcastProvider.O2, BroadcastProvider.VODAFONE} # as defined in api db migration 0331_add_broadcast_org.py @@ -422,6 +419,8 @@ class Development(Config): API_RATE_LIMIT_ENABLED = True DVLA_EMAIL_ADDRESSES = ['success@simulator.amazonses.com'] + CBC_PROXY_ENABLED = False + class Test(Development): NOTIFY_EMAIL_DOMAIN = 'test.notify.com' diff --git a/manifest.yml.j2 b/manifest.yml.j2 index 3aba456fe..59401d31f 100644 --- a/manifest.yml.j2 +++ b/manifest.yml.j2 @@ -65,7 +65,11 @@ 'notify-delivery-worker-retry-tasks': {}, 'notify-delivery-worker-internal': {}, 'notify-delivery-worker-broadcasts': { + 'additional_env_vars': { 'CELERYD_PREFETCH_MULTIPLIER': 1, + 'CBC_PROXY_AWS_ACCESS_KEY_ID': CBC_PROXY_AWS_ACCESS_KEY_ID, + 'CBC_PROXY_AWS_SECRET_ACCESS_KEY': CBC_PROXY_AWS_SECRET_ACCESS_KEY, + } }, 'notify-delivery-worker-receipts': {}, 'notify-delivery-worker-service-callbacks': {'disk_quota': '2G'}, @@ -125,11 +129,6 @@ applications: AWS_ACCESS_KEY_ID: '{{ AWS_ACCESS_KEY_ID }}' AWS_SECRET_ACCESS_KEY: '{{ AWS_SECRET_ACCESS_KEY }}' - {% if CBC_PROXY_AWS_ACCESS_KEY_ID is defined %} - CBC_PROXY_AWS_ACCESS_KEY_ID: '{{ CBC_PROXY_AWS_ACCESS_KEY_ID }}' - CBC_PROXY_AWS_SECRET_ACCESS_KEY: '{{ CBC_PROXY_AWS_SECRET_ACCESS_KEY }}' - {% endif %} - STATSD_HOST: "notify-statsd-exporter-{{ environment }}.apps.internal" ZENDESK_API_KEY: '{{ ZENDESK_API_KEY }}' diff --git a/tests/app/celery/test_broadcast_message_tasks.py b/tests/app/celery/test_broadcast_message_tasks.py index 9cbf2e6ac..61d5aae03 100644 --- a/tests/app/celery/test_broadcast_message_tasks.py +++ b/tests/app/celery/test_broadcast_message_tasks.py @@ -1,6 +1,6 @@ import uuid from datetime import datetime -from unittest.mock import ANY, call +from unittest.mock import ANY, Mock, call import pytest from celery.exceptions import Retry @@ -98,18 +98,6 @@ def test_send_broadcast_event_does_nothing_if_provider_set_on_service_isnt_enabl assert mock_send_broadcast_provider_message.apply_async.called is False -def test_send_broadcast_event_does_nothing_if_cbc_proxy_disabled(mocker, notify_api): - mock_send_broadcast_provider_message = mocker.patch( - 'app.celery.broadcast_message_tasks.send_broadcast_provider_message', - ) - - event_id = uuid.uuid4() - with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']), set_config(notify_api, 'CBC_PROXY_ENABLED', False): - send_broadcast_event(event_id) - - assert mock_send_broadcast_provider_message.apply_async.called is False - - def test_send_broadcast_event_creates_zendesk_p1(mocker, notify_api, sample_broadcast_service): template = create_template(sample_broadcast_service, BROADCAST_TYPE) broadcast_message = create_broadcast_message( @@ -747,3 +735,18 @@ def test_check_provider_message_should_send_raises_if_current_event_already_has_ create_broadcast_provider_message(current_event, provider='ee', status=existing_message_status) check_provider_message_should_send(current_event, 'ee') + + +def test_send_broadcast_provider_message_does_nothing_if_cbc_proxy_disabled(mocker, notify_api, sample_template): + mock_proxy_client_getter = mocker.patch( + 'app.celery.broadcast_message_tasks.cbc_proxy_client', + ) + mock_client = Mock() + mock_proxy_client_getter.get_proxy.return_value = mock_client + + broadcast_message = create_broadcast_message(sample_template) + broadcast_event = create_broadcast_event(broadcast_message, message_type='alert') + with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']), set_config(notify_api, 'CBC_PROXY_ENABLED', False): + send_broadcast_provider_message(broadcast_event.id, 'ee') + + assert mock_client.create_and_send_broadcast.called is False