В каких компонентах системы реализуется и тестируется авторизация?

Ответ

Авторизация (проверка прав доступа) тестируется во всех точках системы, где есть разграничение функционала для разных пользователей или ролей.

Типичные места реализации и тестирования:

  1. Веб-интерфейс: Кнопки, меню, страницы, которые должны скрываться или блокироваться.
  2. API (Backend): Основной рубеж защиты. Каждый эндпоинт, требующий аутентификации, должен проверять права вызывающего.
    • Механизмы: JWT-токены, OAuth2, API-ключи, сессии.
  3. Мобильные и десктопные приложения: Локальная проверка прав, хранение токенов.
  4. Базы данных и микросервисы: Ролевая модель доступа (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+ 🔞

Да ты посмотри на эту хуйню, авторизация! Это ж святое, блядь! Как будто в банк ломишься, а тебя спрашивают: "А ты, сука, кто такой? Пропуск есть?" Вот и тут так же, ёпта.

Везде, где система чует, что можно накосячить или нахватать лишнего, она выставляет этих пиздюков-проверяльщиков. И тестировать это надо так, чтобы у них самих волосы дыбом встали.

Где эта мразь прячется и как её ловить:

  1. Веб-морда лица. Кнопочки, менюшки — для одних светятся, для других тухнут, как хуй в проруби. Нажимаешь — а тебе: "Пошёл нахуй, у тебя прав нет". Вот это и проверяем.
  2. API (это задница, блядь, системы!). Вот тут-то и кроется вся соль, ёбаный в рот! Каждый ебуччик-эндпоинт должен спрашивать: "А предъяви, сука, токен! А кто ты по жизни? А можно тебе?" JWT там, OAuth... Короче, хуйня на постном масле, но важная.
  3. В приложениях этих, мобильных. Там токены в сейфе хранят, локально права проверяют. Надо смотреть, не вытащит ли какой умник этот "сейф" и не подделает ли.
  4. В самых потаённых норах: базах данных, микросервисах. Там уже свои паханы, свои понятия — 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'ом, чтобы не распизделся. Вот за всем этим следить и есть наша, блядь, работа. Чтобы потом не вышло, что любой проходимец мог всем рулить.