Merge "Slighty refactored url_prefix usage in WSGI tests"

This commit is contained in:
Jenkins 2014-03-07 20:37:36 +00:00 committed by Gerrit Code Review
commit e218b3ad92
2 changed files with 77 additions and 69 deletions

View File

@ -31,11 +31,12 @@ class TestDefaultLimits(base.TestBase):
def setUp(self):
super(TestDefaultLimits, self).setUp()
self.queue_path = self.url_prefix + '/queues/q1'
self.messages_path = self.queue_path + '/messages'
self.claims_path = self.queue_path + '/claims'
self.queue_path = self.url_prefix + '/queues'
self.q1_queue_path = self.queue_path + '/q1'
self.messages_path = self.q1_queue_path + '/messages'
self.claims_path = self.q1_queue_path + '/claims'
self.simulate_put(self.queue_path)
self.simulate_put(self.q1_queue_path)
def tearDown(self):
self.simulate_delete(self.queue_path)
@ -43,11 +44,11 @@ class TestDefaultLimits(base.TestBase):
def test_queue_listing(self):
# 2 queues to list
self.simulate_put(self.url_prefix + '/queues/q2')
self.simulate_put(self.queue_path + '/q2')
self.assertEqual(self.srmock.status, falcon.HTTP_201)
with self._prepare_queues(storage.DEFAULT_QUEUES_PER_PAGE + 1):
result = self.simulate_get(self.url_prefix + '/queues')
result = self.simulate_get(self.queue_path)
self.assertEqual(self.srmock.status, falcon.HTTP_200)
queues = json.loads(result[0])['queues']
@ -77,7 +78,7 @@ class TestDefaultLimits(base.TestBase):
@contextlib.contextmanager
def _prepare_queues(self, count):
queue_paths = [self.url_prefix + '/queues/multi-{0}'.format(i)
queue_paths = [self.queue_path + '/multi-{0}'.format(i)
for i in range(count)]
for path in queue_paths:

View File

@ -32,92 +32,100 @@ class QueueLifecycleBaseTest(base.TestBase):
def setUp(self):
super(QueueLifecycleBaseTest, self).setUp()
self.queue_path = self.url_prefix + '/queues'
self.gumshoe_queue_path = self.queue_path + '/gumshoe'
self.fizbat_queue_path = self.queue_path + '/fizbat'
self.fizbat_queue_path_metadata = self.fizbat_queue_path + '/metadata'
def test_empty_project_id(self):
path = self.url_prefix + '/queues/gumshoe'
self.simulate_get(path, '')
self.simulate_get(self.gumshoe_queue_path, '')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
self.simulate_put(path, '')
self.simulate_put(self.gumshoe_queue_path, '')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
self.simulate_head(path, '')
self.simulate_head(self.gumshoe_queue_path, '')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
self.simulate_delete(path, '')
self.simulate_delete(self.gumshoe_queue_path, '')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
@ddt.data('480924', 'foo', None)
def test_basics_thoroughly(self, project_id):
path = self.url_prefix + '/queues/gumshoe'
gumshoe_queue_path_metadata = self.gumshoe_queue_path + '/metadata'
gumshoe_queue_path_stats = self.gumshoe_queue_path + '/stats'
# Stats not found - queue not created yet
self.simulate_get(path + '/stats', project_id)
self.simulate_get(gumshoe_queue_path_stats, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_404)
# Metadata not found - queue not created yet
self.simulate_get(path + '/metadata', project_id)
self.simulate_get(gumshoe_queue_path_metadata, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_404)
# Create
self.simulate_put(path, project_id)
self.simulate_put(self.gumshoe_queue_path, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_201)
location = self.srmock.headers_dict['Location']
self.assertEqual(location, self.url_prefix + '/queues/gumshoe')
self.assertEqual(location, self.gumshoe_queue_path)
# Ensure queue existence
self.simulate_head(path, project_id)
self.simulate_head(self.gumshoe_queue_path, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Add metadata
doc = '{"messages": {"ttl": 600}}'
self.simulate_put(path + '/metadata', project_id, body=doc)
self.simulate_put(gumshoe_queue_path_metadata,
project_id, body=doc)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Fetch metadata
result = self.simulate_get(path + '/metadata', project_id)
result = self.simulate_get(gumshoe_queue_path_metadata,
project_id)
result_doc = json.loads(result[0])
self.assertEqual(self.srmock.status, falcon.HTTP_200)
self.assertEqual(result_doc, json.loads(doc))
# Stats empty queue
self.simulate_get(path + '/stats', project_id)
self.simulate_get(gumshoe_queue_path_stats, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_200)
# Delete
self.simulate_delete(path, project_id)
self.simulate_delete(self.gumshoe_queue_path, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Get non-existent queue
self.simulate_get(path, project_id)
self.simulate_get(self.gumshoe_queue_path, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_404)
# Get non-existent stats
self.simulate_get(path + '/stats', project_id)
self.simulate_get(gumshoe_queue_path_stats, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_404)
# Get non-existent metadata
self.simulate_get(path + '/metadata', project_id)
self.simulate_get(gumshoe_queue_path_metadata, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_404)
def test_name_restrictions(self):
self.simulate_put(self.url_prefix + '/queues/Nice-Boat_2')
self.simulate_put(self.queue_path + '/Nice-Boat_2')
self.assertEqual(self.srmock.status, falcon.HTTP_201)
self.simulate_put(self.url_prefix + '/queues/Nice-Bo@t')
self.simulate_put(self.queue_path + '/Nice-Bo@t')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
self.simulate_put(self.url_prefix + '/queues/_' + 'niceboat' * 8)
self.simulate_put(self.queue_path + '/_' + 'niceboat' * 8)
self.assertEqual(self.srmock.status, falcon.HTTP_400)
def test_project_id_restriction(self):
self.simulate_put(self.url_prefix + '/queues/Muv-Luv',
muvluv_queue_path = self.queue_path + '/Muv-Luv'
self.simulate_put(muvluv_queue_path,
headers={'X-Project-ID': 'JAM Project' * 24})
self.assertEqual(self.srmock.status, falcon.HTTP_400)
# no charset restrictions
self.simulate_put(self.url_prefix + '/queues/Muv-Luv',
self.simulate_put(muvluv_queue_path,
headers={'X-Project-ID': 'JAM Project'})
self.assertEqual(self.srmock.status, falcon.HTTP_201)
@ -141,26 +149,26 @@ class QueueLifecycleBaseTest(base.TestBase):
self.assertEqual(self.srmock.status, falcon.HTTP_400)
def test_no_metadata(self):
self.simulate_put(self.url_prefix + '/queues/fizbat')
self.simulate_put(self.fizbat_queue_path)
self.assertEqual(self.srmock.status, falcon.HTTP_201)
self.simulate_put(self.url_prefix + '/queues/fizbat/metadata')
self.simulate_put(self.fizbat_queue_path_metadata)
self.assertEqual(self.srmock.status, falcon.HTTP_400)
self.simulate_put(self.url_prefix + '/queues/fizbat/metadata', body='')
self.simulate_put(self.fizbat_queue_path_metadata, body='')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
@ddt.data('{', '[]', '.', ' ', '')
def test_bad_metadata(self, document):
self.simulate_put(self.url_prefix + '/queues/fizbat', '7e55e1a7e')
self.simulate_put(self.fizbat_queue_path, '7e55e1a7e')
self.assertEqual(self.srmock.status, falcon.HTTP_201)
self.simulate_put(self.url_prefix + '/queues/fizbat/metadata',
'7e55e1a7e', body=document)
self.simulate_put(self.fizbat_queue_path_metadata, '7e55e1a7e',
body=document)
self.assertEqual(self.srmock.status, falcon.HTTP_400)
def test_too_much_metadata(self):
self.simulate_put(self.url_prefix + '/queues/fizbat', '7e55e1a7e')
self.simulate_put(self.fizbat_queue_path, '7e55e1a7e')
self.assertEqual(self.srmock.status, falcon.HTTP_201)
doc = '{{"messages": {{"ttl": 600}}, "padding": "{pad}"}}'
@ -169,12 +177,12 @@ class QueueLifecycleBaseTest(base.TestBase):
doc = doc.format(pad='x' * padding_len)
self.simulate_put(self.url_prefix + '/queues/fizbat/metadata',
'7e55e1a7e', body=doc)
self.simulate_put(self.fizbat_queue_path_metadata, '7e55e1a7e',
body=doc)
self.assertEqual(self.srmock.status, falcon.HTTP_400)
def test_way_too_much_metadata(self):
self.simulate_put(self.url_prefix + '/queues/fizbat', '7e55e1a7e')
self.simulate_put(self.fizbat_queue_path, '7e55e1a7e')
self.assertEqual(self.srmock.status, falcon.HTTP_201)
doc = '{{"messages": {{"ttl": 600}}, "padding": "{pad}"}}'
@ -183,12 +191,12 @@ class QueueLifecycleBaseTest(base.TestBase):
doc = doc.format(pad='x' * padding_len)
self.simulate_put(self.url_prefix + '/queues/fizbat/metadata',
self.simulate_put(self.fizbat_queue_path_metadata,
'7e55e1a7e', body=doc)
self.assertEqual(self.srmock.status, falcon.HTTP_400)
def test_custom_metadata(self):
self.simulate_put(self.url_prefix + '/queues/fizbat', '480924')
self.simulate_put(self.fizbat_queue_path, '480924')
self.assertEqual(self.srmock.status, falcon.HTTP_201)
# Set
@ -198,41 +206,41 @@ class QueueLifecycleBaseTest(base.TestBase):
padding_len = max_size - (len(doc) - 2)
doc = doc.format(pad='x' * padding_len)
self.simulate_put(self.url_prefix + '/queues/fizbat/metadata',
'480924', body=doc)
self.simulate_put(self.fizbat_queue_path_metadata, '480924', body=doc)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Get
result = self.simulate_get(self.url_prefix + '/queues/fizbat/metadata',
'480924')
result = self.simulate_get(self.fizbat_queue_path_metadata, '480924')
result_doc = json.loads(result[0])
self.assertEqual(result_doc, json.loads(doc))
self.assertEqual(self.srmock.status, falcon.HTTP_200)
def test_update_metadata(self):
xyz_queue_path = self.url_prefix + '/queues/xyz'
xyz_queue_path_metadata = xyz_queue_path + '/metadata'
# Create
path = self.url_prefix + '/queues/xyz'
project_id = '480924'
self.simulate_put(path, project_id)
self.simulate_put(xyz_queue_path, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_201)
# Set meta
doc1 = '{"messages": {"ttl": 600}}'
self.simulate_put(path + '/metadata', project_id, body=doc1)
self.simulate_put(xyz_queue_path_metadata, project_id, body=doc1)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Update
doc2 = '{"messages": {"ttl": 100}}'
self.simulate_put(path + '/metadata', project_id, body=doc2)
self.simulate_put(xyz_queue_path_metadata, project_id, body=doc2)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Get
result = self.simulate_get(path + '/metadata', project_id)
result = self.simulate_get(xyz_queue_path_metadata, project_id)
result_doc = json.loads(result[0])
self.assertEqual(result_doc, json.loads(doc2))
self.assertEqual(self.srmock.headers_dict['Content-Location'],
path + '/metadata')
xyz_queue_path_metadata)
def test_list(self):
arbitrary_number = 644079696574693
@ -244,17 +252,16 @@ class QueueLifecycleBaseTest(base.TestBase):
alt_project_id = str(arbitrary_number + 1)
# List empty
self.simulate_get(self.url_prefix + '/queues', project_id)
self.simulate_get(self.queue_path, project_id)
self.assertEqual(self.srmock.status, falcon.HTTP_204)
# Payload exceeded
self.simulate_get(self.url_prefix + '/queues', project_id,
query_string='limit=21')
self.simulate_get(self.queue_path, project_id, query_string='limit=21')
self.assertEqual(self.srmock.status, falcon.HTTP_400)
# Create some
def create_queue(name, project_id, body):
uri = self.url_prefix + '/queues/' + name
uri = self.queue_path + '/' + name
self.simulate_put(uri, project_id)
self.simulate_put(uri + '/metadata', project_id, body=body)
@ -268,7 +275,7 @@ class QueueLifecycleBaseTest(base.TestBase):
create_queue('q3', alt_project_id, '{"alt": 1}')
# List (global queues)
result = self.simulate_get(self.url_prefix + '/queues', None,
result = self.simulate_get(self.queue_path, None,
query_string='limit=2&detailed=true')
result_doc = json.loads(result[0])
@ -279,22 +286,22 @@ class QueueLifecycleBaseTest(base.TestBase):
self.assertEqual(queue['metadata'], {'answer': 42})
# List (limit)
result = self.simulate_get(self.url_prefix + '/queues', project_id,
result = self.simulate_get(self.queue_path, project_id,
query_string='limit=2')
result_doc = json.loads(result[0])
self.assertEqual(len(result_doc['queues']), 2)
# List (no metadata, get all)
result = self.simulate_get(self.url_prefix + '/queues', project_id,
query_string='limit=5')
result = self.simulate_get(self.queue_path,
project_id, query_string='limit=5')
result_doc = json.loads(result[0])
[target, params] = result_doc['links'][0]['href'].split('?')
self.assertEqual(self.srmock.status, falcon.HTTP_200)
self.assertEqual(self.srmock.headers_dict['Content-Location'],
self.url_prefix + '/queues?limit=5')
self.queue_path + '?limit=5')
# Ensure we didn't pick up the queue from the alt project.
queues = result_doc['queues']
@ -310,7 +317,7 @@ class QueueLifecycleBaseTest(base.TestBase):
self.assertNotIn('metadata', queue)
# List with metadata
result = self.simulate_get(self.url_prefix + '/queues', project_id,
result = self.simulate_get(self.queue_path, project_id,
query_string='detailed=true')
self.assertEqual(self.srmock.status, falcon.HTTP_200)
@ -362,24 +369,24 @@ class TestQueueLifecycleFaultyDriver(base.TestBaseFaulty):
config_file = 'wsgi_faulty.conf'
def test_simple(self):
path = self.url_prefix + '/queues/gumshoe'
gumshoe_queue_path = self.url_prefix + '/queues/gumshoe'
doc = '{"messages": {"ttl": 600}}'
self.simulate_put(path, '480924', body=doc)
self.simulate_put(gumshoe_queue_path, '480924', body=doc)
self.assertEqual(self.srmock.status, falcon.HTTP_503)
location = ('Location', path)
location = ('Location', gumshoe_queue_path)
self.assertNotIn(location, self.srmock.headers)
result = self.simulate_get(path + '/metadata', '480924')
result = self.simulate_get(gumshoe_queue_path + '/metadata', '480924')
result_doc = json.loads(result[0])
self.assertEqual(self.srmock.status, falcon.HTTP_503)
self.assertNotEqual(result_doc, json.loads(doc))
self.simulate_get(path + '/stats', '480924')
self.simulate_get(gumshoe_queue_path + '/stats', '480924')
self.assertEqual(self.srmock.status, falcon.HTTP_503)
self.simulate_get(self.url_prefix + '/queues', '480924')
self.assertEqual(self.srmock.status, falcon.HTTP_503)
self.simulate_delete(path, '480924')
self.simulate_delete(gumshoe_queue_path, '480924')
self.assertEqual(self.srmock.status, falcon.HTTP_503)