v1.1.0: Alembic, pytest, домен и документация
- Миграции PostgreSQL через Alembic; DDL убран из lifespan приложения. - Тесты: health, status, ingress Grafana; моки Vault/Grafana/Forgejo. - Пакет onguard24/domain/ (сущности, шина событий), docs/DOMAIN.md. - Обновлены README, CHANGELOG, ARCHITECTURE. Made-with: Cursor
This commit is contained in:
39
tests/conftest.py
Normal file
39
tests/conftest.py
Normal file
@ -0,0 +1,39 @@
|
||||
"""Изоляция тестов от локального .env: секреты сбрасываются до импорта приложения."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
|
||||
# Не ходим в реальные Vault/Grafana/Forgejo/Postgres при прогоне тестов
|
||||
for key in (
|
||||
"DATABASE_URL",
|
||||
"VAULT_ADDR",
|
||||
"VAULT_TOKEN",
|
||||
"GRAFANA_URL",
|
||||
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
|
||||
"FORGEJO_URL",
|
||||
"FORGEJO_TOKEN",
|
||||
"GRAFANA_WEBHOOK_SECRET",
|
||||
):
|
||||
os.environ.pop(key, None)
|
||||
os.environ["DATABASE_URL"] = ""
|
||||
os.environ["VAULT_ADDR"] = ""
|
||||
os.environ["GRAFANA_URL"] = ""
|
||||
os.environ["FORGEJO_URL"] = ""
|
||||
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from onguard24.main import app
|
||||
|
||||
|
||||
def pytest_configure() -> None:
|
||||
"""Дополнительно: гарантировать пустые интеграции."""
|
||||
os.environ.setdefault("DATABASE_URL", "")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client() -> TestClient:
|
||||
"""Контекстный менеджер — отрабатывает lifespan (pool, settings в state)."""
|
||||
with TestClient(app) as c:
|
||||
yield c
|
||||
Reference in New Issue
Block a user