4.5 KiB
4.5 KiB
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 файл в корне проекта:
API_KEY=bnt_your_actual_api_key_here
API_BASE_URL=http://localhost:3000
2. Установка зависимостей
pnpm install
3. Добавьте тестовое изображение
Поместите любое изображение в tests/api/fixtures/test-image.png
4. Запустите API сервер
pnpm dev
5. Запустите тесты
Все тесты:
pnpm test:api
Отдельный тест:
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:
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 не отвечает:
# Проверьте что сервер запущен
curl http://localhost:3000/health
401 Unauthorized:
# Проверьте API key в .env
echo $API_KEY
Генерация timeout:
# Увеличьте timeout в config.ts
generationTimeout: 120000 // 2 минуты
📚 Дополнительно
- Тесты запускаются последовательно (используют testContext)
- Данные НЕ удаляются после тестов (для инспекции)
- Все сгенерированные изображения сохраняются в
results/ - Rate limiting учитывается (есть задержки между запросами)
🎯 Success Criteria
Все тесты должны пройти успешно:
- ✅ >95% success rate
- ✅ Все validation errors обрабатываются корректно
- ✅ Cache работает (HIT < 500ms)
- ✅ Alias resolution правильный
- ✅ Нет memory leaks