Ответ
Авторизация (проверка прав доступа) тестируется во всех точках системы, где есть разграничение функционала для разных пользователей или ролей.
Типичные места реализации и тестирования:
- Веб-интерфейс: Кнопки, меню, страницы, которые должны скрываться или блокироваться.
- API (Backend): Основной рубеж защиты. Каждый эндпоинт, требующий аутентификации, должен проверять права вызывающего.
- Механизмы: JWT-токены, OAuth2, API-ключи, сессии.
- Мобильные и десктопные приложения: Локальная проверка прав, хранение токенов.
- Базы данных и микросервисы: Ролевая модель доступа (RBAC) на уровне данных или сервисов.
Пример теста авторизации для API на Python (pytest + requests):
import pytest
import requests
API_URL = "https://api.example.com"
def test_admin_can_access_users_list():
headers = {"Authorization": "Bearer {admin_token}"}
response = requests.get(f"{API_URL}/users", headers=headers)
assert response.status_code == 200
def test_user_cannot_access_users_list():
headers = {"Authorization": "Bearer {user_token}"}
response = requests.get(f"{API_URL}/users", headers=headers)
# Ожидаем отказ в доступе
assert response.status_code == 403
def test_unauthenticated_request_is_rejected():
response = requests.get(f"{API_URL}/users")
assert response.status_code == 401
Ключевые аспекты тестирования: Проверка граничных случаев (истекший токен), вертикальный и горизонтальный доступ (может ли пользователь редактировать чужой ресурс?), защита от перебора (rate limiting).