Skip to content

Commit 2abc3c1

Browse files
author
Jianke LIN
committed
test(streamable-http): cover closed read stream cleanup
1 parent eef7986 commit 2abc3c1

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

tests/client/test_streamable_http.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,26 @@ async def test_sse_response_disconnect_before_any_event_id_fails_request() -> No
106106
assert message.message.error.code == CONNECTION_CLOSED
107107

108108

109+
@pytest.mark.anyio
110+
async def test_sse_response_disconnect_ignores_closed_read_stream() -> None:
111+
transport = StreamableHTTPTransport("http://example.com/mcp")
112+
async with httpx.AsyncClient() as client:
113+
read_stream_writer, read_stream = create_context_streams[SessionMessage | Exception](1)
114+
request = JSONRPCRequest(jsonrpc="2.0", id=1, method="tools/call", params={"name": "noop", "arguments": {}})
115+
ctx = RequestContext(
116+
client=client,
117+
session_id=None,
118+
session_message=SessionMessage(request),
119+
metadata=None,
120+
read_stream_writer=read_stream_writer,
121+
)
122+
response = httpx.Response(200, headers={"content-type": "text/event-stream"}, content=b"")
123+
124+
async with read_stream_writer, read_stream:
125+
await read_stream.aclose()
126+
await transport._handle_sse_response(response, ctx)
127+
128+
109129
@pytest.mark.anyio
110130
async def test_post_request_merges_per_message_metadata_headers() -> None:
111131
"""`ClientMessageMetadata.headers` on a `SessionMessage` are merged into the outgoing POST headers

0 commit comments

Comments
 (0)