import unittest
from rlm_mcp_server.provider import resolve_provider_config
class TestProviders(unittest.TestCase):
def test_openrouter_preset(self):
env = {"OPENROUTER_HTTP_REFERER": "https://test.com"}
res = resolve_provider_config(provider_preset="openrouter", env=env)
self.assertEqual(res["mode"], "openai_compatible")
self.assertEqual(res["base_url"], "https://openrouter.ai/api/v1")
self.assertEqual(res["api_key_env"], "OPENROUTER_API_KEY")
self.assertEqual(res["default_headers"]["HTTP-Referer"], "https://test.com")
def test_ollama_preset(self):
res = resolve_provider_config(provider_preset="ollama_local")
self.assertEqual(res["base_url"], "http://localhost:11434/v1")
self.assertEqual(res["api_key_env"], "OLLAMA_API_KEY")
def test_litellm_preset(self):
env = {"LITELLM_PROXY_API_BASE": "http://proxy:4000"}
res = resolve_provider_config(provider_preset="litellm_proxy", env=env)
self.assertEqual(res["base_url"], "http://proxy:4000")
self.assertEqual(res["api_key_env"], "LITELLM_PROXY_API_KEY")
def test_explicit_config(self):
provider = {
"mode": "openai_compatible",
"base_url": "http://my-endpoint/v1",
"api_key_env": "MY_KEY"
}
res = resolve_provider_config(provider=provider)
self.assertEqual(res["base_url"], "http://my-endpoint/v1")
self.assertEqual(res["api_key_env"], "MY_KEY")
def test_no_secrets(self):
provider = {"api_key": "sk-123"}
with self.assertRaises(ValueError):
resolve_provider_config(provider=provider)
def test_preset_xor_provider(self):
with self.assertRaises(ValueError):
resolve_provider_config(provider_preset="openrouter", provider={"mode": "openai_cloud"})
if __name__ == "__main__":
unittest.main()