test_runtime_target_validation.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. from pathlib import Path
  2. from lightrag.api.runtime_validation import (
  3. RuntimeEnvironment,
  4. validate_runtime_target,
  5. validate_runtime_target_from_env_file,
  6. )
  7. def test_validate_runtime_target_skips_when_not_declared() -> None:
  8. is_valid, error_message = validate_runtime_target(None)
  9. assert is_valid is True
  10. assert error_message is None
  11. def test_validate_runtime_target_accepts_host_on_host() -> None:
  12. is_valid, error_message = validate_runtime_target(
  13. "host",
  14. RuntimeEnvironment(
  15. in_container=False,
  16. in_docker=False,
  17. in_kubernetes=False,
  18. ),
  19. )
  20. assert is_valid is True
  21. assert error_message is None
  22. def test_validate_runtime_target_rejects_host_in_container() -> None:
  23. is_valid, error_message = validate_runtime_target(
  24. "host",
  25. RuntimeEnvironment(
  26. in_container=True,
  27. in_docker=True,
  28. in_kubernetes=False,
  29. ),
  30. )
  31. assert is_valid is False
  32. assert "\n" in error_message
  33. assert "Configuration error in .env" in error_message
  34. assert "LIGHTRAG_RUNTIME_TARGET=host" in error_message
  35. assert "This value from .env" in error_message
  36. assert "Docker" in error_message
  37. def test_validate_runtime_target_accepts_compose_and_docker_in_container() -> None:
  38. runtime_environment = RuntimeEnvironment(
  39. in_container=True,
  40. in_docker=False,
  41. in_kubernetes=True,
  42. )
  43. for runtime_target in ("compose", "docker"):
  44. is_valid, error_message = validate_runtime_target(
  45. runtime_target,
  46. runtime_environment,
  47. )
  48. assert is_valid is True
  49. assert error_message is None
  50. def test_validate_runtime_target_rejects_container_target_on_host() -> None:
  51. is_valid, error_message = validate_runtime_target(
  52. "docker",
  53. RuntimeEnvironment(
  54. in_container=False,
  55. in_docker=False,
  56. in_kubernetes=False,
  57. ),
  58. )
  59. assert is_valid is False
  60. assert "\n" in error_message
  61. assert "Configuration error in .env" in error_message
  62. assert "LIGHTRAG_RUNTIME_TARGET=docker" in error_message
  63. assert "This value from .env" in error_message
  64. assert "Docker or Kubernetes" in error_message
  65. def test_validate_runtime_target_rejects_invalid_value() -> None:
  66. is_valid, error_message = validate_runtime_target(
  67. "invalid",
  68. RuntimeEnvironment(in_container=False, in_docker=False, in_kubernetes=False),
  69. )
  70. assert is_valid is False
  71. assert "\n" in error_message
  72. assert "Configuration error in .env" in error_message
  73. assert "must be 'host' or 'compose'" in error_message
  74. def test_validate_runtime_target_from_env_file_uses_raw_env_value(
  75. tmp_path: Path,
  76. ) -> None:
  77. env_file = tmp_path / ".env"
  78. env_file.write_text("LIGHTRAG_RUNTIME_TARGET=compose\n", encoding="utf-8")
  79. is_valid, error_message = validate_runtime_target_from_env_file(
  80. env_file,
  81. RuntimeEnvironment(
  82. in_container=True,
  83. in_docker=True,
  84. in_kubernetes=False,
  85. ),
  86. )
  87. assert is_valid is True
  88. assert error_message is None