Skip to content

Commit 95730a7

Browse files
author
Jianke LIN
committed
test(streamable-http): cover closed SSE reader
1 parent 9aad16d commit 95730a7

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

tests/client/test_streamable_http.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import anyio
1616
import httpx
1717
import pytest
18+
from httpx_sse import ServerSentEvent
1819
from inline_snapshot import snapshot
1920
from mcp_types import (
2021
CLIENT_CAPABILITIES_META_KEY,
@@ -183,6 +184,20 @@ async def test_sse_response_disconnect_ignores_closed_read_stream() -> None:
183184
await transport._handle_sse_response(response, ctx)
184185

185186

187+
@pytest.mark.anyio
188+
async def test_sse_message_ignores_closed_read_stream() -> None:
189+
transport = StreamableHTTPTransport("http://example.com/mcp")
190+
read_stream_writer, read_stream = create_context_streams[SessionMessage | Exception](1)
191+
response = JSONRPCResponse(jsonrpc="2.0", id=1, result={})
192+
sse = ServerSentEvent(event="message", data=response.model_dump_json(by_alias=True))
193+
194+
async with read_stream_writer, read_stream:
195+
await read_stream.aclose()
196+
complete = await transport._handle_sse_event(sse, read_stream_writer, original_request_id=1)
197+
198+
assert complete is True
199+
200+
186201
@pytest.mark.anyio
187202
async def test_post_request_merges_per_message_metadata_headers() -> None:
188203
"""`ClientMessageMetadata.headers` on a `SessionMessage` are merged into the outgoing POST headers

0 commit comments

Comments
 (0)