Merge "Encapsulate top-level lists in responses in object"

This commit is contained in:
Jenkins 2014-08-26 02:02:31 +00:00 committed by Gerrit Code Review
commit 0300181024
8 changed files with 50 additions and 37 deletions

View File

@ -62,8 +62,9 @@ class TestClaims(base.V1_1FunctionalTestBase):
result = self.client.post(params=params, data=doc)
self.assertEqual(result.status_code, 201)
self.assertSchema(result.json(), 'claim_create')
actual_message_count = len(result.json())
actual_message_count = len(result.json()['messages'])
self.assertMessageCount(actual_message_count, message_count)
response_headers = set(result.headers.keys())
@ -151,7 +152,7 @@ class TestClaims(base.V1_1FunctionalTestBase):
self.assertEqual(result.status_code, 201)
# Delete Claimed Messages
for rst in result.json():
for rst in result.json()['messages']:
href = rst['href']
url = self.cfg.zaqar.url + href
result = self.client.delete(url)

View File

@ -122,19 +122,17 @@ class TestMessages(base.V1_1FunctionalTestBase):
result = self.client.get(url)
self.assertEqual(result.status_code, 200)
self.skipTest('Bug #1273335 - Get set of messages returns wrong hrefs '
'(happens randomly)')
# Verify that the response json schema matches the expected schema
self.assertSchema(result.json(), 'message_get_many')
self.skipTest('Bug #1273335 - Get set of messages returns wrong hrefs '
'(happens randomly)')
# Compare message metadata
result_body = [result.json()[i]['body']
for i in range(len(result.json()))]
result_body = [msg['body'] for msg in result.json()['messages']]
result_body.sort()
posted_metadata = [doc[i]['body']
for i in range(message_count)]
posted_metadata = [msg['body'] for msg in doc['messages']]
posted_metadata.sort()
self.assertEqual(result_body, posted_metadata)

View File

@ -60,10 +60,17 @@ class ResponseSchema(api.Api):
self.schema = {
'message_get_many': {
"type": "array",
"items": message,
"minItems": 1,
"maxItems": self.limits.max_messages_per_page
'type': 'object',
'properties': {
'messages': {
"type": "array",
"items": message,
"minItems": 1,
"maxItems": self.limits.max_messages_per_page
}
},
'required': ['messages'],
'additionalProperties': False,
},
'queue_list': {
@ -241,26 +248,33 @@ class ResponseSchema(api.Api):
},
'claim_create': {
"type": "array",
"items": {
"type": "object",
"properties": {
"href": claim_href,
"ttl": {
"type": "number",
"minimum": 1,
"maximum": self.limits.max_message_ttl
'type': 'object',
'properties': {
'messages': {
"type": "array",
"items": {
"type": "object",
"properties": {
"href": claim_href,
"ttl": {
"type": "number",
"minimum": 1,
"maximum": self.limits.max_message_ttl
},
"age": age,
"body": {
"type": "object"
}
},
"required": ["href", "ttl", "age", "body"],
"additionalProperties": False,
},
"age": age,
"body": {
"type": "object"
}
},
"required": ["href", "ttl", "age", "body"],
"additionalProperties": False,
"minItems": 1,
"maxItems": self.limits.max_messages_per_page
}
},
"minItems": 1,
"maxItems": self.limits.max_messages_per_page
'required': ['messages'],
'additionalProperties': False
},
'claim_get': {

View File

@ -110,7 +110,7 @@ class CollectionResource(object):
del msg['id']
resp.location = req.path + '/' + cid
resp.body = utils.to_json(resp_msgs)
resp.body = utils.to_json({'messages': resp_msgs})
resp.status = falcon.HTTP_201
else:
resp.status = falcon.HTTP_204

View File

@ -83,7 +83,7 @@ class CollectionResource(object):
each_message['href'] = base_path + each_message['id']
del each_message['id']
return messages
return {'messages': messages}
def _get(self, req, project_id, queue_name):
client_uuid = wsgi_utils.get_client_uuid(req)

View File

@ -120,7 +120,7 @@ class ClaimsBaseTest(base.V1_1Base):
headers=self.headers)
self.assertEqual(self.srmock.status, falcon.HTTP_201)
claimed = jsonutils.loads(body[0])
claimed = jsonutils.loads(body[0])['messages']
claim_href = self.srmock.headers_dict['Location']
message_href, params = claimed[0]['href'].split('?')

View File

@ -98,7 +98,7 @@ class TestDefaultLimits(base.V1_1Base):
self.assertEqual(self.srmock.status, falcon.HTTP_201)
messages = jsonutils.loads(result[0])
messages = jsonutils.loads(result[0])['messages']
self.assertEqual(len(messages), storage.DEFAULT_MESSAGES_PER_CLAIM)
@contextlib.contextmanager

View File

@ -133,7 +133,7 @@ class MessagesBaseTest(base.V1_1Base):
self.assertEqual(self.srmock.status, falcon.HTTP_200)
result_doc = jsonutils.loads(result[0])
expected_ttls = set(m['ttl'] for m in sample_messages)
actual_ttls = set(m['ttl'] for m in result_doc)
actual_ttls = set(m['ttl'] for m in result_doc['messages'])
self.assertFalse(expected_ttls - actual_ttls)
def test_exceeded_payloads(self):
@ -487,7 +487,7 @@ class MessagesBaseTest(base.V1_1Base):
messages = jsonutils.loads(body[0])
self.assertNotIn(self.queue_path + '/messages/messages',
messages[0]['href'])
messages['messages'][0]['href'])
def _post_messages(self, target, repeat=1):
doc = {'messages': [{'body': 239, 'ttl': 300}] * repeat}