Beispiel #1
0
def test_websocket_scope_interface():
    """
    A WebSocket can be instantiated with a scope, and presents a `Mapping`
    interface.
    """
    async def mock_receive() -> Message:
        ...  # pragma: no cover

    async def mock_send(message: Message) -> None:
        ...  # pragma: no cover

    websocket = WebSocket(
        {
            "type": "websocket",
            "path": "/abc/",
            "headers": []
        },
        receive=mock_receive,
        send=mock_send,
    )
    assert websocket["type"] == "websocket"
    assert dict(websocket) == {
        "type": "websocket",
        "path": "/abc/",
        "headers": []
    }
    assert len(websocket) == 3
Beispiel #2
0
 async def app_after_close(scope, receive, send):
     websocket = WebSocket(scope, receive=receive, send=send)
     await websocket.accept()
     await websocket.close()
     with pytest.raises(RuntimeError):
         await websocket.send_text("after close")
Beispiel #3
0
 async def app_close(scope, receive, send):
     websocket = WebSocket(scope, receive=receive, send=send)
     await websocket.accept()
     await websocket.close(1001)
Beispiel #4
0
 async def reader(websocket: WebSocket, queue: "asyncio.Queue[str]") -> None:
     async for data in websocket.iter_text():
         await queue.put(data)
Beispiel #5
0
 async def app(websocket: WebSocket) -> None:
     await websocket.accept()
     async for data in websocket.iter_bytes():
         await websocket.send_bytes(b"Message was: " + data)