test_bootstrap.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import pytest
  2. from app.runner.bootstrap import runner_settings_from_env
  3. def test_runner_settings_require_signing_secret_and_explicit_dependencies(
  4. monkeypatch,
  5. ):
  6. required = {
  7. "DATABASE_URL": "postgresql://platform",
  8. "NEO4J_URI": "bolt://neo4j:7687",
  9. "NEO4J_USER": "neo4j",
  10. "NEO4J_PASSWORD": "test",
  11. "DATASOURCE_CREDENTIAL_MASTER_KEY": (
  12. "MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY="
  13. ),
  14. "DATASOURCE_CREDENTIAL_KEY_VERSION": "v1",
  15. "RUNNER_TASK_TOKEN_SECRET": "x" * 32,
  16. "RUNNER_HTTP_ALLOWED_HOSTS": "events.internal, audit.internal",
  17. }
  18. for key, value in required.items():
  19. monkeypatch.setenv(key, value)
  20. settings = runner_settings_from_env()
  21. assert settings.runtime.pool_size == 1
  22. assert settings.runtime.max_overflow == 1
  23. assert settings.runtime.max_idle_pools == 4
  24. assert settings.allowed_http_hosts == {
  25. "events.internal",
  26. "audit.internal",
  27. }
  28. assert "postgresql://platform" not in repr(settings)
  29. assert required["RUNNER_TASK_TOKEN_SECRET"] not in repr(settings)
  30. def test_runner_refuses_to_start_without_a_task_token_secret(monkeypatch):
  31. monkeypatch.delenv("RUNNER_TASK_TOKEN_SECRET", raising=False)
  32. with pytest.raises(ValueError, match="RUNNER_TASK_TOKEN_SECRET"):
  33. runner_settings_from_env()