Files
voidea/docs/api-testing-strategy.md

1.8 KiB

Стратегия тестирования API

9 обязательных сценариев

# Сценарий Статус Пример
1 Missing field → 422 Обязателен POST /ideas без body
2 Wrong type → 422 Обязателен title: 123 вместо строки
3 Invalid/expired token → 401 Обязателен Authorization: Bearer bad
4 Wrong permissions → 403 Обязателен user пытается в /admin
5 Not found → 404 Обязателен GET /ideas/nonexistent
6 Conflict → 409 Обязателен Дубликат email при регистрации
7 Success → 200/201 Обязателен Успешный CRUD
8 Rate limit → 429 Когда реализован 100 запросов подряд
9 Idempotency Для DELETE/PATCH Повторный delete → 404

Цель: 4 группы endpoints

tests/integration/
├── conftest.py          # async_client, auth headers
├── test_auth.py         # register / login / refresh
├── test_ideas.py        # CRUD + analyze
├── test_users.py        # profile
└── test_admin.py        # users / health / logs

Каждый файл — минимум 9 тестов (по 1 на сценарий). Итого ~36 тестов.

Структура теста

async def test_create_idea_success(async_client, user_token):
    response = await async_client.post(
        "/api/v1/ideas",
        json={"title": "Test", "content": "Content"},
        headers={"Authorization": f"Bearer {user_token}"},
    )
    assert response.status_code == 201
    data = response.json()
    assert data["title"] == "Test"