- Add pytest config in backend/pyproject.toml with asyncio mode and coverage - Add backend/requirements-test.txt with pytest, pytest-cov, pytest-asyncio, aiosqlite - Write 86 backend unit tests covering auth (JWT tokens), schemas (Pydantic models), config (Settings env overrides), log_parser (log parsing, IP resolution, geo data), models (SQLAlchemy table definitions + column defaults), and theme export - Add Vitest config for Angular frontend (vitest.config.ts, src/test-setup.ts) - Add .gitlab-ci.yml with stages: backend-test, frontend-test, backend-lint, docker-build, and quality-gate - CI enforces 10% minimum coverage threshold for backend
22 lines
819 B
Python
22 lines
819 B
Python
"""Shared test fixtures for kmtnflower backend tests."""
|
|
|
|
import pytest
|
|
from unittest.mock import patch
|
|
|
|
# Override settings for tests — use SQLite so we don't need PostgreSQL
|
|
@pytest.fixture(autouse=True)
|
|
def override_settings():
|
|
"""Set test-only environment variables before any import of app modules."""
|
|
env = {
|
|
"KMTN_DATABASE_URL": "sqlite+aiosqlite:///:memory:",
|
|
"KMTN_ENV": "test",
|
|
"KMTN_JWT_SECRET_KEY": "test-secret-key-do-not-use",
|
|
"KMTN_ADMIN_USERNAME": "testadmin",
|
|
"KMTN_ADMIN_PASSWORD": "testpass123",
|
|
"KMTN_LOGS_DIR": "/tmp/kmtn_test_logs",
|
|
"KMTN_GEOLITE2_DB_PATH": "/nonexistent/GeoLite2-City.mmdb",
|
|
"KMTN_THEME_JSON_PATH": "/tmp/kmtn_test_theme.json",
|
|
}
|
|
with patch.dict("os.environ", env, clear=False):
|
|
yield env
|