mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-07-11 18:20:30 +00:00
57 lines
2.5 KiB
Python
57 lines
2.5 KiB
Python
"""Regression tests for shared OpenCode API key runtime lookup (#3145)."""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.parametrize("provider_id", ["opencode-zen", "opencode-go"])
|
|
def test_shared_opencode_api_key_resolves_for_runtime(monkeypatch, tmp_path, provider_id):
|
|
"""Runtime-facing key lookup should honor OPENCODE_API_KEY for both groups."""
|
|
import api.providers as providers
|
|
|
|
hermes_home = tmp_path / "hermes-home"
|
|
hermes_home.mkdir()
|
|
(hermes_home / ".env").write_text("OPENCODE_API_KEY=shared-opencode-key\n", encoding="utf-8")
|
|
|
|
monkeypatch.setattr(providers, "_get_hermes_home", lambda: hermes_home)
|
|
monkeypatch.delenv("OPENCODE_ZEN_API_KEY", raising=False)
|
|
monkeypatch.delenv("OPENCODE_GO_API_KEY", raising=False)
|
|
monkeypatch.delenv("OPENCODE_API_KEY", raising=False)
|
|
|
|
assert providers._provider_has_key(provider_id) is True
|
|
assert providers._get_provider_api_key(provider_id) == "shared-opencode-key"
|
|
|
|
|
|
@pytest.mark.parametrize("provider_id", ["opencode-zen", "opencode-go"])
|
|
def test_shared_opencode_api_key_resolves_from_process_env(monkeypatch, tmp_path, provider_id):
|
|
"""The shared env var should work even when no .env file exists."""
|
|
import api.providers as providers
|
|
|
|
monkeypatch.setattr(providers, "_get_hermes_home", lambda: tmp_path / "missing-home")
|
|
monkeypatch.delenv("OPENCODE_ZEN_API_KEY", raising=False)
|
|
monkeypatch.delenv("OPENCODE_GO_API_KEY", raising=False)
|
|
monkeypatch.setenv("OPENCODE_API_KEY", "shared-env-opencode-key")
|
|
|
|
assert providers._provider_has_key(provider_id) is True
|
|
assert providers._get_provider_api_key(provider_id) == "shared-env-opencode-key"
|
|
|
|
|
|
def test_provider_specific_opencode_key_still_wins_over_shared(monkeypatch, tmp_path):
|
|
"""Provider-specific env vars keep precedence over the shared fallback."""
|
|
import api.providers as providers
|
|
|
|
hermes_home = tmp_path / "hermes-home"
|
|
hermes_home.mkdir()
|
|
(hermes_home / ".env").write_text(
|
|
"OPENCODE_API_KEY=shared-opencode-key\n"
|
|
"OPENCODE_ZEN_API_KEY=zen-specific-key\n",
|
|
encoding="utf-8",
|
|
)
|
|
|
|
monkeypatch.setattr(providers, "_get_hermes_home", lambda: hermes_home)
|
|
monkeypatch.delenv("OPENCODE_API_KEY", raising=False)
|
|
monkeypatch.delenv("OPENCODE_ZEN_API_KEY", raising=False)
|
|
monkeypatch.delenv("OPENCODE_GO_API_KEY", raising=False)
|
|
|
|
assert providers._get_provider_api_key("opencode-zen") == "zen-specific-key"
|
|
assert providers._get_provider_api_key("opencode-go") == "shared-opencode-key"
|