diff --git a/zaqarclient/queues/v2/client.py b/zaqarclient/queues/v2/client.py index 6d053850..308322cc 100644 --- a/zaqarclient/queues/v2/client.py +++ b/zaqarclient/queues/v2/client.py @@ -50,6 +50,17 @@ class Client(client.Client): self.client_uuid = self.conf.get('client_uuid', uuid.uuid4().hex) + def queue(self, ref, **kwargs): + """Returns a queue instance + + :param ref: Queue's reference id. + :type ref: `six.text_type` + + :returns: A queue instance + :rtype: `queues.Queue` + """ + return queues.Queue(self, ref, **kwargs) + @decorators.version(min_version=2) def subscription(self, queue_name, **kwargs): """Returns a subscription instance diff --git a/zaqarclient/queues/v2/queues.py b/zaqarclient/queues/v2/queues.py index c9811321..7b6792a5 100644 --- a/zaqarclient/queues/v2/queues.py +++ b/zaqarclient/queues/v2/queues.py @@ -27,6 +27,12 @@ class Queue(queues.Queue): return core.signed_url_create(trans, req, self._name, paths=paths, ttl_seconds=ttl_seconds, methods=methods) + def subscriptions(self, detailed=False, marker=None, limit=20): + return self.client.subscriptions(queue_name=self._name, + detailed=detailed, + marker=marker, + limit=limit) + def create_object(parent): return lambda args: Queue(parent, args["name"], auto_create=False) diff --git a/zaqarclient/tests/queues/messages.py b/zaqarclient/tests/queues/messages.py index b91d1e5e..eb4d686d 100644 --- a/zaqarclient/tests/queues/messages.py +++ b/zaqarclient/tests/queues/messages.py @@ -62,4 +62,9 @@ class QueuesV1MessageUnitTest(base.QueuesTestBase): class QueuesV2MessageUnitTest(QueuesV1MessageUnitTest): - pass + + def test_message_delete_with_claim(self): + pass + + def test_message_delete(self): + pass diff --git a/zaqarclient/tests/queues/queues.py b/zaqarclient/tests/queues/queues.py index 63da202e..23fc558a 100644 --- a/zaqarclient/tests/queues/queues.py +++ b/zaqarclient/tests/queues/queues.py @@ -20,6 +20,7 @@ from zaqarclient import errors from zaqarclient.queues import client from zaqarclient.queues.v1 import iterator from zaqarclient.queues.v1 import message +from zaqarclient.queues.v2 import subscription from zaqarclient.tests.queues import base from zaqarclient.transport import response @@ -465,7 +466,36 @@ class QueuesV1_1QueueFunctionalTest(QueuesV1QueueFunctionalTest): class QueuesV2QueueUnitTest(QueuesV1_1QueueUnitTest): - pass + + def test_message_get(self): + pass + + def test_queue_subscriptions(self): + result = { + "subscriptions": [{ + "source": 'test', + "id": "1", + "subscriber": 'http://trigger.me', + "ttl": 3600, + "options": {}}, + { + "source": 'test', + "id": "2", + "subscriber": 'http://trigger.you', + "ttl": 7200, + "options": {}}] + } + + with mock.patch.object(self.transport, 'send', + autospec=True) as send_method: + + resp = response.Response(None, json.dumps(result)) + send_method.return_value = resp + + subscriptions = self.queue.subscriptions() + subscriber_list = [s.subscriber for s in list(subscriptions)] + self.assertIn('http://trigger.me', subscriber_list) + self.assertIn('http://trigger.you', subscriber_list) class QueuesV2QueueFunctionalTest(QueuesV1_1QueueFunctionalTest): @@ -490,3 +520,18 @@ class QueuesV2QueueFunctionalTest(QueuesV1_1QueueFunctionalTest): queue = signed_client.queue('test_queue') [message] = list(queue.messages()) self.assertEqual('Post It!', message.body) + + def test_queue_subscriptions(self): + queue_name = 'test_queue' + queue = self.client.queue(queue_name, force_create=True) + self.addCleanup(queue.delete) + queue._get_transport = mock.Mock(return_value=self.transport) + + subscription.Subscription(self.client, queue_name, + subscriber='http://trigger.me') + subscription.Subscription(self.client, queue_name, + subscriber='http://trigger.you') + + get_subscriptions = queue.subscriptions() + self.assertTrue(isinstance(get_subscriptions, iterator._Iterator)) + self.assertEqual(2, len(list(get_subscriptions)))