Skip to content

Commit b11e04f

Browse files
committed
Move tests
1 parent de5d624 commit b11e04f

File tree

2 files changed

+25
-34
lines changed

2 files changed

+25
-34
lines changed

tests/server/test_streamable_http_manager.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
from unittest.mock import AsyncMock, patch
66

77
import anyio
8+
import httpx
89
import pytest
910
from starlette.types import Message
1011

12+
from mcp import types
13+
from mcp.client.session import ClientSession
14+
from mcp.client.streamable_http import streamable_http_client
1115
from mcp.server import streamable_http_manager
1216
from mcp.server.lowlevel import Server
1317
from mcp.server.streamable_http import MCP_SESSION_ID_HEADER, StreamableHTTPServerTransport
@@ -313,3 +317,24 @@ async def mock_receive():
313317
assert error_data["id"] == "server-error"
314318
assert error_data["error"]["code"] == INVALID_REQUEST
315319
assert error_data["error"]["message"] == "Session not found"
320+
321+
322+
@pytest.mark.anyio
323+
async def test_e2e_streamable_http_server_cleanup():
324+
host = "testserver"
325+
app = Server("test-server")
326+
327+
@app.list_tools()
328+
async def list_tools(req: types.ListToolsRequest) -> types.ListToolsResult:
329+
return types.ListToolsResult(tools=[])
330+
331+
mcp_app = app.streamable_http_app(host=host)
332+
async with (
333+
mcp_app.router.lifespan_context(mcp_app),
334+
httpx.ASGITransport(mcp_app) as transport,
335+
httpx.AsyncClient(transport=transport) as client,
336+
streamable_http_client(f"http://{host}/mcp", http_client=client) as (read_stream, write_stream),
337+
ClientSession(read_stream, write_stream) as session,
338+
):
339+
await session.initialize()
340+
await session.list_tools()

tests/server/test_streamable_http_streams_closed.py

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)