summaryrefslogtreecommitdiff
path: root/t/unit/test_serialization.py
diff options
context:
space:
mode:
Diffstat (limited to 't/unit/test_serialization.py')
-rw-r--r--t/unit/test_serialization.py191
1 files changed, 0 insertions, 191 deletions
diff --git a/t/unit/test_serialization.py b/t/unit/test_serialization.py
deleted file mode 100644
index 6d03bde..0000000
--- a/t/unit/test_serialization.py
+++ /dev/null
@@ -1,191 +0,0 @@
-import pytest
-from datetime import datetime
-from decimal import Decimal
-from math import ceil
-from struct import pack
-from amqp.basic_message import Message
-from amqp.exceptions import FrameSyntaxError
-from amqp.serialization import GenericContent, _read_item, dumps, loads
-
-
-class _ANY:
-
- def __eq__(self, other):
- return other is not None
-
- def __ne__(self, other):
- return other is None
-
-
-class test_serialization:
-
- @pytest.mark.parametrize('descr,frame,expected,cast', [
- ('S', b's8thequick', 'thequick', None),
- ('b', b'b' + pack('>B', True), True, None),
- ('B', b'B' + pack('>b', 123), 123, None),
- ('U', b'U' + pack('>h', -321), -321, None),
- ('u', b'u' + pack('>H', 321), 321, None),
- ('i', b'i' + pack('>I', 1234), 1234, None),
- ('L', b'L' + pack('>q', -32451), -32451, None),
- ('l', b'l' + pack('>Q', 32451), 32451, None),
- ('f', b'f' + pack('>f', 33.3), 34.0, ceil),
- ])
- def test_read_item(self, descr, frame, expected, cast):
- actual = _read_item(frame)[0]
- actual = cast(actual) if cast else actual
- assert actual == expected
-
- def test_read_item_V(self):
- assert _read_item(b'V')[0] is None
-
- def test_roundtrip(self):
- format = b'bobBlLbsbST'
- x = dumps(format, [
- True, 32, False, 3415, 4513134, 13241923419,
- True, b'thequickbrownfox', False, 'jumpsoverthelazydog',
- datetime(2015, 3, 13, 10, 23),
- ])
- y = loads(format, x)
- assert [
- True, 32, False, 3415, 4513134, 13241923419,
- True, 'thequickbrownfox', False, 'jumpsoverthelazydog',
- datetime(2015, 3, 13, 10, 23),
- ] == y[0]
-
- def test_int_boundaries(self):
- format = b'F'
- x = dumps(format, [
- {'a': -2147483649, 'b': 2147483648}, # celery/celery#3121
- ])
- y = loads(format, x)
- assert y[0] == [{
- 'a': -2147483649, 'b': 2147483648, # celery/celery#3121
- }]
-
- def test_loads_unknown_type(self):
- with pytest.raises(FrameSyntaxError):
- loads('x', 'asdsad')
-
- def test_float(self):
- assert (int(loads(b'fb', dumps(b'fb', [32.31, False]))[0][0] * 100) ==
- 3231)
-
- def test_table(self):
- table = {'foo': 32, 'bar': 'baz', 'nil': None}
- assert loads(b'F', dumps(b'F', [table]))[0][0] == table
-
- def test_array(self):
- array = [
- 'A', 1, True, 33.3,
- Decimal('55.5'), Decimal('-3.4'),
- datetime(2015, 3, 13, 10, 23),
- {'quick': 'fox', 'amount': 1},
- [3, 'hens'],
- None,
- ]
- expected = list(array)
- expected[6] = _ANY()
-
- assert expected == loads('A', dumps('A', [array]))[0][0]
-
- def test_array_unknown_type(self):
- with pytest.raises(FrameSyntaxError):
- dumps('A', [[object()]])
-
-
-class test_GenericContent:
-
- @pytest.fixture(autouse=True)
- def setup_content(self):
- self.g = GenericContent()
-
- def test_getattr(self):
- self.g.properties['foo'] = 30
- with pytest.raises(AttributeError):
- self.g.__setstate__
- assert self.g.foo == 30
- with pytest.raises(AttributeError):
- self.g.bar
-
- def test_load_properties(self):
- m = Message()
- m.properties = {
- 'content_type': 'application/json',
- 'content_encoding': 'utf-8',
- 'application_headers': {
- 'foo': 1,
- 'id': 'id#1',
- },
- 'delivery_mode': 1,
- 'priority': 255,
- 'correlation_id': 'df31-142f-34fd-g42d',
- 'reply_to': 'cosmo',
- 'expiration': '2015-12-23',
- 'message_id': '3312',
- 'timestamp': 3912491234,
- 'type': 'generic',
- 'user_id': 'george',
- 'app_id': 'vandelay',
- 'cluster_id': 'NYC',
- }
- s = m._serialize_properties()
- m2 = Message()
- m2._load_properties(m2.CLASS_ID, s)
- assert m2.properties == m.properties
-
- def test_load_properties__some_missing(self):
- m = Message()
- m.properties = {
- 'content_type': 'application/json',
- 'content_encoding': 'utf-8',
- 'delivery_mode': 1,
- 'correlation_id': 'df31-142f-34fd-g42d',
- 'reply_to': 'cosmo',
- 'expiration': '2015-12-23',
- 'message_id': '3312',
- 'type': None,
- 'app_id': None,
- 'cluster_id': None,
- }
- s = m._serialize_properties()
- m2 = Message()
- m2._load_properties(m2.CLASS_ID, s)
-
- def test_inbound_header(self):
- m = Message()
- m.properties = {
- 'content_type': 'application/json',
- 'content_encoding': 'utf-8',
- }
- body = 'the quick brown fox'
- buf = b'\0' * 30 + pack('>HxxQ', m.CLASS_ID, len(body))
- buf += m._serialize_properties()
- assert m.inbound_header(buf, offset=30) == 42
- assert m.body_size == len(body)
- assert m.properties['content_type'] == 'application/json'
- assert not m.ready
-
- def test_inbound_header__empty_body(self):
- m = Message()
- m.properties = {}
- buf = pack('>HxxQ', m.CLASS_ID, 0)
- buf += m._serialize_properties()
- assert m.inbound_header(buf, offset=0) == 12
- assert m.ready
-
- def test_inbound_body(self):
- m = Message()
- m.body_size = 16
- m.body_received = 8
- m._pending_chunks = [b'the', b'quick']
- m.inbound_body(b'brown')
- assert not m.ready
- m.inbound_body(b'fox')
- assert m.ready
- assert m.body == b'thequickbrownfox'
-
- def test_inbound_body__no_chunks(self):
- m = Message()
- m.body_size = 16
- m.inbound_body('thequickbrownfox')
- assert m.ready