summaryrefslogtreecommitdiffhomepage
path: root/test/python
diff options
context:
space:
mode:
authorMax Romanov <max.romanov@nginx.com>2020-10-01 23:55:35 +0300
committerMax Romanov <max.romanov@nginx.com>2020-10-01 23:55:35 +0300
commitd97e3a3296db77f6a33ce010a66d2a0b2d4bac49 (patch)
tree833dd50180cbd5bffe43c71f50b0fdf3bd8e8bc2 /test/python
parentc4c2f90c5b532c1ec283d211e0fd50e4538c2a51 (diff)
downloadunit-d97e3a3296db77f6a33ce010a66d2a0b2d4bac49.tar.gz
unit-d97e3a3296db77f6a33ce010a66d2a0b2d4bac49.tar.bz2
Tests: added ASGI WebSocket.
Diffstat (limited to 'test/python')
-rw-r--r--test/python/websockets/mirror/asgi.py18
-rw-r--r--test/python/websockets/subprotocol/asgi.py25
2 files changed, 43 insertions, 0 deletions
diff --git a/test/python/websockets/mirror/asgi.py b/test/python/websockets/mirror/asgi.py
new file mode 100644
index 00000000..0f1d9953
--- /dev/null
+++ b/test/python/websockets/mirror/asgi.py
@@ -0,0 +1,18 @@
+async def application(scope, receive, send):
+ if scope['type'] == 'websocket':
+ while True:
+ m = await receive()
+ if m['type'] == 'websocket.connect':
+ await send({
+ 'type': 'websocket.accept',
+ })
+
+ if m['type'] == 'websocket.receive':
+ await send({
+ 'type': 'websocket.send',
+ 'bytes': m.get('bytes', None),
+ 'text': m.get('text', None),
+ })
+
+ if m['type'] == 'websocket.disconnect':
+ break;
diff --git a/test/python/websockets/subprotocol/asgi.py b/test/python/websockets/subprotocol/asgi.py
new file mode 100644
index 00000000..92263dd7
--- /dev/null
+++ b/test/python/websockets/subprotocol/asgi.py
@@ -0,0 +1,25 @@
+async def application(scope, receive, send):
+ assert scope['type'] == 'websocket'
+
+ while True:
+ m = await receive()
+ if m['type'] == 'websocket.connect':
+ subprotocols = scope['subprotocols']
+
+ await send({
+ 'type': 'websocket.accept',
+ 'headers': [
+ (b'x-subprotocols', str(subprotocols).encode()),
+ ],
+ 'subprotocol': subprotocols[0],
+ })
+
+ if m['type'] == 'websocket.receive':
+ await send({
+ 'type': 'websocket.send',
+ 'bytes': m.get('bytes', None),
+ 'text': m.get('text', None),
+ })
+
+ if m['type'] == 'websocket.disconnect':
+ break;