diff --git a/app/event_handlers.py b/app/event_handlers.py index 716428535..5c5eacc6e 100644 --- a/app/event_handlers.py +++ b/app/event_handlers.py @@ -78,6 +78,17 @@ def create_suspend_service_event( ) +def create_archive_service_event( + service_id, + archived_by_id, +): + _send_event( + 'archive_service', + service_id=service_id, + archived_by_id=archived_by_id, + ) + + def _send_event(event_type, **kwargs): event_data = _construct_event_data(request) event_data.update(kwargs) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index f748d82ee..8dc06152d 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -29,6 +29,7 @@ from app import ( user_api_client, ) from app.event_handlers import ( + create_archive_service_event, create_broadcast_account_type_change_event, create_suspend_service_event, ) @@ -428,6 +429,8 @@ def archive_service(service_id): cached_service_user_ids = [user.id for user in current_service.active_users] service_api_client.archive_service(service_id, cached_service_user_ids) + create_archive_service_event(service_id, archived_by_id=current_user.id) + flash( '‘{}’ was deleted'.format(current_service.name), 'default_with_tick', diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 5cc2eb498..3a9004d46 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -4125,9 +4125,11 @@ def test_archive_service_after_confirm( mock_get_service_templates, user, ): - mocked_fn = mocker.patch('app.service_api_client.post') + mock_api = mocker.patch('app.service_api_client.post') + mock_event = mocker.patch('app.main.views.service_settings.create_archive_service_event') redis_delete_mock = mocker.patch('app.notify_client.service_api_client.redis_client.delete') mocker.patch('app.notify_client.service_api_client.redis_client.delete_cache_keys_by_pattern') + client_request.login(user) page = client_request.post( 'main.archive_service', @@ -4135,7 +4137,9 @@ def test_archive_service_after_confirm( _follow_redirects=True, ) - mocked_fn.assert_called_once_with('/service/{}/archive'.format(SERVICE_ONE_ID), data=None) + mock_api.assert_called_once_with('/service/{}/archive'.format(SERVICE_ONE_ID), data=None) + mock_event.assert_called_once_with(SERVICE_ONE_ID, archived_by_id=user['id']) + assert normalize_spaces(page.select_one('h1').text) == 'Choose service' assert normalize_spaces(page.select_one('.banner-default-with-tick').text) == ( '‘service one’ was deleted' diff --git a/tests/app/test_event_handlers.py b/tests/app/test_event_handlers.py index 7c63cef8a..2eab95373 100644 --- a/tests/app/test_event_handlers.py +++ b/tests/app/test_event_handlers.py @@ -3,6 +3,7 @@ from unittest.mock import ANY from app.event_handlers import ( create_add_user_to_service_event, + create_archive_service_event, create_archive_user_event, create_broadcast_account_type_change_event, create_email_change_event, @@ -152,3 +153,21 @@ def test_suspend_service(client, mock_events): 'service_id': service_id, 'suspended_by_id': suspended_by_id}, ) + + +def test_archive_service(client, mock_events): + service_id = str(uuid.uuid4()) + archived_by_id = str(uuid.uuid4()) + + create_archive_service_event( + service_id, + archived_by_id, + ) + + mock_events.assert_called_with( + 'archive_service', + {'browser_fingerprint': {'browser': ANY, 'version': ANY, 'platform': ANY, 'user_agent_string': ''}, + 'ip_address': ANY, + 'service_id': service_id, + 'archived_by_id': archived_by_id}, + )