test_configuration.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from pathlib import Path
  2. import pytest
  3. from pydantic import ValidationError
  4. from zbt.core.config import BACKEND_ROOT, Settings, resolve_env_file
  5. def test_settings_load_environment_from_backend_directory() -> None:
  6. assert Settings.model_config["env_file"] == BACKEND_ROOT / ".env"
  7. def test_resolve_env_file_from_project_root(tmp_path: Path) -> None:
  8. backend = tmp_path / "backend"
  9. backend.mkdir()
  10. env_file = backend / ".env"
  11. env_file.write_text("MYSQL_USER=root\n", encoding="utf-8")
  12. assert resolve_env_file(tmp_path) == env_file
  13. assert resolve_env_file(backend) == env_file
  14. def test_refund_worker_singleton_mode_can_be_disabled_for_parallel_workers() -> None:
  15. settings = Settings(
  16. app_env="test",
  17. refund_worker_singleton=False,
  18. jwt_access_secret="a" * 32,
  19. jwt_refresh_secret="b" * 32,
  20. field_encryption_key="c" * 32,
  21. )
  22. assert settings.refund_worker_singleton is False
  23. @pytest.mark.parametrize(
  24. ("field", "value"),
  25. [
  26. ("mysql_core_database", "insurance_core"),
  27. ("mysql_agent_database", "insurance_agent"),
  28. ("mysql_analytics_database", "insurance_analytics"),
  29. ("redis_prefix", "ins:"),
  30. ],
  31. )
  32. def test_stage_one_configuration_rejects_unsafe_data_targets(
  33. field: str,
  34. value: str,
  35. ) -> None:
  36. with pytest.raises(ValidationError):
  37. Settings(
  38. app_env="test",
  39. jwt_access_secret="a" * 32,
  40. jwt_refresh_secret="b" * 32,
  41. field_encryption_key="c" * 32,
  42. **{field: value},
  43. )