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:
Alexandr
2026-04-03 08:36:35 +03:00
parent 4da9b13a86
commit 85eb61b576
21 changed files with 611 additions and 32 deletions

39
tests/conftest.py Normal file
View 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