40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
|
|
"""Изоляция тестов от локального .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
|