MCPcopy Create free account
hub / github.com/encode/starlette / test_websocket_route_middleware

Function test_websocket_route_middleware

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

Source from the content-addressed store, hash-verified

1047
1048
1049def test_websocket_route_middleware(
1050 test_client_factory: TestClientFactory,
1051) -> None:
1052 async def websocket_endpoint(session: WebSocket) -> None:
1053 await session.accept()
1054 await session.send_text("Hello, world!")
1055 await session.close()
1056
1057 class WebsocketMiddleware:
1058 def __init__(self, app: ASGIApp) -> None:
1059 self.app = app
1060
1061 async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
1062 async def modified_send(msg: Message) -> None:
1063 if msg["type"] == "websocket.accept":
1064 msg["headers"].append((b"X-Test", b"Set by middleware"))
1065 await send(msg)
1066
1067 await self.app(scope, receive, modified_send)
1068
1069 app = Starlette(
1070 routes=[
1071 WebSocketRoute(
1072 "/ws",
1073 endpoint=websocket_endpoint,
1074 middleware=[Middleware(WebsocketMiddleware)],
1075 )
1076 ]
1077 )
1078
1079 client = test_client_factory(app)
1080
1081 with client.websocket_connect("/ws") as websocket:
1082 text = websocket.receive_text()
1083 assert text == "Hello, world!"
1084 assert websocket.extra_headers == [(b"X-Test", b"Set by middleware")]
1085
1086
1087def 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