mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-14 12:12:20 +02:00
42 lines
1.2 KiB
Python
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()
|