banatie-service/tests/api/test-README.md

171 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Banatie API Tests
Набор интеграционных тестов для проверки REST API endpoints.
## 📋 Структура
```
tests/api/
├── config.ts # Конфигурация (API key, baseURL)
├── utils.ts # Утилиты (fetch, logger, file operations)
├── fixtures/
│ └── test-image.png # Тестовое изображение
├── 01-basic.ts # Базовые операции (upload, generate, list)
├── 02-flows.ts # Flow management (CRUD, generations)
├── 03-aliases.ts # Alias system (dual, technical, resolution)
├── 04-live.ts # Live endpoint (caching, streaming)
├── 05-edge-cases.ts # Validation и error handling
└── run-all.ts # Запуск всех тестов
```
## 🚀 Быстрый старт
### 1. Настройка
Создайте `.env` файл в корне проекта:
```bash
API_KEY=bnt_your_actual_api_key_here
API_BASE_URL=http://localhost:3000
```
### 2. Установка зависимостей
```bash
pnpm install
```
### 3. Добавьте тестовое изображение
Поместите любое изображение в `tests/api/fixtures/test-image.png`
### 4. Запустите API сервер
```bash
pnpm dev
```
### 5. Запустите тесты
**Все тесты:**
```bash
pnpm test:api
```
**Отдельный тест:**
```bash
tsx tests/api/01-basic.ts
```
## 📊 Результаты
Сгенерированные изображения сохраняются в `results/` с timestamp.
Пример вывода:
```
━━━ BASIC TESTS ━━━
✓ Upload image (234ms)
Image ID: abc-123-def
Storage Key: org/project/uploads/2025-01/image.png
Alias: @test-logo
✓ Generate image (simple) (5432ms)
...
```
## 🧪 Что тестируется
### 01-basic.ts
- ✅ Upload изображений
- ✅ Список изображений
- ✅ Генерация без references
- ✅ Генерация с references
- ✅ Список и детали generations
### 02-flows.ts
- ✅ CRUD операции flows
- ✅ Генерации в flow контексте
- ✅ Technical aliases (@last, @first, @upload)
- ✅ Flow-scoped aliases
### 03-aliases.ts
- ✅ Project-scoped aliases
- ✅ Flow-scoped aliases
- ✅ Dual alias assignment
- ✅ Alias resolution precedence
- ✅ Technical aliases computation
### 04-live.ts
- ✅ Cache MISS (первый запрос)
- ✅ Cache HIT (повторный запрос)
- ✅ Различные параметры
- ✅ References в live endpoint
- ✅ Performance кэширования
### 05-edge-cases.ts
- ✅ Валидация входных данных
- ✅ Дублирование aliases
- ✅ Несуществующие resources
- ✅ Некорректные форматы
- ✅ Authentication errors
- ✅ Pagination limits
## 🔧 Конфигурация
Настройка в `tests/api/config.ts`:
```typescript
export const config = {
baseURL: 'http://localhost:3000',
apiKey: 'bnt_test_key',
resultsDir: '../../results',
requestTimeout: 30000,
generationTimeout: 60000,
verbose: true,
saveImages: true,
};
```
## 📝 Логирование
Цветной console output:
- ✓ Зеленый - успешные тесты
- ✗ Красный - failed тесты
- → Синий - информация
- ⚠ Желтый - предупреждения
## 🐛 Troubleshooting
**API не отвечает:**
```bash
# Проверьте что сервер запущен
curl http://localhost:3000/health
```
**401 Unauthorized:**
```bash
# Проверьте API key в .env
echo $API_KEY
```
**Генерация timeout:**
```bash
# Увеличьте timeout в config.ts
generationTimeout: 120000 // 2 минуты
```
## 📚 Дополнительно
- Тесты запускаются **последовательно** (используют testContext)
- Данные **НЕ удаляются** после тестов (для инспекции)
- Все сгенерированные изображения сохраняются в `results/`
- Rate limiting учитывается (есть задержки между запросами)
## 🎯 Success Criteria
Все тесты должны пройти успешно:
- ✅ >95% success rate
-Все validation errors обрабатываются корректно
- ✅ Cache работает (HIT < 500ms)
- Alias resolution правильный
- Нет memory leaks