Cover active vision model API keys

Alessandro committed Aug 25, 2026 at 19:25 UTC 2ab8644859c25e04809533128d606d20e1e83779
1 file changed +30
tests/test_model_config_api_keys.py
+30
@@ -89,6 +89,36 @@ def test_chat_model_configured_requires_identity_and_key(monkeypatch):
89 )
90
91
92 +def test_missing_api_key_checks_only_the_active_vision_model(monkeypatch):
93 + from plugins._model_config.helpers import model_config
94 +
95 + config = {
96 + "chat_model": {"provider": "ollama", "name": "text-main"},
97 + "vision_model": {"provider": "openai", "name": "vision"},
98 + "utility_model": {"provider": "ollama", "name": "utility"},
99 + "embedding_model": {
100 + "provider": "huggingface",
101 + "name": "sentence-transformers/all-MiniLM-L6-v2",
102 + },
103 + }
104 + active = False
105 + monkeypatch.setattr(model_config, "get_effective_config", lambda _agent=None: config)
106 + monkeypatch.setattr(
107 + model_config,
108 + "get_embedding_model_config",
109 + lambda _agent=None: config["embedding_model"],
110 + )
111 + monkeypatch.setattr(model_config, "use_vision_sidecar", lambda _agent=None: active)
112 + monkeypatch.setattr(model_config, "has_provider_api_key", lambda *args: False)
113 +
114 + assert model_config.get_missing_api_key_providers() == []
115 +
116 + active = True
117 + assert model_config.get_missing_api_key_providers() == [
118 + {"model_type": "Vision Model", "provider": "openai"}
119 + ]
120 +
121 +
122 @pytest.mark.asyncio
123 async def test_missing_api_key_banner_exposes_only_effective_missing_providers(monkeypatch):
124 from plugins._model_config.helpers import model_config