test_config.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from __future__ import annotations
  2. from pathlib import Path
  3. from production_build_agents.observability.config import (
  4. DEFAULT_ENDPOINT,
  5. ObservabilitySettings,
  6. )
  7. def test_observability_is_opt_in() -> None:
  8. settings = ObservabilitySettings.load(
  9. project_root=Path("/missing"),
  10. environ={},
  11. )
  12. assert settings.enabled is False
  13. assert settings.endpoint == DEFAULT_ENDPOINT
  14. assert settings.capture_mode == "full"
  15. def test_environment_overrides_safe_defaults() -> None:
  16. settings = ObservabilitySettings.load(
  17. project_root=Path("/missing"),
  18. environ={
  19. "OBAGENT_REPORT_THIS_RUN": "true",
  20. "OBAGENT_ENDPOINT": "http://127.0.0.1:8931",
  21. "OBAGENT_PROJECT": "test_project",
  22. "OBAGENT_TIMEOUT": "2.5",
  23. "OBAGENT_BATCH_SIZE": "10",
  24. "OBAGENT_FLUSH_INTERVAL": "0.2",
  25. "OBAGENT_CAPTURE_MODE": "redacted",
  26. },
  27. )
  28. assert settings.enabled is True
  29. assert settings.endpoint == "http://127.0.0.1:8931"
  30. assert settings.project == "test_project"
  31. assert settings.timeout == 2.5
  32. assert settings.batch_size == 10
  33. assert settings.flush_interval == 0.2
  34. assert settings.capture_mode == "redacted"
  35. def test_legacy_enabled_flag_cannot_authorize_a_run() -> None:
  36. settings = ObservabilitySettings.load(
  37. project_root=Path("/missing"),
  38. environ={"OBAGENT_ENABLED": "true"},
  39. )
  40. assert settings.enabled is False
  41. def test_unknown_capture_mode_falls_back_to_full() -> None:
  42. settings = ObservabilitySettings.load(
  43. project_root=Path("/missing"),
  44. environ={"OBAGENT_CAPTURE_MODE": "anything"},
  45. )
  46. assert settings.capture_mode == "full"