# 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