From e515053dd16219babda80de21e49320821f8885f Mon Sep 17 00:00:00 2001 From: Malini Kamalambal Date: Thu, 24 Oct 2013 12:57:19 -0400 Subject: [PATCH] Add Tests for non-existing resources This patch adds tests for action on non-existing queues, messages & claims. Change-Id: I68517b1b98f668eff86a0bcad19dc9ed8d01267c Tests-Bug: #1243752 --- tests/functional/wsgi/v1/test_claims.py | 25 +++++++ tests/functional/wsgi/v1/test_messages.py | 24 +++++++ tests/functional/wsgi/v1/test_queues.py | 68 ++++++++++++++++++- .../unit/queues/transport/wsgi/test_claims.py | 6 +- .../queues/transport/wsgi/test_messages.py | 6 ++ 5 files changed, 125 insertions(+), 4 deletions(-) diff --git a/tests/functional/wsgi/v1/test_claims.py b/tests/functional/wsgi/v1/test_claims.py index bb579fefd..c4f81c284 100644 --- a/tests/functional/wsgi/v1/test_claims.py +++ b/tests/functional/wsgi/v1/test_claims.py @@ -219,6 +219,31 @@ class TestClaims(base.FunctionalTestBase): test_patch_claim_invalid_ttl.tags = ['negative'] + def test_query_non_existing_claim(self): + """Query Non Existing Claim.""" + path = '/non-existing-claim' + result = self.client.get(path) + self.assertEqual(result.status_code, 404) + + test_query_non_existing_claim.tags = ['negative'] + + def test_patch_non_existing_claim(self): + """Patch Non Existing Claim.""" + path = '/non-existing-claim' + doc = {"ttl": 400} + result = self.client.patch(path, data=doc) + self.assertEqual(result.status_code, 404) + + test_patch_non_existing_claim.tags = ['negative'] + + def test_delete_non_existing_claim(self): + """Patch Non Existing Claim.""" + path = '/non-existing-claim' + result = self.client.delete(path) + self.assertEqual(result.status_code, 204) + + test_delete_non_existing_claim.tags = ['negative'] + def tearDown(self): """Delete Queue after Claim Test.""" super(TestClaims, self).tearDown() diff --git a/tests/functional/wsgi/v1/test_messages.py b/tests/functional/wsgi/v1/test_messages.py index 3ccc01d0a..cf30f1566 100644 --- a/tests/functional/wsgi/v1/test_messages.py +++ b/tests/functional/wsgi/v1/test_messages.py @@ -301,6 +301,30 @@ class TestMessages(base.FunctionalTestBase): test_get_messages_invalid_client_id.tags = ['negative'] + def test_query_non_existing_message(self): + """Get Non Existing Message.""" + path = '/non-existing-message' + result = self.client.get(path) + self.assertEqual(result.status_code, 404) + + test_query_non_existing_message.tags = ['negative'] + + def test_query_non_existing_message_set(self): + """Get Set of Non Existing Messages.""" + path = '?ids=not_there1,not_there2' + result = self.client.get(path) + self.assertEqual(result.status_code, 204) + + test_query_non_existing_message_set.tags = ['negative'] + + def test_delete_non_existing_message(self): + """Delete Non Existing Message.""" + path = '/non-existing-message' + result = self.client.delete(path) + self.assertEqual(result.status_code, 204) + + test_delete_non_existing_message.tags = ['negative'] + def tearDown(self): super(TestMessages, self).tearDown() self.client.delete(self.queue_url) diff --git a/tests/functional/wsgi/v1/test_queues.py b/tests/functional/wsgi/v1/test_queues.py index 68456a55c..01c86d12c 100644 --- a/tests/functional/wsgi/v1/test_queues.py +++ b/tests/functional/wsgi/v1/test_queues.py @@ -24,11 +24,14 @@ from marconi.tests.functional import helpers class NamedBinaryStr(six.binary_type): + """Wrapper for six.binary_type to facilitate overriding __name__.""" class NamedUnicodeStr(object): + """Unicode string look-alike to facilitate overriding __name__.""" + def __init__(self, value): self.value = value @@ -48,6 +51,7 @@ class NamedUnicodeStr(object): class NamedDict(dict): + """Wrapper for dict to facilitate overriding __name__.""" @@ -65,6 +69,7 @@ def annotated(test_name, test_input): @ddt.ddt class TestInsertQueue(base.FunctionalTestBase): + """Tests for Insert queue.""" server_class = base.MarconiServer @@ -185,6 +190,7 @@ class TestInsertQueue(base.FunctionalTestBase): @ddt.ddt class TestQueueMetaData(base.FunctionalTestBase): + """Tests for queue metadata.""" server_class = base.MarconiServer @@ -359,7 +365,7 @@ class TestQueueMisc(base.FunctionalTestBase): stats_url = self.queue_url + '/stats' - #Get stats on an empty queue + # Get stats on an empty queue result = self.client.get(stats_url) self.assertEqual(result.status_code, 200) @@ -376,7 +382,7 @@ class TestQueueMisc(base.FunctionalTestBase): self.addCleanup(self.client.delete, self.queue_url) self.assertEqual(result.status_code, 201) - #Post Messages to the test queue + # Post Messages to the test queue doc = helpers.create_message_body(messagecount= self.limits.message_paging_uplimit) message_url = self.queue_url + '/messages' @@ -389,7 +395,7 @@ class TestQueueMisc(base.FunctionalTestBase): result = self.client.post(claim_url, data=doc) self.assertEqual(result.status_code, 201) - #Get stats on the queue. + # Get stats on the queue. stats_url = self.queue_url + '/stats' result = self.client.get(stats_url) self.assertEqual(result.status_code, 200) @@ -400,3 +406,59 @@ class TestQueueMisc(base.FunctionalTestBase): def tearDown(self): super(TestQueueMisc, self).tearDown() + + +class TestQueueNonExisting(base.FunctionalTestBase): + + """Test Actions on non existing queue.""" + + server_class = base.MarconiServer + + def setUp(self): + super(TestQueueNonExisting, self).setUp() + self.base_url = '{0}/{1}'.format(self.cfg.marconi.url, + self.cfg.marconi.version) + self.queue_url = self.base_url + \ + '/queues/0a5b1b85-4263-11e3-b034-28cfe91478b9' + self.client.set_base_url(self.queue_url) + + self.header = helpers.create_marconi_headers(self.cfg) + self.headers_response_empty = set(['location']) + self.header = helpers.create_marconi_headers(self.cfg) + + def test_get_queue(self): + """Get non existing Queue.""" + result = self.client.get() + self.assertEqual(result.status_code, 404) + + def test_get_stats(self): + """Get stats on non existing Queue.""" + result = self.client.get('/stats') + self.assertEqual(result.status_code, 404) + + def test_get_metadata(self): + """Get metadata on non existing Queue.""" + result = self.client.get('/metadata') + self.assertEqual(result.status_code, 404) + + def test_get_messages(self): + """Get messages on non existing Queue.""" + result = self.client.get('/messages') + self.assertEqual(result.status_code, 204) + + def test_post_messages(self): + """Post messages to a non existing Queue.""" + doc = [{"ttl": 200, "body": {"Home": ""}}] + result = self.client.post('/messages', data=doc) + self.assertEqual(result.status_code, 404) + + def test_claim_messages(self): + """Claim messages from a non existing Queue.""" + doc = {"ttl": 200, "grace": 300} + result = self.client.post('/claims', data=doc) + self.assertEqual(result.status_code, 204) + + def test_delete_queue(self): + """Delete non existing Queue.""" + result = self.client.delete() + self.assertEqual(result.status_code, 204) diff --git a/tests/unit/queues/transport/wsgi/test_claims.py b/tests/unit/queues/transport/wsgi/test_claims.py index c4ca6a152..a9137c14f 100644 --- a/tests/unit/queues/transport/wsgi/test_claims.py +++ b/tests/unit/queues/transport/wsgi/test_claims.py @@ -208,11 +208,15 @@ class ClaimsBaseTest(base.TestBase): self.simulate_patch(claim['href'], body=doc) self.assertEqual(self.srmock.status, falcon.HTTP_404) - def test_nonexistent(self): + def test_post_claim_nonexistent_queue(self): self.simulate_post('/v1/queues/nonexistent/claims', self.project_id, body='{"ttl": 100, "grace": 60}') self.assertEqual(self.srmock.status, falcon.HTTP_204) + def test_get_claim_nonexistent_queue(self): + self.simulate_get('/v1/queues/nonexistent/claims/aaabbbba') + self.assertEqual(self.srmock.status, falcon.HTTP_404) + # NOTE(cpp-cabrera): regression test against bug #1203842 def test_get_nonexistent_claim_404s(self): self.simulate_get(self.claims_path + '/a') diff --git a/tests/unit/queues/transport/wsgi/test_messages.py b/tests/unit/queues/transport/wsgi/test_messages.py index 2383cc843..26493cd40 100644 --- a/tests/unit/queues/transport/wsgi/test_messages.py +++ b/tests/unit/queues/transport/wsgi/test_messages.py @@ -184,6 +184,12 @@ class MessagesBaseTest(base.TestBase): self._post_messages('/v1/queues/nonexistent/messages') self.assertEqual(self.srmock.status, falcon.HTTP_404) + def test_get_from_missing_queue(self): + self.simulate_get('/v1/queues/nonexistent/messages', self.project_id, + headers={'Client-ID': + 'dfcd3238-425c-11e3-8a80-28cfe91478b9'}) + self.assertEqual(self.srmock.status, falcon.HTTP_204) + @ddt.data('', '0xdeadbeef', '550893e0-2b6e-11e3-835a-5cf9dd72369') def test_bad_client_id(self, text_id): self.simulate_post(self.queue_path + '/messages',