Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Стратегия тестирования 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 тестов.
|
||||
|
||||
## Структура теста
|
||||
|
||||
```python
|
||||
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"
|
||||
```
|
||||
Reference in New Issue
Block a user