Browse Source

test: serializer_args tests

pull/1521/head
phi 7 months ago
parent
commit
6089dd0b9e
  1. 29
      tests/async/test_client.py
  2. 29
      tests/async/test_server.py
  3. 29
      tests/common/test_client.py
  4. 29
      tests/common/test_server.py

29
tests/async/test_client.py

@ -1,5 +1,6 @@
import asyncio
from unittest import mock
from datetime import datetime, timezone, timedelta
import pytest
@ -1242,3 +1243,31 @@ class TestAsyncClient:
assert c.sid is None
assert not c.connected
c.start_background_task.assert_not_called()
def test_serializer_args(self):
args = {"foo": "bar"}
c = async_client.AsyncClient(serializer_args=args)
assert c.packet_class_args == args
def test_serializer_args_with_msgpack(self):
def default(o):
if isinstance(o, datetime):
return o.isoformat()
raise TypeError("Unknown type")
args = {"dumps_default": default}
data = {"current": datetime.now(timezone(timedelta(0)))}
c = async_client.AsyncClient(serializer='msgpack', serializer_args=args)
p = c._create_packet(data=data)
p2 = c._create_packet(encoded_packet=p.encode())
assert p.data != p2.data
assert isinstance(p2.data, dict)
assert "current" in p2.data
assert isinstance(p2.data["current"], str)
assert default(data["current"]) == p2.data["current"]
def test_invalid_serializer_args(self):
args = {"invalid_arg": 123}
c = async_client.AsyncClient(serializer='msgpack', serializer_args=args)
with pytest.raises(TypeError):
c._create_packet(data={"foo": "bar"}).encode()

29
tests/async/test_server.py

@ -1,6 +1,7 @@
import asyncio
import logging
from unittest import mock
from datetime import datetime, timezone, timedelta
from engineio import json
from engineio import packet as eio_packet
@ -1089,3 +1090,31 @@ class TestAsyncServer:
s = async_server.AsyncServer()
await s.sleep(1.23)
s.eio.sleep.assert_awaited_once_with(1.23)
def test_serializer_args(self, eio):
args = {"foo": "bar"}
s = async_server.AsyncServer(serializer_args=args)
assert s.packet_class_args == args
def test_serializer_args_with_msgpack(self, eio):
def default(o):
if isinstance(o, datetime):
return o.isoformat()
raise TypeError("Unknown type")
args = {"dumps_default": default}
data = {"current": datetime.now(timezone(timedelta(0)))}
s = async_server.AsyncServer(serializer='msgpack', serializer_args=args)
p = s._create_packet(data=data)
p2 = s._create_packet(encoded_packet=p.encode())
assert p.data != p2.data
assert isinstance(p2.data, dict)
assert "current" in p2.data
assert isinstance(p2.data["current"], str)
assert default(data["current"]) == p2.data["current"]
def test_invalid_serializer_args(self, eio):
args = {"invalid_arg": 123}
s = async_server.AsyncServer(serializer='msgpack', serializer_args=args)
with pytest.raises(TypeError):
s._create_packet(data={"foo": "bar"}).encode()

29
tests/common/test_client.py

@ -1,6 +1,7 @@
import logging
import time
from unittest import mock
from datetime import datetime, timezone, timedelta
from engineio import exceptions as engineio_exceptions
from engineio import json
@ -1386,3 +1387,31 @@ class TestClient:
assert c.sid is None
assert not c.connected
c.start_background_task.assert_not_called()
def test_serializer_args(self):
args = {"foo": "bar"}
c = client.Client(serializer_args=args)
assert c.packet_class_args == args
def test_serializer_args_with_msgpack(self):
def default(o):
if isinstance(o, datetime):
return o.isoformat()
raise TypeError("Unknown type")
args = {"dumps_default": default}
data = {"current": datetime.now(timezone(timedelta(0)))}
c = client.Client(serializer='msgpack', serializer_args=args)
p = c._create_packet(data=data)
p2 = c._create_packet(encoded_packet=p.encode())
assert p.data != p2.data
assert isinstance(p2.data, dict)
assert "current" in p2.data
assert isinstance(p2.data["current"], str)
assert default(data["current"]) == p2.data["current"]
def test_invalid_serializer_args(self):
args = {"invalid_arg": 123}
c = client.Client(serializer='msgpack', serializer_args=args)
with pytest.raises(TypeError):
c._create_packet(data={"foo": "bar"}).encode()

29
tests/common/test_server.py

@ -1,5 +1,6 @@
import logging
from unittest import mock
from datetime import datetime, timezone, timedelta
from engineio import json
from engineio import packet as eio_packet
@ -1032,3 +1033,31 @@ class TestServer:
s = server.Server()
s.sleep(1.23)
s.eio.sleep.assert_called_once_with(1.23)
def test_serializer_args(self, eio):
args = {"foo": "bar"}
s = server.Server(serializer_args=args)
assert s.packet_class_args == args
def test_serializer_args_with_msgpack(self, eio):
def default(o):
if isinstance(o, datetime):
return o.isoformat()
raise TypeError("Unknown type")
args = {"dumps_default": default}
data = {"current": datetime.now(timezone(timedelta(0)))}
s = server.Server(serializer='msgpack', serializer_args=args)
p = s._create_packet(data=data)
p2 = s._create_packet(encoded_packet=p.encode())
assert p.data != p2.data
assert isinstance(p2.data, dict)
assert "current" in p2.data
assert isinstance(p2.data["current"], str)
assert default(data["current"]) == p2.data["current"]
def test_invalid_serializer_args(self, eio):
args = {"invalid_arg": 123}
s = server.Server(serializer='msgpack', serializer_args=args)
with pytest.raises(TypeError):
s._create_packet(data={"foo": "bar"}).encode()
Loading…
Cancel
Save