Как тестировать функциональность, доступную модератору или другим ролям?

«Как тестировать функциональность, доступную модератору или другим ролям?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестирование ролевой модели не требует входа под реальными учётными записями. Используйте следующие техники:

1. Использование тестовых данных и токенов: Создайте в тестовой БД пользователя с ролью "модератор" и используйте его credentials или JWT-токен в запросах.

# Пример (Python, pytest)
def test_moderator_can_delete_post(authenticated_moderator_client):
    response = authenticated_moderator_client.delete('/api/posts/123')
    assert response.status_code == 204

2. Мокирование и заглушки (Stubbing): Заглушите вызов сервиса авторизации, чтобы он возвращал нужную роль.

// Пример (Node.js, Jest)
jest.spyOn(authService, 'getUserRole').mockReturnValue('moderator');

3. Тестирование негативных сценариев: Убедитесь, что пользователь без роли модератора не может выполнить действие.

def test_user_cannot_delete_post(authenticated_user_client):
    response = authenticated_user_client.delete('/api/posts/123')
    assert response.status_code == 403  # Forbidden

Ключевой принцип: Тесты должны быть изолированы, воспроизводимы и не зависеть от реальных системных учётных записей.