Ответ
Тестирование авторизации охватывает проверку механизмов контроля доступа, жизненного цикла токенов и обработки ошибок.
Области тестирования и примеры:
| Механизм | Что проверять |
|---|---|
| JWT / OAuth 2.0 | Срок действия токена (exp), обновление (refresh token), корректность подписи, валидация claims. |
| RBAC (ролевая модель) | Доступ к эндпоинтам/UI в зависимости от роли пользователя (например, admin vs user). |
| API-ключи | Валидность ключа, ограничение по квотам (rate limiting), привязка к IP. |
Пример теста на Python (JWT):
import requests
import jwt # PyJWT
def test_access_with_valid_jwt():
# 1. Получение токена
auth_response = requests.post("/auth/login", json={"user": "test", "pass": "secret"})
access_token = auth_response.json()["access_token"]
# 2. Проверка доступа к защищенному ресурсу
headers = {"Authorization": f"Bearer {access_token}"}
profile_response = requests.get("/api/profile", headers=headers)
assert profile_response.status_code == 200
# 3. Проверка обработки просроченного токена
expired_payload = {"user_id": 1, "exp": 100} # Истекшее время
expired_token = jwt.encode(expired_payload, "secret", algorithm="HS256")
expired_response = requests.get("/api/profile", headers={"Authorization": f"Bearer {expired_token}"})
assert expired_response.status_code == 401
assert "token expired" in expired_response.json()["detail"]
Дополнительно тестируются: Защита от brute-force, SQL-инъекции в формах входа, корректность HTTP-кодов (401 Unauthorized, 403 Forbidden).