diff --git a/app/event_handlers.py b/app/event_handlers.py index 166a694b9..049ea3e66 100644 --- a/app/event_handlers.py +++ b/app/event_handlers.py @@ -25,6 +25,15 @@ def create_mobile_number_change_event(user_id, updated_by_id, original_mobile_nu new_mobile_number=new_mobile_number) +def create_remove_user_from_service_event(user_id, removed_by_id, service_id): + _send_event( + 'remove_user_from_service', + user_id=user_id, + removed_by_id=removed_by_id, + service_id=service_id + ) + + def create_archive_user_event(user_id, archived_by_id): _send_event( 'archive_user', diff --git a/app/main/views/manage_users.py b/app/main/views/manage_users.py index 5f977bf7c..8102ba521 100644 --- a/app/main/views/manage_users.py +++ b/app/main/views/manage_users.py @@ -14,6 +14,7 @@ from app import current_service, service_api_client from app.event_handlers import ( create_email_change_event, create_mobile_number_change_event, + create_remove_user_from_service_event, ) from app.main import main from app.main.forms import ( @@ -132,6 +133,8 @@ def remove_user_from_service(service_id, user_id): service_id=service_id)) else: abort(500, e) + else: + create_remove_user_from_service_event(user_id=user_id, removed_by_id=current_user.id, service_id=service_id) return redirect(url_for( '.manage_users', diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py index adaef8186..9832d4c12 100644 --- a/tests/app/main/views/test_manage_users.py +++ b/tests/app/main/views/test_manage_users.py @@ -994,9 +994,13 @@ def test_manage_user_page_doesnt_show_folder_hint_if_service_cant_edit_folder_pe def test_remove_user_from_service( client_request, active_user_with_permissions, + api_user_active, service_one, mock_remove_user_from_service, + mocker ): + mock_event_handler = mocker.patch('app.main.views.manage_users.create_remove_user_from_service_event') + client_request.post( 'main.remove_user_from_service', service_id=service_one['id'], @@ -1008,6 +1012,12 @@ def test_remove_user_from_service( str(active_user_with_permissions['id']) ) + mock_event_handler.assert_called_once_with( + user_id=active_user_with_permissions['id'], + removed_by_id=api_user_active['id'], + service_id=service_one['id'], + ) + def test_can_invite_user_as_platform_admin( client_request, diff --git a/tests/app/test_event_handlers.py b/tests/app/test_event_handlers.py index e132188af..b43996265 100644 --- a/tests/app/test_event_handlers.py +++ b/tests/app/test_event_handlers.py @@ -5,6 +5,7 @@ from app.event_handlers import ( create_archive_user_event, create_email_change_event, create_mobile_number_change_event, + create_remove_user_from_service_event, on_user_logged_in, ) from app.models.user import User @@ -37,6 +38,26 @@ def test_create_email_change_event_calls_events_api(app_, mock_events): 'new_email_address': 'new@example.com'}) +def test_create_remove_user_from_service_event_calls_events_api(app_, mock_events): + user_id = str(uuid.uuid4()) + removed_by_id = str(uuid.uuid4()) + service_id = str(uuid.uuid4()) + + with app_.test_request_context(): + create_remove_user_from_service_event(user_id, removed_by_id, service_id) + + mock_events.assert_called_with( + 'remove_user_from_service', + { + 'browser_fingerprint': {'browser': ANY, 'version': ANY, 'platform': ANY, 'user_agent_string': ''}, + 'ip_address': ANY, + 'user_id': user_id, + 'removed_by_id': removed_by_id, + 'service_id': service_id, + } + ) + + def test_create_mobile_number_change_event_calls_events_api(app_, mock_events): user_id = str(uuid.uuid4()) updated_by_id = str(uuid.uuid4())