27 lines
902 B
Python
27 lines
902 B
Python
"""Transport-level tests for the mcp-maildir ASGI app.
|
|||
|
|
|
||
|
|
Current MCP clients (OpenCode, Claude, ...) only speak Streamable HTTP: they
|
||
|
|
POST JSON-RPC to the configured URL. Serving the legacy SSE transport alone
|
||
|
|
makes those clients fail with `405 Method Not Allowed`, so the app built by
|
||
|
|
`server.build_app()` must expose the MCP endpoint at /mcp.
|
||
|
|
|
||
|
|
Env vars are set in tests/conftest.py (shared session-wide).
|
||
|
|
"""
|
||
|
|
|
||
|
|
from server import build_app, MCP_HTTP_PATH
|
||
|
|
|
||
|
|
|
||
|
|
def app_paths() -> set:
|
||
|
|
return {getattr(route, "path", None) for route in build_app().routes}
|
||
|
|
|
||
|
|
|
||
|
|
class TestTransport:
|
||
|
|
def test_mcp_endpoint_is_streamable_http(self):
|
||
|
|
assert MCP_HTTP_PATH == "/mcp"
|
||
|
|
assert MCP_HTTP_PATH in app_paths()
|
||
|
|
|
||
|
|
def test_health_endpoint_is_exposed_for_probes(self):
|
||
|
|
assert "/health" in app_paths()
|
||
|
|
|
||
|
|
def test_legacy_sse_endpoint_is_gone(self):
|
||
|
|
assert "/sse" not in app_paths()
|