Files
customerTicket/tests/test_env.py
T
2026-09-10 11:34:19 +03:30

37 lines
1.8 KiB
Python

from pathlib import Path
from config.env import load_env_file, load_project_environment
def test_env_file_does_not_override_injected_environment(tmp_path, monkeypatch):
env_file = tmp_path / ".env.local"
env_file.write_text("EXISTING=from-file\nNEW_VALUE='loaded locally'\n", encoding="utf-8")
monkeypatch.setenv("EXISTING", "from-server")
monkeypatch.delenv("NEW_VALUE", raising=False)
assert load_env_file(env_file) is True
assert __import__("os").environ["EXISTING"] == "from-server"
assert __import__("os").environ["NEW_VALUE"] == "loaded locally"
def test_environment_selects_local_for_dev_and_env_for_prod(tmp_path, monkeypatch):
(tmp_path / ".env.local").write_text("SELECTED_ENV=local\n", encoding="utf-8")
(tmp_path / ".env").write_text("SELECTED_ENV=production\n", encoding="utf-8")
monkeypatch.delenv("DJANGO_ENV_FILE", raising=False)
monkeypatch.delenv("SELECTED_ENV", raising=False)
monkeypatch.setenv("DJANGO_SETTINGS_MODULE", "config.settings.dev")
assert load_project_environment(Path(tmp_path)) == tmp_path / ".env.local"
assert __import__("os").environ["SELECTED_ENV"] == "local"
monkeypatch.delenv("SELECTED_ENV")
monkeypatch.setenv("DJANGO_SETTINGS_MODULE", "config.settings.prod")
assert load_project_environment(Path(tmp_path)) == tmp_path / ".env"
assert __import__("os").environ["SELECTED_ENV"] == "production"
def test_explicit_environment_file_can_be_selected(tmp_path, monkeypatch):
custom = tmp_path / "server.env"
custom.write_text("CUSTOM_SERVER_VALUE=yes\n", encoding="utf-8")
monkeypatch.setenv("DJANGO_ENV_FILE", "server.env")
monkeypatch.delenv("CUSTOM_SERVER_VALUE", raising=False)
assert load_project_environment(Path(tmp_path)) == custom
assert __import__("os").environ["CUSTOM_SERVER_VALUE"] == "yes"