Skip to content

Commit 6089dd0

Browse files
committed
test: serializer_args tests
1 parent 5bb11b6 commit 6089dd0

File tree

4 files changed

+116
-0
lines changed

4 files changed

+116
-0
lines changed

tests/async/test_client.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import asyncio
22
from unittest import mock
3+
from datetime import datetime, timezone, timedelta
34

45
import pytest
56

@@ -1242,3 +1243,31 @@ async def test_eio_disconnect_no_reconnect(self):
12421243
assert c.sid is None
12431244
assert not c.connected
12441245
c.start_background_task.assert_not_called()
1246+
1247+
def test_serializer_args(self):
1248+
args = {"foo": "bar"}
1249+
c = async_client.AsyncClient(serializer_args=args)
1250+
assert c.packet_class_args == args
1251+
1252+
def test_serializer_args_with_msgpack(self):
1253+
def default(o):
1254+
if isinstance(o, datetime):
1255+
return o.isoformat()
1256+
raise TypeError("Unknown type")
1257+
args = {"dumps_default": default}
1258+
data = {"current": datetime.now(timezone(timedelta(0)))}
1259+
c = async_client.AsyncClient(serializer='msgpack', serializer_args=args)
1260+
p = c._create_packet(data=data)
1261+
p2 = c._create_packet(encoded_packet=p.encode())
1262+
1263+
assert p.data != p2.data
1264+
assert isinstance(p2.data, dict)
1265+
assert "current" in p2.data
1266+
assert isinstance(p2.data["current"], str)
1267+
assert default(data["current"]) == p2.data["current"]
1268+
1269+
def test_invalid_serializer_args(self):
1270+
args = {"invalid_arg": 123}
1271+
c = async_client.AsyncClient(serializer='msgpack', serializer_args=args)
1272+
with pytest.raises(TypeError):
1273+
c._create_packet(data={"foo": "bar"}).encode()

tests/async/test_server.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import asyncio
22
import logging
33
from unittest import mock
4+
from datetime import datetime, timezone, timedelta
45

56
from engineio import json
67
from engineio import packet as eio_packet
@@ -1089,3 +1090,31 @@ async def test_sleep(self, eio):
10891090
s = async_server.AsyncServer()
10901091
await s.sleep(1.23)
10911092
s.eio.sleep.assert_awaited_once_with(1.23)
1093+
1094+
def test_serializer_args(self, eio):
1095+
args = {"foo": "bar"}
1096+
s = async_server.AsyncServer(serializer_args=args)
1097+
assert s.packet_class_args == args
1098+
1099+
def test_serializer_args_with_msgpack(self, eio):
1100+
def default(o):
1101+
if isinstance(o, datetime):
1102+
return o.isoformat()
1103+
raise TypeError("Unknown type")
1104+
args = {"dumps_default": default}
1105+
data = {"current": datetime.now(timezone(timedelta(0)))}
1106+
s = async_server.AsyncServer(serializer='msgpack', serializer_args=args)
1107+
p = s._create_packet(data=data)
1108+
p2 = s._create_packet(encoded_packet=p.encode())
1109+
1110+
assert p.data != p2.data
1111+
assert isinstance(p2.data, dict)
1112+
assert "current" in p2.data
1113+
assert isinstance(p2.data["current"], str)
1114+
assert default(data["current"]) == p2.data["current"]
1115+
1116+
def test_invalid_serializer_args(self, eio):
1117+
args = {"invalid_arg": 123}
1118+
s = async_server.AsyncServer(serializer='msgpack', serializer_args=args)
1119+
with pytest.raises(TypeError):
1120+
s._create_packet(data={"foo": "bar"}).encode()

tests/common/test_client.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import logging
22
import time
33
from unittest import mock
4+
from datetime import datetime, timezone, timedelta
45

56
from engineio import exceptions as engineio_exceptions
67
from engineio import json
@@ -1386,3 +1387,31 @@ def test_eio_disconnect_no_reconnect(self):
13861387
assert c.sid is None
13871388
assert not c.connected
13881389
c.start_background_task.assert_not_called()
1390+
1391+
def test_serializer_args(self):
1392+
args = {"foo": "bar"}
1393+
c = client.Client(serializer_args=args)
1394+
assert c.packet_class_args == args
1395+
1396+
def test_serializer_args_with_msgpack(self):
1397+
def default(o):
1398+
if isinstance(o, datetime):
1399+
return o.isoformat()
1400+
raise TypeError("Unknown type")
1401+
args = {"dumps_default": default}
1402+
data = {"current": datetime.now(timezone(timedelta(0)))}
1403+
c = client.Client(serializer='msgpack', serializer_args=args)
1404+
p = c._create_packet(data=data)
1405+
p2 = c._create_packet(encoded_packet=p.encode())
1406+
1407+
assert p.data != p2.data
1408+
assert isinstance(p2.data, dict)
1409+
assert "current" in p2.data
1410+
assert isinstance(p2.data["current"], str)
1411+
assert default(data["current"]) == p2.data["current"]
1412+
1413+
def test_invalid_serializer_args(self):
1414+
args = {"invalid_arg": 123}
1415+
c = client.Client(serializer='msgpack', serializer_args=args)
1416+
with pytest.raises(TypeError):
1417+
c._create_packet(data={"foo": "bar"}).encode()

tests/common/test_server.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import logging
22
from unittest import mock
3+
from datetime import datetime, timezone, timedelta
34

45
from engineio import json
56
from engineio import packet as eio_packet
@@ -1032,3 +1033,31 @@ def test_sleep(self, eio):
10321033
s = server.Server()
10331034
s.sleep(1.23)
10341035
s.eio.sleep.assert_called_once_with(1.23)
1036+
1037+
def test_serializer_args(self, eio):
1038+
args = {"foo": "bar"}
1039+
s = server.Server(serializer_args=args)
1040+
assert s.packet_class_args == args
1041+
1042+
def test_serializer_args_with_msgpack(self, eio):
1043+
def default(o):
1044+
if isinstance(o, datetime):
1045+
return o.isoformat()
1046+
raise TypeError("Unknown type")
1047+
args = {"dumps_default": default}
1048+
data = {"current": datetime.now(timezone(timedelta(0)))}
1049+
s = server.Server(serializer='msgpack', serializer_args=args)
1050+
p = s._create_packet(data=data)
1051+
p2 = s._create_packet(encoded_packet=p.encode())
1052+
1053+
assert p.data != p2.data
1054+
assert isinstance(p2.data, dict)
1055+
assert "current" in p2.data
1056+
assert isinstance(p2.data["current"], str)
1057+
assert default(data["current"]) == p2.data["current"]
1058+
1059+
def test_invalid_serializer_args(self, eio):
1060+
args = {"invalid_arg": 123}
1061+
s = server.Server(serializer='msgpack', serializer_args=args)
1062+
with pytest.raises(TypeError):
1063+
s._create_packet(data={"foo": "bar"}).encode()

0 commit comments

Comments
 (0)