async def METHOD_NAME(data_fixture):
    user_excluded, token = data_fixture.create_user_and_token()
    workspace = data_fixture.create_workspace(user=user_excluded)
    database = data_fixture.create_database_application(workspace=workspace)
    database_excluded = data_fixture.create_database_application(workspace=workspace)
    no_access_role = Role.objects.get(uid="NO_ACCESS")
    await sync_to_async(RoleAssignmentHandler().assign_role)(
        user_excluded,
        workspace,
        role=no_access_role,
        scope=database_excluded.application_ptr,
    )
    # Establish websocket connection and subscribe to table
    communicator = WebsocketCommunicator(
        application,
        f"ws/core/?jwt_token={token}",
        headers=[(b"origin", b"http://localhost")],
    )
    await communicator.connect()
    await communicator.receive_json_from()
    await sync_to_async(TrashHandler.trash)(
        user_excluded, workspace, None, trash_item=workspace
    )
    await sync_to_async(TrashHandler.restore_item)(
        user_excluded, WorkspaceTrashableItemType.type, workspace.id
    )
    workspace_restored_message = await get_message(communicator, "group_restored")
    assert workspace_restored_message is not None
    assert workspace_restored_message["applications"] == [
        get_application_serializer(database).data
    ]
    await communicator.disconnect()