Skip to content

Commit

Permalink
tests(channels/generic): regression test for double check of text mes…
Browse files Browse the repository at this point in the history
…sage None
  • Loading branch information
cacosandon committed Sep 3, 2024
1 parent dc290fb commit 26fdd81
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions tests/test_generic_websocket.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,3 +485,44 @@ async def connect(self):
assert msg["type"] == "websocket.close"
assert msg["code"] == 4007
assert msg["reason"] == "test reason"

@pytest.mark.django_db
@pytest.mark.asyncio
async def test_websocket_receive_with_none_text():
"""
Tests that the receive method handles messages with None text data correctly.
"""

class TestConsumer(WebsocketConsumer):
def receive(self, text_data=None, bytes_data=None):
if text_data:
self.send(text_data="Received text: " + text_data)
elif bytes_data:
self.send(text_data=f"Received bytes of length: {len(bytes_data)}")

app = TestConsumer()

# Open a connection
communicator = WebsocketCommunicator(app, "/testws/")
connected, _ = await communicator.connect()
assert connected

# Simulate Hypercorn behavior (both 'text' and 'bytes' keys present, but 'text' is None)
await communicator.send_input({"type": "websocket.receive", "text": None, "bytes": b"test data"})
response = await communicator.receive_output()
assert response["type"] == "websocket.send"
assert response["text"] == "Received bytes of length: 9"

# Test with only 'bytes' key (simulating uvicorn/daphne behavior)
await communicator.send_input({"type": "websocket.receive", "bytes": b"more data"})
response = await communicator.receive_output()
assert response["type"] == "websocket.send"
assert response["text"] == "Received bytes of length: 9"

# Test with valid text data
await communicator.send_input({"type": "websocket.receive", "text": "Hello, world!"})
response = await communicator.receive_output()
assert response["type"] == "websocket.send"
assert response["text"] == "Received text: Hello, world!"

await communicator.disconnect()

0 comments on commit 26fdd81

Please sign in to comment.