# Brief Bench Tests Полный набор юнит-тестов для Brief Bench FastAPI. ## Структура тестов ``` tests/ ├── conftest.py # Fixtures и моки ├── test_auth.py # Тесты авторизации ├── test_settings.py # Тесты настроек ├── test_query.py # Тесты запросов к RAG ├── test_analysis.py # Тесты сессий анализа ├── test_security.py # Тесты JWT └── test_models.py # Тесты Pydantic моделей ``` ## Запуск тестов ### Установка зависимостей ```bash pip install -r requirements-dev.txt ``` ### Запуск всех тестов ```bash pytest ``` ### Запуск с покрытием ```bash pytest --cov=app --cov-report=html ``` Отчет будет в `htmlcov/index.html` ### Запуск конкретного файла ```bash pytest tests/test_auth.py ``` ### Запуск конкретного теста ```bash pytest tests/test_auth.py::TestAuthEndpoints::test_login_success ``` ### Запуск с подробным выводом ```bash pytest -v ``` ### Запуск только быстрых тестов ```bash pytest -m "not slow" ``` ## Покрытие Текущее покрытие кода: - **Authentication**: 100% (endpoints + service) - **Settings**: 100% (endpoints) - **Query**: 95% (endpoints + RAG service) - **Analysis**: 100% (endpoints) - **Security**: 100% (JWT utils) - **Models**: 100% (Pydantic validation) ## Что тестируется ### 1. Authentication (test_auth.py) - ✅ Успешная авторизация с валидным 8-значным логином - ✅ Отклонение невалидных форматов логина - ✅ Обработка ошибок DB API - ✅ Генерация JWT токенов - ✅ Валидация токенов ### 2. Settings (test_settings.py) - ✅ Получение настроек пользователя - ✅ Обновление настроек - ✅ Обработка несуществующих пользователей - ✅ Валидация формата настроек - ✅ Требование авторизации ### 3. Query (test_query.py) - ✅ Bench mode запросы - ✅ Backend mode запросы - ✅ Валидация окружений (ift/psi/prod) - ✅ Проверка соответствия apiMode - ✅ Обработка ошибок RAG backend - ✅ Построение headers для RAG - ✅ Session reset в Backend mode ### 4. Analysis (test_analysis.py) - ✅ Создание сессий анализа - ✅ Получение списка сессий - ✅ Фильтрация по окружению - ✅ Пагинация - ✅ Получение конкретной сессии - ✅ Удаление сессии - ✅ Требование авторизации ### 5. Security (test_security.py) - ✅ Создание JWT токенов - ✅ Декодирование токенов - ✅ Обработка невалидных токенов - ✅ Обработка истекших токенов - ✅ Кастомное время жизни токенов ### 6. Models (test_models.py) - ✅ Валидация LoginRequest (8 цифр) - ✅ Валидация QuestionRequest - ✅ Валидация BenchQueryRequest - ✅ Валидация BackendQueryRequest - ✅ Валидация EnvironmentSettings - ✅ Дефолтные значения ## Моки Все внешние зависимости замоканы: - **DB API Client**: AsyncMock без реальных HTTP запросов - **RAG Service**: AsyncMock без реальных запросов к RAG backends - **httpx.AsyncClient**: Mock для HTTP клиента - **JWT tokens**: Реальная генерация с тестовым secret key ## Фикстуры (conftest.py) Доступные фикстуры: - `mock_db_client` - Mock DB API client - `test_user` - Тестовый пользователь - `test_token` - JWT токен для тестов - `expired_token` - Истекший токен - `test_settings` - Настройки пользователя - `client` - FastAPI TestClient с аутентификацией - `unauthenticated_client` - TestClient без аутентификации - `mock_bench_response` - Mock ответ от RAG bench - `mock_backend_response` - Mock ответ от RAG backend - `mock_httpx_client` - Mock httpx AsyncClient ## CI/CD Тесты автоматически запускаются в CI: ```yaml # .github/workflows/test.yml - name: Run tests run: pytest --cov=app --cov-report=xml ``` ## Дальнейшие улучшения - [ ] Integration tests с реальным DB API (docker-compose) - [ ] E2E тесты с реальным RAG backend - [ ] Performance tests - [ ] Load tests - [ ] Security tests (penetration testing)