Ответ
Авторизация (проверка прав доступа) тестируется во всех точках системы, где есть разграничение функционала для разных пользователей или ролей.
Типичные места реализации и тестирования:
- Веб-интерфейс: Кнопки, меню, страницы, которые должны скрываться или блокироваться.
- 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).
Ответ 18+ 🔞
Да ты посмотри на эту хуйню, авторизация! Это ж святое, блядь! Как будто в банк ломишься, а тебя спрашивают: "А ты, сука, кто такой? Пропуск есть?" Вот и тут так же, ёпта.
Везде, где система чует, что можно накосячить или нахватать лишнего, она выставляет этих пиздюков-проверяльщиков. И тестировать это надо так, чтобы у них самих волосы дыбом встали.
Где эта мразь прячется и как её ловить:
- Веб-морда лица. Кнопочки, менюшки — для одних светятся, для других тухнут, как хуй в проруби. Нажимаешь — а тебе: "Пошёл нахуй, у тебя прав нет". Вот это и проверяем.
- API (это задница, блядь, системы!). Вот тут-то и кроется вся соль, ёбаный в рот! Каждый ебуччик-эндпоинт должен спрашивать: "А предъяви, сука, токен! А кто ты по жизни? А можно тебе?" JWT там, OAuth... Короче, хуйня на постном масле, но важная.
- В приложениях этих, мобильных. Там токены в сейфе хранят, локально права проверяют. Надо смотреть, не вытащит ли какой умник этот "сейф" и не подделает ли.
- В самых потаённых норах: базах данных, микросервисах. Там уже свои паханы, свои понятия — RBAC, блядь. Кому можно в записную книжку смотреть, а кому — только в свою.
Вот смотри, как это на практике выглядит, на коленке написал:
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
А теперь, блядь, самое вкусное — что ловить надо:
Не просто "зашёл — не зашёл". А вот эти подлянки: токен протух — как система отреагирует? Может ли Вася Пупкин, будучи простым юзером, вдруг начать редактировать документы Пети Сидорова? Это, блядь, горизонтальный доступ называется, ловушка для долбоёбов-разработчиков!
Или вот: начни ты API дербанить запросами, как сумасшедший — тебя должны придушить rate limiting'ом, чтобы не распизделся. Вот за всем этим следить и есть наша, блядь, работа. Чтобы потом не вышло, что любой проходимец мог всем рулить.