Source code for tests.platform.conftest
"""
pytest configuration for platform tests.
Provides shared fixtures for OIDC authentication caching across pytest workers.
Uses pytest-xdist hooks to ensure OIDC token fetching happens only once on the master node.
"""
import pytest
[docs]
def is_master(config) -> bool:
"""True if the code running is in the xdist master node or not using xdist at all."""
return not hasattr(config, "workerinput")
[docs]
def pytest_configure(config):
"""Configure hook: fetch OIDC token on master node only."""
if is_master(config):
# This runs only on the master node (or in single-node mode)
from feldera.testutils_oidc import setup_token_cache
token_data = setup_token_cache()
if token_data:
print("🔐 AUTH: Master node cached OIDC token for distribution to workers")
# Store token data in config for distribution to workers
config.oidc_token_data = token_data
else:
config.oidc_token_data = None
[docs]
def pytest_configure_node(node):
"""xdist hook: pass token data to worker nodes via workerinput for fixture access."""
# Send the token data from master to worker (used by fixture as fallback)
token_data = getattr(node.config, "oidc_token_data", None)
node.workerinput["oidc_token_data"] = token_data
[docs]
@pytest.fixture(scope="session", autouse=True)
def oidc_token_fixture(request):
"""
Session-scoped fixture that verifies OIDC token setup.
The actual token fetching is done by pytest_configure hooks and stored
in environment variables for cross-process access.
"""
from feldera.testutils_oidc import get_cached_token_from_env
# Token is accessed via environment variable - this fixture just verifies setup
token_data = get_cached_token_from_env()
if token_data:
return token_data.get("access_token")
return None