# coding=UTF-8 from __future__ import print_function, absolute_import, division import sys import logging import unittest import io import warnings from coolamqp.framing.definitions import QueueDeclare from coolamqp.objects import NodeDefinition, MessageProperties, Queue, argumentify logger = logging.getLogger(__name__) logging.getLogger('coolamqp').setLevel(logging.DEBUG) class TestObjects(unittest.TestCase): def test_queue_failures(self): self.assertRaises(ValueError, Queue, None, durable=True) self.assertRaises(ValueError, Queue, 'test', auto_delete=True, durable=True) self.assertRaises(ValueError, Queue, None, auto_delete=False) self.assertRaises(ValueError, Queue, 'test', auto_delete=True, exclusive=False) warnings.resetwarnings() with warnings.catch_warnings(record=True) as w: Queue('test', auto_delete=True, exclusive=True) Queue(auto_delete=True, exclusive=False) self.assertEqual(len(w), 2 if sys.version.startswith('3') else 1) self.assertTrue(issubclass(w[0].category, UserWarning)) self.assertTrue(issubclass(w[1].category, DeprecationWarning)) def test_queue_declare(self): args = argumentify({'x-dead-letter-exchange': 'deadletter', 'x-message-ttl': 1000}) qd = QueueDeclare(b'test', False, False, False, False, False, args) buf = io.BytesIO() qd.write_arguments(buf) buf = buf.getvalue() logger.warning(repr(buf)) qd = QueueDeclare.from_buffer(buf, 0) self.assertEqual(qd.queue, b'test') def test_message_properties(self): empty_p_msg = MessageProperties() ce_p_msg = MessageProperties(content_encoding=b'wtf') self.assertIn('wtf', str(ce_p_msg)) def test_node_definition_from_amqp(self): n1 = NodeDefinition(u'amqp://ala:ma@kota/psa') self.assertEqual(n1.user, u'ala') self.assertEqual(n1.password, u'ma') self.assertEqual(n1.virtual_host, u'psa') self.assertEqual(n1.host, u'kota') n1 = NodeDefinition(u'amqp://ala:ma@kota/') self.assertEqual(n1.virtual_host, u'/') def test_get_message_properties(self): empty_p_msg = MessageProperties() ce_p_msg = MessageProperties(content_encoding=b'wtf') self.assertIsNone(empty_p_msg.get('content_encoding'), None) self.assertEqual(ce_p_msg.get('content_encoding', b'wtf'), b'wtf')