mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-13 10:28:51 -04:00
Merge pull request #3967 from alphagov/broadcast-form-cache-clear
Clear user cache when broadcast service settings form is submitted
This commit is contained in:
@@ -397,11 +397,14 @@ def service_confirm_broadcast_account_type(service_id, account_type):
|
||||
abort(404)
|
||||
|
||||
if form.validate_on_submit():
|
||||
cached_service_user_ids = [user.id for user in current_service.active_users]
|
||||
|
||||
service_api_client.set_service_broadcast_settings(
|
||||
current_service.id,
|
||||
service_mode=form.account_type.service_mode,
|
||||
broadcast_channel=form.account_type.broadcast_channel,
|
||||
provider_restriction=form.account_type.provider_restriction
|
||||
provider_restriction=form.account_type.provider_restriction,
|
||||
cached_service_user_ids=cached_service_user_ids
|
||||
)
|
||||
create_broadcast_account_type_change_event(
|
||||
service_id=current_service.id,
|
||||
|
||||
@@ -618,13 +618,16 @@ class ServiceAPIClient(NotifyAdminAPIClient):
|
||||
|
||||
@cache.delete('service-{service_id}')
|
||||
def set_service_broadcast_settings(
|
||||
self, service_id, service_mode, broadcast_channel, provider_restriction
|
||||
self, service_id, service_mode, broadcast_channel, provider_restriction, cached_service_user_ids
|
||||
):
|
||||
"""
|
||||
service_mode is one of "training" or "live"
|
||||
broadcast channel is one of "test" or "severe"
|
||||
broadcast channel is one of "operator", "test", "severe", "government"
|
||||
provider_restriction is one of "all", "three", "o2", "vodafone", "ee"
|
||||
"""
|
||||
if cached_service_user_ids:
|
||||
redis_client.delete(*map('user-{}'.format, cached_service_user_ids))
|
||||
|
||||
data = {
|
||||
"service_mode": service_mode,
|
||||
"broadcast_channel": broadcast_channel,
|
||||
|
||||
@@ -5899,6 +5899,7 @@ def test_service_confirm_broadcast_account_type_posts_data_to_api_and_redirects(
|
||||
broadcast_channel,
|
||||
allowed_broadcast_provider,
|
||||
fake_uuid,
|
||||
mock_get_users_by_service,
|
||||
):
|
||||
set_service_broadcast_settings_mock = mocker.patch('app.service_api_client.set_service_broadcast_settings')
|
||||
mock_event_handler = mocker.patch('app.main.views.service_settings.create_broadcast_account_type_change_event')
|
||||
@@ -5917,6 +5918,7 @@ def test_service_confirm_broadcast_account_type_posts_data_to_api_and_redirects(
|
||||
service_mode=service_mode,
|
||||
broadcast_channel=broadcast_channel,
|
||||
provider_restriction=allowed_broadcast_provider,
|
||||
cached_service_user_ids=[fake_uuid]
|
||||
)
|
||||
mock_event_handler.assert_called_once_with(
|
||||
service_id=SERVICE_ONE_ID,
|
||||
|
||||
@@ -404,7 +404,7 @@ def test_returns_value_from_cache(
|
||||
(service_api_client, 'delete_sms_sender', [SERVICE_ONE_ID, ''], {}),
|
||||
(service_api_client, 'update_service_callback_api', [SERVICE_ONE_ID] + [''] * 4, {}),
|
||||
(service_api_client, 'create_service_callback_api', [SERVICE_ONE_ID] + [''] * 3, {}),
|
||||
(service_api_client, 'set_service_broadcast_settings', [SERVICE_ONE_ID, 'training', 'severe', None], {}),
|
||||
(service_api_client, 'set_service_broadcast_settings', [SERVICE_ONE_ID, 'training', 'severe', 'all', []], {}),
|
||||
(user_api_client, 'add_user_to_service', [SERVICE_ONE_ID, uuid4(), [], []], {}),
|
||||
(invite_api_client, 'accept_invite', [SERVICE_ONE_ID, uuid4()], {}),
|
||||
])
|
||||
@@ -492,6 +492,23 @@ def test_deletes_cached_users_when_archiving_service(mocker, mock_get_service_te
|
||||
assert call(f'service-{SERVICE_ONE_ID}-template-*') in mock_redis_delete_by_pattern.call_args_list
|
||||
|
||||
|
||||
def test_deletes_cached_users_when_changing_broadcast_service_settings(mocker):
|
||||
mock_redis_delete = mocker.patch('app.extensions.RedisClient.delete')
|
||||
|
||||
mocker.patch('notifications_python_client.base.BaseAPIClient.request', return_value={'data': ""})
|
||||
|
||||
service_api_client.set_service_broadcast_settings(SERVICE_ONE_ID,
|
||||
'live',
|
||||
'severe',
|
||||
'all',
|
||||
["my-user-id1", "my-user-id2"])
|
||||
|
||||
assert mock_redis_delete.call_args_list == [
|
||||
call('user-my-user-id1', 'user-my-user-id2'),
|
||||
call(f'service-{SERVICE_ONE_ID}'),
|
||||
]
|
||||
|
||||
|
||||
def test_client_gets_guest_list(mocker):
|
||||
client = ServiceAPIClient()
|
||||
mock_get = mocker.patch.object(client, 'get', return_value=['a', 'b', 'c'])
|
||||
|
||||
Reference in New Issue
Block a user