diff --git a/tests/unit/queues/v1/test_claims.py b/tests/unit/queues/v1/test_claims.py index a33e9008..1ac62f60 100644 --- a/tests/unit/queues/v1/test_claims.py +++ b/tests/unit/queues/v1/test_claims.py @@ -25,7 +25,7 @@ class QueuesV1ClaimsHttpUnitTest(claims.QueueV1ClaimUnitTest): version = 1 -class QueuesV1_1ClaimsHttpUnitTest(claims.QueueV1ClaimUnitTest): +class QueuesV1_1ClaimsHttpUnitTest(claims.QueueV1_1ClaimUnitTest): transport_cls = http.HttpTransport url = 'http://127.0.0.1:8888/v1.1' diff --git a/zaqarclient/queues/v1/claim.py b/zaqarclient/queues/v1/claim.py index 1ffcc172..d3e34a28 100644 --- a/zaqarclient/queues/v1/claim.py +++ b/zaqarclient/queues/v1/claim.py @@ -59,9 +59,13 @@ class Claim(object): ttl=self._ttl, grace=self._grace, limit=self._limit) + # extract the id from the first message if msgs is not None: + if self._queue.client.api_version >= 1.1: + msgs = msgs['messages'] self.id = msgs[0]['href'].split('=')[-1] + self._message_iter = iterate._Iterator(self._queue.client, msgs or [], 'messages', diff --git a/zaqarclient/tests/queues/claims.py b/zaqarclient/tests/queues/claims.py index f5b78f26..96f6c348 100644 --- a/zaqarclient/tests/queues/claims.py +++ b/zaqarclient/tests/queues/claims.py @@ -137,3 +137,33 @@ class QueuesV1ClaimFunctionalTest(base.QueuesTestBase): claim_id = cl.id cl.delete() self.assertRaises(errors.ResourceNotFound, queue.claim, id=claim_id) + + +class QueueV1_1ClaimUnitTest(QueueV1ClaimUnitTest): + + def test_claim(self): + result = [{ + 'href': '/v1/queues/fizbit/messages/50b68a50d6f5b8c8a7c62b01', + 'ttl': 800, + 'age': 790, + 'body': {'event': 'ActivateAccount', 'mode': 'active'} + }, { + 'href': '/v1/queues/fizbit/messages/50b68a50d6f5b8c8a7c62b02', + 'ttl': 800, + 'age': 790, + 'body': {'event': 'ActivateAccount', 'mode': 'active'} + }] + + with mock.patch.object(self.transport, 'send', + autospec=True) as send_method: + + resp = response.Response(None, json.dumps({'messages': result})) + send_method.return_value = resp + + claimed = self.queue.claim(ttl=60, grace=60) + # messages doesn't support len() + num_tested = 0 + for num, msg in enumerate(claimed): + num_tested += 1 + self.assertEqual(result[num]['href'], msg.href) + self.assertEqual(len(result), num_tested)