test_legacy_browser_database_config.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from __future__ import annotations
  2. import importlib.util
  3. from pathlib import Path
  4. from types import ModuleType
  5. import pytest
  6. _VARIABLES = (
  7. "AGENT_BROWSER_DATABASE_HOST",
  8. "AGENT_BROWSER_DATABASE_USER",
  9. "AGENT_BROWSER_DATABASE_PASSWORD",
  10. "AGENT_BROWSER_DATABASE_NAME",
  11. )
  12. def _load_helper_module() -> ModuleType:
  13. path = (
  14. Path(__file__).parents[1]
  15. / "agent"
  16. / "tools"
  17. / "builtin"
  18. / "browser"
  19. / "sync_mysql_help.py"
  20. )
  21. spec = importlib.util.spec_from_file_location(
  22. "agent_browser_database_helper_test", path
  23. )
  24. assert spec is not None and spec.loader is not None
  25. module = importlib.util.module_from_spec(spec)
  26. spec.loader.exec_module(module)
  27. return module
  28. def test_legacy_browser_database_config_fails_closed(
  29. monkeypatch: pytest.MonkeyPatch,
  30. ) -> None:
  31. for name in _VARIABLES:
  32. monkeypatch.delenv(name, raising=False)
  33. module = _load_helper_module()
  34. helper = module.SyncMySQLHelper()
  35. helper._pool = None
  36. with pytest.raises(
  37. RuntimeError, match="legacy browser database configuration is missing"
  38. ):
  39. helper.get_pool()
  40. def test_legacy_browser_database_config_uses_environment(
  41. monkeypatch: pytest.MonkeyPatch,
  42. ) -> None:
  43. configured = {
  44. "AGENT_BROWSER_DATABASE_HOST": "db.example.invalid",
  45. "AGENT_BROWSER_DATABASE_USER": "unit-user",
  46. "AGENT_BROWSER_DATABASE_PASSWORD": "unit-test-only",
  47. "AGENT_BROWSER_DATABASE_NAME": "unit-database",
  48. }
  49. for name, value in configured.items():
  50. monkeypatch.setenv(name, value)
  51. module = _load_helper_module()
  52. resolved = module._database_config()
  53. assert resolved["host"] == configured["AGENT_BROWSER_DATABASE_HOST"]
  54. assert resolved["user"] == configured["AGENT_BROWSER_DATABASE_USER"]
  55. assert resolved["password"] == configured["AGENT_BROWSER_DATABASE_PASSWORD"]
  56. assert resolved["database"] == configured["AGENT_BROWSER_DATABASE_NAME"]