41 lines
1.1 KiB
Python
41 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",
|
||
"GRAFANA_SOURCES_JSON",
|
||
):
|
||
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
|