mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-30 03:39:38 +02:00
49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
"""Sync HTTP/SSE transport tests."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import httpx
|
|
import pytest
|
|
|
|
from langgraph_sdk.stream.transport.sync_http import SyncProtocolSseTransport
|
|
from streaming._events import values_event
|
|
from streaming._sync_fake_server import SyncFakeServer
|
|
|
|
|
|
def test_sync_transport_sends_command():
|
|
fake = SyncFakeServer()
|
|
with httpx.Client(transport=fake.transport, base_url="http://test") as raw:
|
|
transport = SyncProtocolSseTransport(client=raw, thread_id="t-1")
|
|
result = transport.send_command(
|
|
{"id": 1, "method": "run.start", "params": {"assistant_id": "agent"}}
|
|
)
|
|
|
|
assert result == {"type": "success", "id": 1, "result": {"run_id": "run-1"}}
|
|
assert fake.received_commands[0]["method"] == "run.start"
|
|
|
|
|
|
def test_sync_transport_streams_events():
|
|
fake = SyncFakeServer()
|
|
fake.script([values_event(seq=1, counter=1)])
|
|
with httpx.Client(transport=fake.transport, base_url="http://test") as raw:
|
|
transport = SyncProtocolSseTransport(client=raw, thread_id="t-1")
|
|
handle = transport.open_event_stream({"channels": ["values"]})
|
|
events = list(handle.events)
|
|
|
|
assert events == [values_event(seq=1, counter=1)]
|
|
assert fake.stream_request_bodies == [{"channels": ["values"]}]
|
|
|
|
|
|
def test_sync_open_event_stream_records_post_ready_error():
|
|
fake = SyncFakeServer()
|
|
fake.script([values_event(seq=1)], fail_after=1)
|
|
with httpx.Client(transport=fake.transport, base_url="http://test") as raw:
|
|
sse = SyncProtocolSseTransport(client=raw, thread_id="t-1")
|
|
handle = sse.open_event_stream({"channels": ["values"]})
|
|
with pytest.raises(httpx.ReadError, match="scripted sync stream failure"):
|
|
list(handle.events)
|
|
err = handle.error()
|
|
handle.close()
|
|
|
|
assert isinstance(err, httpx.ReadError)
|