"""Test fixtures that isolate the suite from the developer's local .env. Provider configs now declare their own ``BaseSettings`` with ``env_file=".env"``, so a developer who runs ``pytest`` from a project that has real credentials in ``.env`` would otherwise see provider services try to connect (e.g. CryptoPay spinning up an aiohttp session in __init__). We set ``PROVIDER_ENV_FILE=""`` (consumed by each provider's ``ProviderEnvConfig.model_config["env_file"]`` factory) and strip real provider env vars from the test process. """ from __future__ import annotations import os import pytest @pytest.fixture(autouse=True) def _isolate_provider_env(monkeypatch): monkeypatch.setenv("PROVIDER_ENV_FILE", "") for key in list(os.environ.keys()): if any( key.startswith(prefix) for prefix in ( "FREEKASSA_", "PLATEGA_", "SEVERPAY_", "WATA_", "HELEKET_", "CRYPTOPAY_", "YOOKASSA_", "PAYMENT_FREEKASSA_", "PAYMENT_PLATEGA_", "PAYMENT_SEVERPAY_", "PAYMENT_WATA_", "PAYMENT_HELEKET_", "PAYMENT_CRYPTOPAY_", "PAYMENT_YOOKASSA_", "PAYMENT_STARS_", ) ): monkeypatch.delenv(key, raising=False)