"""Shared pytest fixtures для backend-сьюта. NB: RBAC-гейт (app/main.py `rbac_guard`) требует заголовок `X-Authenticated-User` на любом non-public пути — иначе 401. Тесты, бьющие по `app` через TestClient, должны слать этот заголовок ЯВНО на запрос (напр. test_parcel_by_bbox), либо тестировать именно no-auth путь (admin-тесты ждут 401 без заголовка). Глобально заголовок НЕ инжектим — это ломает тесты, проверяющие отказ авторизации. """ from __future__ import annotations import pytest @pytest.fixture(autouse=True) def _clear_dependency_overrides(): """Сбрасывать app.dependency_overrides после каждого теста (anti-leak). Тест переопределяет get_db через app.dependency_overrides; без сброса override течёт в следующий тест → ложные коннекты к реальной БД / флейки. Импорт app локальный (ленивый) — не тянем тяжёлый app.main при сборе тестов без него. """ yield try: from app.main import app app.dependency_overrides.clear() except Exception: pass