mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-08-06 13:38:40 -04:00
69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
"""Regression coverage for Google OAuth configuration in Docker Compose."""
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
import yaml
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
COMPOSE_PATHS = tuple(
|
|
ROOT / name
|
|
for name in (
|
|
"docker-compose.yml",
|
|
"docker-compose.gpu-nvidia.yml",
|
|
"docker-compose.gpu-amd.yml",
|
|
)
|
|
)
|
|
ENV_EXAMPLE_PATH = ROOT / ".env.example"
|
|
|
|
|
|
def _env_example():
|
|
if not ENV_EXAMPLE_PATH.exists():
|
|
pytest.skip("this checkout does not include the optional .env.example file")
|
|
return ENV_EXAMPLE_PATH.read_text(encoding="utf-8")
|
|
|
|
|
|
def _odysseus_environment(path):
|
|
compose = yaml.safe_load(path.read_text(encoding="utf-8"))
|
|
return set(compose["services"]["odysseus"]["environment"])
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"key",
|
|
(
|
|
"GOOGLE_OAUTH_CLIENT_ID",
|
|
"GOOGLE_OAUTH_CLIENT_SECRET",
|
|
"GOOGLE_OAUTH_REDIRECT_URI",
|
|
),
|
|
)
|
|
def test_google_oauth_setting_is_forwarded(key):
|
|
expected = f"{key}=${{{key}:-}}"
|
|
for path in COMPOSE_PATHS:
|
|
assert expected in _odysseus_environment(path), path.name
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"key",
|
|
(
|
|
"GOOGLE_OAUTH_CLIENT_ID",
|
|
"GOOGLE_OAUTH_CLIENT_SECRET",
|
|
"GOOGLE_OAUTH_REDIRECT_URI",
|
|
),
|
|
)
|
|
def test_google_oauth_setting_is_documented(key):
|
|
assert f"# {key}=" in _env_example()
|
|
|
|
|
|
def test_google_oauth_example_uses_a_neutral_secret_placeholder():
|
|
env_example = _env_example()
|
|
assert "GOOGLE_OAUTH_CLIENT_SECRET=replace-with-client-secret" in env_example
|
|
assert "GOCSPX-" not in env_example
|
|
|
|
|
|
def test_redirect_documentation_covers_https_and_reverse_proxies():
|
|
oauth_section = _env_example().split("# Google OAuth2", 1)[1].split("# Misc", 1)[0]
|
|
assert "HTTPS" in oauth_section
|
|
assert "reverse-proxy" in oauth_section
|
|
assert "exactly match an authorized redirect URI" in oauth_section
|