feat: add test framework, unit tests, and GitLab CI pipeline
- 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
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user