Files
odysseus/tests/test_mcp_manager.py
T

42 lines
1.2 KiB
Python

import asyncio
from unittest.mock import patch
from src.mcp_manager import _format_mcp_connection_error, McpManager
def test_playwright_mcp_connection_error_includes_install_hint():
msg = _format_mcp_connection_error(
"Browser (Playwright)",
"npx",
["-y", "@playwright/mcp@latest", "--headless"],
RuntimeError("package not found"),
)
assert "package not found" in msg
assert "Browser MCP could not start" in msg
assert "npx -y @playwright/mcp@latest --version" in msg
assert "restart Odysseus" in msg
def test_generic_mcp_connection_error_preserves_original_error():
msg = _format_mcp_connection_error(
"Custom MCP",
"python",
["server.py"],
RuntimeError("boom"),
)
assert msg == "boom"
def test_http_transport_routes_to_start_http_connect():
mgr = McpManager()
async def fake_start(server_id, name, url):
return "ROUTED"
with patch.object(McpManager, "_start_http_connect", side_effect=fake_start) as m:
result = asyncio.run(mgr.connect_server("id1", "n", "http", url="https://x/mcp"))
assert result == "ROUTED"
m.assert_called_once()