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 import asyncio
from unittest import mock from unittest import mock
from datetime import datetime, timezone, timedelta
import pytest import pytest
@ -1242,3 +1243,31 @@ class TestAsyncClient:
assert c.sid is None assert c.sid is None
assert not c.connected assert not c.connected
c.start_background_task.assert_not_called() 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 asyncio
import logging import logging
from unittest import mock from unittest import mock
from datetime import datetime, timezone, timedelta
from engineio import json from engineio import json
from engineio import packet as eio_packet from engineio import packet as eio_packet
@ -1089,3 +1090,31 @@ class TestAsyncServer:
s = async_server.AsyncServer() s = async_server.AsyncServer()
await s.sleep(1.23) await s.sleep(1.23)
s.eio.sleep.assert_awaited_once_with(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 logging
import time import time
from unittest import mock from unittest import mock
from datetime import datetime, timezone, timedelta
from engineio import exceptions as engineio_exceptions from engineio import exceptions as engineio_exceptions
from engineio import json from engineio import json
@ -1386,3 +1387,31 @@ class TestClient:
assert c.sid is None assert c.sid is None
assert not c.connected assert not c.connected
c.start_background_task.assert_not_called() 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 import logging
from unittest import mock from unittest import mock
from datetime import datetime, timezone, timedelta
from engineio import json from engineio import json
from engineio import packet as eio_packet from engineio import packet as eio_packet
@ -1032,3 +1033,31 @@ class TestServer:
s = server.Server() s = server.Server()
s.sleep(1.23) s.sleep(1.23)
s.eio.sleep.assert_called_once_with(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