MCPcopy
hub / github.com/encode/starlette / test_websocket_route_middleware

Function test_websocket_route_middleware

tests/test_routing.py:991–1026  ·  view source on GitHub ↗
(
    test_client_factory: TestClientFactory,
)

Source from the content-addressed store, hash-verified

989
990
991def test_websocket_route_middleware(
992 test_client_factory: TestClientFactory,
993) -> None:
994 async def websocket_endpoint(session: WebSocket) -> None:
995 await session.accept()
996 await session.send_text("Hello, world!")
997 await session.close()
998
999 class WebsocketMiddleware:
1000 def __init__(self, app: ASGIApp) -> None:
1001 self.app = app
1002
1003 async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
1004 async def modified_send(msg: Message) -> None:
1005 if msg["type"] == "websocket.accept":
1006 msg["headers"].append((b"X-Test", b"Set by middleware"))
1007 await send(msg)
1008
1009 await self.app(scope, receive, modified_send)
1010
1011 app = Starlette(
1012 routes=[
1013 WebSocketRoute(
1014 "/ws",
1015 endpoint=websocket_endpoint,
1016 middleware=[Middleware(WebsocketMiddleware)],
1017 )
1018 ]
1019 )
1020
1021 client = test_client_factory(app)
1022
1023 with client.websocket_connect("/ws") as websocket:
1024 text = websocket.receive_text()
1025 assert text == "Hello, world!"
1026 assert websocket.extra_headers == [(b"X-Test", b"Set by middleware")]
1027
1028
1029def test_route_repr() -> None:

Callers

nothing calls this directly

Calls 6

StarletteClass · 0.90
WebSocketRouteClass · 0.90
MiddlewareClass · 0.90
test_client_factoryFunction · 0.85
websocket_connectMethod · 0.80
receive_textMethod · 0.45

Tested by

no test coverage detected