From 369ac1ebb45a22510c5b0df3deff3c5797053f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Victoria=20Mart=C3=ADnez=20de=20la=20Cruz?= Date: Tue, 21 Oct 2014 14:26:28 -0300 Subject: [PATCH] Adds encapsulation control to the client https://review.openstack.org/#/c/108795/ adds the requirement to encapsulate messages in JSON objects in API v1.1 This change adds that control to the Zaqar client maintaining backwards compatibility with v1 Change-Id: I1723b843320ebcf2722fb4f6fcaaa6e1c63248e9 --- tests/unit/queues/v1/test_core.py | 21 +++++++++++++++++++-- zaqarclient/queues/v1/queues.py | 3 +++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/tests/unit/queues/v1/test_core.py b/tests/unit/queues/v1/test_core.py index 7919fa54..fff515ee 100644 --- a/tests/unit/queues/v1/test_core.py +++ b/tests/unit/queues/v1/test_core.py @@ -98,8 +98,25 @@ class TestV1Core(base.TestBase): result = core.queue_get_stats(self.transport, req, 'test') self.assertEqual(result, {}) - def test_message_post(self): - messages = [{'ttl': 30, 'body': 'Post It!'}] + def test_message_post_one(self): + messages = {'ttl': 30, 'body': 'Post one!'} + + with mock.patch.object(self.transport, 'send', + autospec=True) as send_method: + resp = response.Response(None, '{}') + send_method.return_value = resp + + req = request.Request() + + core.message_post(self.transport, req, 'test', messages) + self.assertIn('queue_name', req.params) + self.assertEqual(json.loads(req.content), + messages) + + def test_message_post_many(self): + messages = [{'ttl': 30, 'body': 'Post one!'}, + {'ttl': 30, 'body': 'Post two!'}, + {'ttl': 30, 'body': 'Post three!'}, ] with mock.patch.object(self.transport, 'send', autospec=True) as send_method: diff --git a/zaqarclient/queues/v1/queues.py b/zaqarclient/queues/v1/queues.py index 367febc4..64e04b33 100644 --- a/zaqarclient/queues/v1/queues.py +++ b/zaqarclient/queues/v1/queues.py @@ -108,6 +108,9 @@ class Queue(object): if not isinstance(messages, list): messages = [messages] + if self.client.api_version >= 1.1: + messages = {'messages': messages} + req, trans = self.client._request_and_transport() # TODO(flaper87): Return a list of messages