171 lines
4.5 KiB
Markdown
171 lines
4.5 KiB
Markdown
# 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
|