diff --git a/app/dao/broadcast_service_dao.py b/app/dao/broadcast_service_dao.py index 6eb143feb..9971bf316 100644 --- a/app/dao/broadcast_service_dao.py +++ b/app/dao/broadcast_service_dao.py @@ -64,7 +64,7 @@ def set_broadcast_service_type(service, service_mode, broadcast_channel, provide db.session.add(service) -def insert_or_update_service_broadcast_settings(service, channel, provider_restriction=None): +def insert_or_update_service_broadcast_settings(service, channel, provider_restriction="all"): if not service.service_broadcast_settings: settings = ServiceBroadcastSettings() settings.service = service diff --git a/app/models.py b/app/models.py index 378a451ab..9deb78f93 100644 --- a/app/models.py +++ b/app/models.py @@ -560,7 +560,8 @@ class Service(db.Model, Versioned): def get_available_broadcast_providers(self): # There may be future checks here if we add, for example, platform admin level provider killswitches. - if self.allowed_broadcast_provider: + # NOTE: We are in the middle of changing the value for all allowed_broadcast_provider from `None`to "all" + if self.allowed_broadcast_provider and self.allowed_broadcast_provider != ALL_BROADCAST_PROVIDERS: return [x for x in current_app.config['ENABLED_CBCS'] if x == self.allowed_broadcast_provider] else: return current_app.config['ENABLED_CBCS'] @@ -2488,6 +2489,9 @@ class BroadcastProvider: PROVIDERS = [EE, VODAFONE, THREE, O2] +ALL_BROADCAST_PROVIDERS = 'all' + + class BroadcastProviderMessageStatus: TECHNICAL_FAILURE = 'technical-failure' # Couldn’t send (cbc proxy 5xx/4xx) SENDING = 'sending' # Sent to cbc, awaiting response diff --git a/app/service/service_broadcast_settings_schema.py b/app/service/service_broadcast_settings_schema.py index bc18af07d..ad702428c 100644 --- a/app/service/service_broadcast_settings_schema.py +++ b/app/service/service_broadcast_settings_schema.py @@ -6,7 +6,7 @@ service_broadcast_settings_schema = { "properties": { "broadcast_channel": {"enum": ["test", "severe"]}, "service_mode": {"enum": ["training", "live"]}, - "provider_restriction": {"enum": [None, "three", "o2", "vodafone", "ee"]} + "provider_restriction": {"enum": [None, "three", "o2", "vodafone", "ee", "all"]} }, "required": ["broadcast_channel", "service_mode", "provider_restriction"] } diff --git a/tests/app/celery/test_broadcast_message_tasks.py b/tests/app/celery/test_broadcast_message_tasks.py index 8d65108b6..774df9cb9 100644 --- a/tests/app/celery/test_broadcast_message_tasks.py +++ b/tests/app/celery/test_broadcast_message_tasks.py @@ -30,7 +30,14 @@ from tests.app.db import ( from tests.conftest import set_config -def test_send_broadcast_event_queues_up_for_active_providers(mocker, notify_api, sample_broadcast_service): +@pytest.mark.parametrize('available_provider', [None, 'all']) +def test_send_broadcast_event_queues_up_for_active_providers( + mocker, + notify_api, + sample_broadcast_service, + available_provider, +): + sample_broadcast_service.allowed_broadcast_provider = available_provider template = create_template(sample_broadcast_service, BROADCAST_TYPE) broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING) event = create_broadcast_event(broadcast_message) diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 7484d6203..a4cc55007 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -290,6 +290,8 @@ def test_get_service_by_id(admin_request, sample_service): @pytest.mark.parametrize('broadcast_channel,allowed_broadcast_provider', ( + ('test', 'all'), + ('severe', 'all'), ('test', None), ('severe', None), ('test', 'ee'), @@ -4018,7 +4020,7 @@ def test_set_as_broadcast_service_rejects_if_no_service_mode( ) -@pytest.mark.parametrize('provider', [None, "three", "ee", "vodafone", "o2"]) +@pytest.mark.parametrize('provider', [None, "all", "three", "ee", "vodafone", "o2"]) def test_set_as_broadcast_service_sets_mobile_provider_restriction( admin_request, sample_service, broadcast_organisation, provider ):