diff --git a/muxplex/settings.py b/muxplex/settings.py index 43c5ece..378d7d2 100644 --- a/muxplex/settings.py +++ b/muxplex/settings.py @@ -80,6 +80,12 @@ def patch_settings(patch: dict) -> dict: def load_federation_key() -> str: + """Load the federation key from disk or env-overridden path. + + Reads from FEDERATION_KEY_PATH by default; override via + MUXPLEX_FEDERATION_KEY_FILE env var. Returns empty string when + the file does not exist. + """ env_path = os.environ.get("MUXPLEX_FEDERATION_KEY_FILE") path = Path(env_path) if env_path else FEDERATION_KEY_PATH try: diff --git a/muxplex/tests/test_settings.py b/muxplex/tests/test_settings.py index 204dac7..eac796e 100644 --- a/muxplex/tests/test_settings.py +++ b/muxplex/tests/test_settings.py @@ -447,11 +447,26 @@ def test_load_federation_key_reads_existing_file(tmp_path, monkeypatch): assert result == "my-secret-key" -def test_load_federation_key_uses_default_path(monkeypatch): +def test_load_federation_key_uses_default_path(tmp_path, monkeypatch): """load_federation_key() uses ~/.config/muxplex/federation_key when env var is not set.""" from muxplex.settings import FEDERATION_KEY_PATH monkeypatch.delenv("MUXPLEX_FEDERATION_KEY_FILE", raising=False) - # The default path should be used; we just verify no env override changes behaviour - # When the default file doesn't exist, returns empty string assert FEDERATION_KEY_PATH == Path.home() / ".config" / "muxplex" / "federation_key" + # Redirect the constant so the function uses a guaranteed-absent path in tmp_path + monkeypatch.setattr(settings_mod, "FEDERATION_KEY_PATH", tmp_path / "absent_key") + # Also verify the function runs without error (returns "" when file absent) + result = load_federation_key() + assert isinstance(result, str) + assert result == "" + + +def test_load_federation_key_uses_env_var_override(tmp_path, monkeypatch): + """load_federation_key() reads from MUXPLEX_FEDERATION_KEY_FILE when set.""" + key_file = tmp_path / "custom_key" + key_file.write_text("env-override-key\n") + monkeypatch.setenv("MUXPLEX_FEDERATION_KEY_FILE", str(key_file)) + + result = load_federation_key() + + assert result == "env-override-key"