2020-11-16 12:47:38 +00:00
|
|
|
import uuid
|
2020-11-16 18:48:00 +00:00
|
|
|
from unittest.mock import call, ANY
|
2020-11-16 12:47:38 +00:00
|
|
|
|
2020-08-04 19:21:22 +01:00
|
|
|
from freezegun import freeze_time
|
2020-07-09 18:22:29 +01:00
|
|
|
import pytest
|
|
|
|
|
|
2020-12-02 14:10:46 +00:00
|
|
|
from app.models import (
|
|
|
|
|
BROADCAST_TYPE,
|
|
|
|
|
BroadcastStatusType,
|
|
|
|
|
BroadcastEventMessageType,
|
|
|
|
|
BroadcastProviderMessageStatus,
|
|
|
|
|
ServiceBroadcastProviderRestriction
|
|
|
|
|
)
|
2020-11-16 12:47:38 +00:00
|
|
|
from app.celery.broadcast_message_tasks import send_broadcast_event, send_broadcast_provider_message, trigger_link_test
|
|
|
|
|
|
2020-11-17 12:35:10 +00:00
|
|
|
from tests.app.db import (
|
|
|
|
|
create_template,
|
|
|
|
|
create_broadcast_message,
|
|
|
|
|
create_broadcast_event,
|
|
|
|
|
create_broadcast_provider_message
|
|
|
|
|
)
|
2020-11-16 12:47:38 +00:00
|
|
|
from tests.conftest import set_config
|
|
|
|
|
|
|
|
|
|
|
2020-12-02 14:10:46 +00:00
|
|
|
def test_send_broadcast_event_queues_up_for_active_providers(mocker, notify_api, sample_service):
|
|
|
|
|
template = create_template(sample_service, BROADCAST_TYPE)
|
|
|
|
|
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
|
|
|
|
event = create_broadcast_event(broadcast_message)
|
|
|
|
|
|
2020-11-16 12:47:38 +00:00
|
|
|
mock_send_broadcast_provider_message = mocker.patch(
|
|
|
|
|
'app.celery.broadcast_message_tasks.send_broadcast_provider_message',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']):
|
2020-12-02 14:10:46 +00:00
|
|
|
send_broadcast_event(event.id)
|
2020-11-16 12:47:38 +00:00
|
|
|
|
|
|
|
|
assert mock_send_broadcast_provider_message.apply_async.call_args_list == [
|
2021-01-13 17:21:40 +00:00
|
|
|
call(kwargs={'broadcast_event_id': event.id, 'provider': 'ee'}, queue='broadcast-tasks'),
|
|
|
|
|
call(kwargs={'broadcast_event_id': event.id, 'provider': 'vodafone'}, queue='broadcast-tasks')
|
2020-11-16 12:47:38 +00:00
|
|
|
]
|
2020-07-09 18:22:29 +01:00
|
|
|
|
|
|
|
|
|
2020-12-02 14:10:46 +00:00
|
|
|
def test_send_broadcast_event_only_sends_to_one_provider_if_set_on_service(
|
|
|
|
|
mocker,
|
|
|
|
|
notify_db,
|
|
|
|
|
notify_api,
|
|
|
|
|
sample_service
|
|
|
|
|
):
|
|
|
|
|
notify_db.session.add(ServiceBroadcastProviderRestriction(
|
|
|
|
|
service=sample_service,
|
|
|
|
|
provider='vodafone'
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
template = create_template(sample_service, BROADCAST_TYPE)
|
|
|
|
|
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
|
|
|
|
event = create_broadcast_event(broadcast_message)
|
|
|
|
|
|
|
|
|
|
mock_send_broadcast_provider_message = mocker.patch(
|
|
|
|
|
'app.celery.broadcast_message_tasks.send_broadcast_provider_message',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']):
|
|
|
|
|
send_broadcast_event(event.id)
|
|
|
|
|
|
|
|
|
|
assert mock_send_broadcast_provider_message.apply_async.call_args_list == [
|
2021-01-13 17:21:40 +00:00
|
|
|
call(kwargs={'broadcast_event_id': event.id, 'provider': 'vodafone'}, queue='broadcast-tasks')
|
2020-12-02 14:10:46 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_send_broadcast_event_does_nothing_if_provider_set_on_service_isnt_enabled_globally(
|
|
|
|
|
mocker,
|
|
|
|
|
notify_db,
|
|
|
|
|
notify_api,
|
|
|
|
|
sample_service
|
|
|
|
|
):
|
|
|
|
|
notify_db.session.add(ServiceBroadcastProviderRestriction(
|
|
|
|
|
service=sample_service,
|
|
|
|
|
provider='three'
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
template = create_template(sample_service, BROADCAST_TYPE)
|
|
|
|
|
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
|
|
|
|
|
event = create_broadcast_event(broadcast_message)
|
|
|
|
|
|
|
|
|
|
mock_send_broadcast_provider_message = mocker.patch(
|
|
|
|
|
'app.celery.broadcast_message_tasks.send_broadcast_provider_message',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']):
|
|
|
|
|
send_broadcast_event(event.id)
|
|
|
|
|
|
|
|
|
|
assert mock_send_broadcast_provider_message.apply_async.called is False
|
|
|
|
|
|
|
|
|
|
|
2020-11-25 17:39:32 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
2020-08-04 19:21:22 +01:00
|
|
|
@freeze_time('2020-08-01 12:00')
|
2020-12-09 11:13:50 +00:00
|
|
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
|
|
|
|
['ee', 'EE'],
|
2021-01-29 12:18:54 +00:00
|
|
|
['three', 'Three'],
|
|
|
|
|
['o2', 'O2'],
|
2020-12-09 11:13:50 +00:00
|
|
|
['vodafone', 'Vodafone'],
|
2020-12-08 11:12:48 +00:00
|
|
|
])
|
|
|
|
|
def test_send_broadcast_provider_message_sends_data_correctly(
|
2020-12-09 11:13:50 +00:00
|
|
|
mocker, sample_service, provider, provider_capitalised
|
2020-12-08 11:12:48 +00:00
|
|
|
):
|
2020-08-04 19:21:22 +01:00
|
|
|
template = create_template(sample_service, BROADCAST_TYPE)
|
2020-09-14 15:21:55 +01:00
|
|
|
broadcast_message = create_broadcast_message(
|
|
|
|
|
template,
|
2020-10-26 15:14:26 +00:00
|
|
|
areas={
|
|
|
|
|
'areas': ['london', 'glasgow'],
|
|
|
|
|
'simple_polygons': [
|
|
|
|
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
|
|
|
|
[[-4.53, 55.72], [-3.88, 55.72], [-3.88, 55.96], [-4.53, 55.96]],
|
|
|
|
|
],
|
|
|
|
|
},
|
2020-09-14 15:21:55 +01:00
|
|
|
status=BroadcastStatusType.BROADCASTING
|
|
|
|
|
)
|
2020-08-04 19:21:22 +01:00
|
|
|
event = create_broadcast_event(broadcast_message)
|
|
|
|
|
|
2020-10-20 11:57:26 +01:00
|
|
|
mock_create_broadcast = mocker.patch(
|
2020-12-08 11:12:48 +00:00
|
|
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.create_and_send_broadcast',
|
2020-10-20 11:57:26 +01:00
|
|
|
)
|
|
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
assert event.get_provider_message(provider) is None
|
2020-11-16 18:48:00 +00:00
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(event.id))
|
2020-08-04 19:21:22 +01:00
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
broadcast_provider_message = event.get_provider_message(provider)
|
2020-11-16 18:48:00 +00:00
|
|
|
assert broadcast_provider_message.status == BroadcastProviderMessageStatus.SENDING
|
|
|
|
|
|
2020-10-20 11:57:26 +01:00
|
|
|
mock_create_broadcast.assert_called_once_with(
|
2020-11-16 18:48:00 +00:00
|
|
|
identifier=str(broadcast_provider_message.id),
|
2020-12-04 17:07:08 +00:00
|
|
|
message_number=mocker.ANY,
|
2020-10-26 15:14:26 +00:00
|
|
|
headline='GOV.UK Notify Broadcast',
|
2020-10-20 11:57:26 +01:00
|
|
|
description='this is an emergency broadcast message',
|
2020-10-23 16:44:11 +01:00
|
|
|
areas=[{
|
2020-10-26 15:14:26 +00:00
|
|
|
'polygon': [
|
|
|
|
|
[50.12, 1.2], [50.13, 1.2], [50.14, 1.21],
|
|
|
|
|
],
|
|
|
|
|
}, {
|
|
|
|
|
'polygon': [
|
|
|
|
|
[-4.53, 55.72], [-3.88, 55.72], [-3.88, 55.96], [-4.53, 55.96],
|
|
|
|
|
],
|
2020-10-23 17:54:33 +01:00
|
|
|
}],
|
2020-10-28 11:26:38 +00:00
|
|
|
sent=event.sent_at_as_cap_datetime_string,
|
|
|
|
|
expires=event.transmitted_finishes_at_as_cap_datetime_string,
|
2021-01-29 11:54:12 +00:00
|
|
|
channel="test",
|
2020-10-23 17:54:33 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2021-01-08 16:38:51 +00:00
|
|
|
@freeze_time('2020-08-01 12:00')
|
2021-01-29 12:18:54 +00:00
|
|
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
|
|
|
|
['ee', 'EE'],
|
|
|
|
|
['three', 'Three'],
|
|
|
|
|
['o2', 'O2'],
|
|
|
|
|
['vodafone', 'Vodafone'],
|
|
|
|
|
])
|
2021-01-08 16:38:51 +00:00
|
|
|
def test_send_broadcast_provider_message_sends_data_correctly_when_broadcast_message_has_no_template(
|
2021-01-29 12:18:54 +00:00
|
|
|
mocker, sample_service, provider, provider_capitalised
|
2021-01-08 16:38:51 +00:00
|
|
|
):
|
|
|
|
|
broadcast_message = create_broadcast_message(
|
|
|
|
|
service=sample_service,
|
|
|
|
|
template=None,
|
|
|
|
|
content='this is an emergency broadcast message',
|
|
|
|
|
areas={
|
|
|
|
|
'areas': ['london', 'glasgow'],
|
|
|
|
|
'simple_polygons': [
|
|
|
|
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
|
|
|
|
[[-4.53, 55.72], [-3.88, 55.72], [-3.88, 55.96], [-4.53, 55.96]],
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
status=BroadcastStatusType.BROADCASTING
|
|
|
|
|
)
|
|
|
|
|
event = create_broadcast_event(broadcast_message)
|
|
|
|
|
|
|
|
|
|
mock_create_broadcast = mocker.patch(
|
2021-01-29 12:18:54 +00:00
|
|
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.create_and_send_broadcast',
|
2021-01-08 16:38:51 +00:00
|
|
|
)
|
|
|
|
|
|
2021-01-29 12:18:54 +00:00
|
|
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(event.id))
|
2021-01-08 16:38:51 +00:00
|
|
|
|
2021-01-29 12:18:54 +00:00
|
|
|
broadcast_provider_message = event.get_provider_message(provider)
|
2021-01-08 16:38:51 +00:00
|
|
|
|
|
|
|
|
mock_create_broadcast.assert_called_once_with(
|
|
|
|
|
identifier=str(broadcast_provider_message.id),
|
|
|
|
|
message_number=mocker.ANY,
|
|
|
|
|
headline='GOV.UK Notify Broadcast',
|
|
|
|
|
description='this is an emergency broadcast message',
|
|
|
|
|
areas=mocker.ANY,
|
|
|
|
|
sent=mocker.ANY,
|
|
|
|
|
expires=mocker.ANY,
|
2021-01-29 11:54:12 +00:00
|
|
|
channel="test"
|
2021-01-08 16:38:51 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2020-12-09 11:13:50 +00:00
|
|
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
|
|
|
|
['ee', 'EE'],
|
2021-01-29 12:18:54 +00:00
|
|
|
['three', 'Three'],
|
|
|
|
|
['o2', 'O2'],
|
2020-12-09 11:13:50 +00:00
|
|
|
['vodafone', 'Vodafone'],
|
2020-12-08 11:12:48 +00:00
|
|
|
])
|
|
|
|
|
def test_send_broadcast_provider_message_sends_update_with_references(
|
2020-12-09 11:13:50 +00:00
|
|
|
mocker, sample_service, provider, provider_capitalised
|
2020-12-08 11:12:48 +00:00
|
|
|
):
|
2020-10-23 17:54:33 +01:00
|
|
|
template = create_template(sample_service, BROADCAST_TYPE, content='content')
|
2020-10-26 15:14:26 +00:00
|
|
|
|
|
|
|
|
broadcast_message = create_broadcast_message(
|
|
|
|
|
template,
|
|
|
|
|
areas={
|
|
|
|
|
'areas': ['london'],
|
|
|
|
|
'simple_polygons': [
|
|
|
|
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
status=BroadcastStatusType.BROADCASTING
|
|
|
|
|
)
|
|
|
|
|
|
2020-10-23 17:54:33 +01:00
|
|
|
alert_event = create_broadcast_event(broadcast_message, message_type=BroadcastEventMessageType.ALERT)
|
2020-12-08 11:12:48 +00:00
|
|
|
create_broadcast_provider_message(alert_event, provider)
|
2020-10-23 17:54:33 +01:00
|
|
|
update_event = create_broadcast_event(broadcast_message, message_type=BroadcastEventMessageType.UPDATE)
|
|
|
|
|
|
|
|
|
|
mock_update_broadcast = mocker.patch(
|
2020-12-08 11:12:48 +00:00
|
|
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.update_and_send_broadcast',
|
2020-10-20 11:57:26 +01:00
|
|
|
)
|
|
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(update_event.id))
|
2020-08-04 19:21:22 +01:00
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
broadcast_provider_message = update_event.get_provider_message(provider)
|
2020-11-17 12:35:10 +00:00
|
|
|
assert broadcast_provider_message.status == BroadcastProviderMessageStatus.SENDING
|
2020-11-16 18:48:00 +00:00
|
|
|
|
2020-10-23 17:54:33 +01:00
|
|
|
mock_update_broadcast.assert_called_once_with(
|
2020-11-16 18:48:00 +00:00
|
|
|
identifier=str(broadcast_provider_message.id),
|
2020-12-04 17:07:08 +00:00
|
|
|
message_number=mocker.ANY,
|
2020-10-23 17:54:33 +01:00
|
|
|
headline="GOV.UK Notify Broadcast",
|
|
|
|
|
description='this is an emergency broadcast message',
|
|
|
|
|
areas=[{
|
|
|
|
|
"polygon": [[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
|
|
|
|
}],
|
2020-11-17 12:35:10 +00:00
|
|
|
previous_provider_messages=[
|
2020-12-08 11:12:48 +00:00
|
|
|
alert_event.get_provider_message(provider)
|
2020-11-17 12:35:10 +00:00
|
|
|
],
|
2020-10-28 11:26:38 +00:00
|
|
|
sent=update_event.sent_at_as_cap_datetime_string,
|
|
|
|
|
expires=update_event.transmitted_finishes_at_as_cap_datetime_string,
|
2021-01-29 11:54:12 +00:00
|
|
|
channel="test"
|
2020-10-23 17:54:33 +01:00
|
|
|
)
|
2020-08-04 19:21:22 +01:00
|
|
|
|
|
|
|
|
|
2020-12-09 11:13:50 +00:00
|
|
|
@pytest.mark.parametrize('provider,provider_capitalised', [
|
|
|
|
|
['ee', 'EE'],
|
2021-01-29 12:18:54 +00:00
|
|
|
['three', 'Three'],
|
|
|
|
|
['o2', 'O2'],
|
2020-12-09 11:13:50 +00:00
|
|
|
['vodafone', 'Vodafone'],
|
2020-12-08 11:12:48 +00:00
|
|
|
])
|
|
|
|
|
def test_send_broadcast_provider_message_sends_cancel_with_references(
|
2020-12-09 11:13:50 +00:00
|
|
|
mocker, sample_service, provider, provider_capitalised
|
2020-12-08 11:12:48 +00:00
|
|
|
):
|
2020-08-04 19:21:22 +01:00
|
|
|
template = create_template(sample_service, BROADCAST_TYPE, content='content')
|
2020-10-26 15:14:26 +00:00
|
|
|
|
|
|
|
|
broadcast_message = create_broadcast_message(
|
|
|
|
|
template,
|
|
|
|
|
areas={
|
|
|
|
|
'areas': ['london'],
|
|
|
|
|
'simple_polygons': [
|
|
|
|
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
status=BroadcastStatusType.BROADCASTING
|
|
|
|
|
)
|
|
|
|
|
|
2020-08-04 19:21:22 +01:00
|
|
|
alert_event = create_broadcast_event(broadcast_message, message_type=BroadcastEventMessageType.ALERT)
|
2020-10-23 17:54:33 +01:00
|
|
|
update_event = create_broadcast_event(broadcast_message, message_type=BroadcastEventMessageType.UPDATE)
|
2020-08-04 19:21:22 +01:00
|
|
|
cancel_event = create_broadcast_event(broadcast_message, message_type=BroadcastEventMessageType.CANCEL)
|
|
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
create_broadcast_provider_message(alert_event, provider)
|
|
|
|
|
create_broadcast_provider_message(update_event, provider)
|
2020-11-17 12:35:10 +00:00
|
|
|
|
2020-10-23 17:54:33 +01:00
|
|
|
mock_cancel_broadcast = mocker.patch(
|
2020-12-08 11:12:48 +00:00
|
|
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.cancel_broadcast',
|
2020-10-20 11:57:26 +01:00
|
|
|
)
|
|
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(cancel_event.id))
|
2020-08-04 19:21:22 +01:00
|
|
|
|
2020-12-08 11:12:48 +00:00
|
|
|
broadcast_provider_message = cancel_event.get_provider_message(provider)
|
2020-11-17 12:35:10 +00:00
|
|
|
assert broadcast_provider_message.status == BroadcastProviderMessageStatus.SENDING
|
2020-11-16 18:48:00 +00:00
|
|
|
|
2020-10-23 17:54:33 +01:00
|
|
|
mock_cancel_broadcast.assert_called_once_with(
|
2020-11-16 18:48:00 +00:00
|
|
|
identifier=str(broadcast_provider_message.id),
|
2020-12-04 17:07:08 +00:00
|
|
|
message_number=mocker.ANY,
|
2020-11-17 12:35:10 +00:00
|
|
|
previous_provider_messages=[
|
2020-12-08 11:12:48 +00:00
|
|
|
alert_event.get_provider_message(provider),
|
|
|
|
|
update_event.get_provider_message(provider)
|
2020-11-17 12:35:10 +00:00
|
|
|
],
|
2020-10-28 11:26:38 +00:00
|
|
|
sent=cancel_event.sent_at_as_cap_datetime_string,
|
2020-10-23 17:54:33 +01:00
|
|
|
)
|
2020-08-04 19:21:22 +01:00
|
|
|
|
|
|
|
|
|
2021-01-29 12:18:54 +00:00
|
|
|
@pytest.mark.parametrize("provider,provider_capitalised", [
|
|
|
|
|
['ee', 'EE'],
|
|
|
|
|
['three', 'Three'],
|
|
|
|
|
['o2', 'O2'],
|
|
|
|
|
['vodafone', 'Vodafone'],
|
|
|
|
|
])
|
|
|
|
|
def test_send_broadcast_provider_message_errors(mocker, sample_service, provider, provider_capitalised):
|
2020-08-04 19:21:22 +01:00
|
|
|
template = create_template(sample_service, BROADCAST_TYPE)
|
2020-10-26 15:14:26 +00:00
|
|
|
|
|
|
|
|
broadcast_message = create_broadcast_message(
|
|
|
|
|
template,
|
|
|
|
|
areas={
|
|
|
|
|
'areas': ['london'],
|
|
|
|
|
'simple_polygons': [
|
|
|
|
|
[[50.12, 1.2], [50.13, 1.2], [50.14, 1.21]],
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
status=BroadcastStatusType.BROADCASTING
|
|
|
|
|
)
|
|
|
|
|
|
2020-08-04 19:21:22 +01:00
|
|
|
event = create_broadcast_event(broadcast_message)
|
|
|
|
|
|
2020-10-20 11:57:26 +01:00
|
|
|
mock_create_broadcast = mocker.patch(
|
2021-01-29 12:18:54 +00:00
|
|
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.create_and_send_broadcast',
|
2020-10-23 17:54:33 +01:00
|
|
|
side_effect=Exception('oh no'),
|
2020-10-20 11:57:26 +01:00
|
|
|
)
|
|
|
|
|
|
2020-10-23 17:54:33 +01:00
|
|
|
with pytest.raises(Exception) as ex:
|
2021-01-29 12:18:54 +00:00
|
|
|
send_broadcast_provider_message(provider=provider, broadcast_event_id=str(event.id))
|
2020-07-09 18:22:29 +01:00
|
|
|
|
2020-10-23 17:54:33 +01:00
|
|
|
assert ex.match('oh no')
|
2020-10-20 11:57:26 +01:00
|
|
|
|
|
|
|
|
mock_create_broadcast.assert_called_once_with(
|
2020-11-16 18:48:00 +00:00
|
|
|
identifier=ANY,
|
2020-12-04 17:07:08 +00:00
|
|
|
message_number=mocker.ANY,
|
2020-10-20 11:57:26 +01:00
|
|
|
headline="GOV.UK Notify Broadcast",
|
|
|
|
|
description='this is an emergency broadcast message',
|
2020-10-23 16:44:11 +01:00
|
|
|
areas=[{
|
|
|
|
|
'polygon': [
|
|
|
|
|
[50.12, 1.2],
|
|
|
|
|
[50.13, 1.2],
|
|
|
|
|
[50.14, 1.21],
|
|
|
|
|
],
|
|
|
|
|
}],
|
2020-10-28 11:26:38 +00:00
|
|
|
sent=event.sent_at_as_cap_datetime_string,
|
|
|
|
|
expires=event.transmitted_finishes_at_as_cap_datetime_string,
|
2021-01-29 11:54:12 +00:00
|
|
|
channel="test"
|
2020-10-20 11:57:26 +01:00
|
|
|
)
|
2020-11-16 12:47:38 +00:00
|
|
|
|
|
|
|
|
|
2020-12-04 15:49:50 +00:00
|
|
|
@pytest.mark.parametrize("provider,provider_capitalised", [
|
2021-01-29 12:18:54 +00:00
|
|
|
['ee', 'EE'],
|
|
|
|
|
['three', 'Three'],
|
|
|
|
|
['o2', 'O2'],
|
|
|
|
|
['vodafone', 'Vodafone'],
|
2020-12-04 15:49:50 +00:00
|
|
|
])
|
2020-11-16 12:47:38 +00:00
|
|
|
def test_trigger_link_tests_invokes_cbc_proxy_client(
|
2020-12-04 15:49:50 +00:00
|
|
|
mocker, provider, provider_capitalised
|
2020-11-16 12:47:38 +00:00
|
|
|
):
|
|
|
|
|
mock_send_link_test = mocker.patch(
|
2020-12-04 15:49:50 +00:00
|
|
|
f'app.clients.cbc_proxy.CBCProxy{provider_capitalised}.send_link_test',
|
2020-11-16 12:47:38 +00:00
|
|
|
)
|
|
|
|
|
|
2020-12-04 15:49:50 +00:00
|
|
|
trigger_link_test(provider)
|
2020-11-16 12:47:38 +00:00
|
|
|
|
|
|
|
|
assert mock_send_link_test.called
|
|
|
|
|
# the 0th argument of the call to send_link_test
|
|
|
|
|
identifier = mock_send_link_test.mock_calls[0][1][0]
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
uuid.UUID(identifier)
|
|
|
|
|
except BaseException:
|
|
|
|
|
pytest.fail(f"{identifier} is not a valid uuid")
|
2020-12-04 15:49:50 +00:00
|
|
|
|
|
|
|
|
# testing sequential number:
|
|
|
|
|
if provider == 'vodafone':
|
2020-12-04 16:00:20 +00:00
|
|
|
assert type(mock_send_link_test.mock_calls[0][1][1]) is str
|
|
|
|
|
assert len(mock_send_link_test.mock_calls[0][1][1]) == 8
|
2020-12-04 15:49:50 +00:00
|
|
|
else:
|
|
|
|
|
assert not mock_send_link_test.mock_calls[0][1][1]
|