diff options
author | Dolph Mathews <dolph.mathews@gmail.com> | 2012-11-20 10:28:26 -0600 |
---|---|---|
committer | Dolph Mathews <dolph.mathews@gmail.com> | 2012-11-20 11:05:17 -0600 |
commit | ff669f0da9cbf5250d8bb3e904608677f9164b6c (patch) | |
tree | 369225070ad0e21f67c9751d8c16acb7c5bd3b27 /tests/test_v3_catalog.py | |
parent | 64452c6b55dd3b0320d0ebdd1dc2f4d122c00b2e (diff) | |
download | keystone-ff669f0da9cbf5250d8bb3e904608677f9164b6c.tar.gz keystone-ff669f0da9cbf5250d8bb3e904608677f9164b6c.tar.xz keystone-ff669f0da9cbf5250d8bb3e904608677f9164b6c.zip |
v3 Catalog
- v3 catalog tests (bug 1023933)
- v3 catalog implementation (bug 1023938)
Change-Id: Ie118819d25afbff62327ffc8be5b5fda2ef7f4ed
Diffstat (limited to 'tests/test_v3_catalog.py')
-rw-r--r-- | tests/test_v3_catalog.py | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/tests/test_v3_catalog.py b/tests/test_v3_catalog.py new file mode 100644 index 00000000..9f5bf913 --- /dev/null +++ b/tests/test_v3_catalog.py @@ -0,0 +1,143 @@ +import uuid + +import test_v3 + + +class CatalogTestCase(test_v3.RestfulTestCase): + """Test service & endpoint CRUD""" + + def setUp(self): + super(CatalogTestCase, self).setUp() + + self.service_id = uuid.uuid4().hex + self.service = self.new_service_ref() + self.service['id'] = self.service_id + self.catalog_api.create_service( + self.service_id, + self.service.copy()) + + self.endpoint_id = uuid.uuid4().hex + self.endpoint = self.new_endpoint_ref(service_id=self.service_id) + self.endpoint['id'] = self.endpoint_id + self.catalog_api.create_endpoint( + self.endpoint_id, + self.endpoint.copy()) + + # service validation + + def assertValidServiceListResponse(self, resp, ref): + return self.assertValidListResponse( + resp, + 'services', + self.assertValidService, + ref) + + def assertValidServiceResponse(self, resp, ref): + return self.assertValidResponse( + resp, + 'service', + self.assertValidService, + ref) + + def assertValidService(self, entity, ref=None): + self.assertIsNotNone(entity.get('type')) + if ref: + self.assertEqual(ref['type'], entity['type']) + return entity + + # endpoint validation + + def assertValidEndpointListResponse(self, resp, ref): + return self.assertValidListResponse( + resp, + 'endpoints', + self.assertValidEndpoint, + ref) + + def assertValidEndpointResponse(self, resp, ref): + return self.assertValidResponse( + resp, + 'endpoint', + self.assertValidEndpoint, + ref) + + def assertValidEndpoint(self, entity, ref=None): + self.assertIsNotNone(entity.get('interface')) + self.assertIsNotNone(entity.get('service_id')) + if ref: + self.assertEqual(ref['interface'], entity['interface']) + self.assertEqual(ref['service_id'], entity['service_id']) + return entity + + # service crud tests + + def test_create_service(self): + """POST /services""" + ref = self.new_service_ref() + r = self.post( + '/services', + body={'service': ref}) + return self.assertValidServiceResponse(r, ref) + + def test_list_services(self): + """GET /services""" + r = self.get('/services') + self.assertValidServiceListResponse(r, self.service) + + def test_get_service(self): + """GET /services/{service_id}""" + r = self.get('/services/%(service_id)s' % { + 'service_id': self.service_id}) + self.assertValidServiceResponse(r, self.service) + + def test_update_service(self): + """PATCH /services/{service_id}""" + service = self.new_service_ref() + del service['id'] + r = self.patch('/services/%(service_id)s' % { + 'service_id': self.service_id}, + body={'service': service}) + self.assertValidServiceResponse(r, service) + + def test_delete_service(self): + """DELETE /services/{service_id}""" + self.delete('/services/%(service_id)s' % { + 'service_id': self.service_id}) + + # endpoint crud tests + + def test_list_endpoints(self): + """GET /endpoints""" + r = self.get('/endpoints') + self.assertValidEndpointListResponse(r, self.endpoint) + + def test_create_endpoint(self): + """POST /endpoints""" + ref = self.new_endpoint_ref(service_id=self.service_id) + r = self.post( + '/endpoints', + body={'endpoint': ref}) + self.assertValidEndpointResponse(r, ref) + + def test_get_endpoint(self): + """GET /endpoints/{endpoint_id}""" + r = self.get( + '/endpoints/%(endpoint_id)s' % { + 'endpoint_id': self.endpoint_id}) + self.assertValidEndpointResponse(r, self.endpoint) + + def test_update_endpoint(self): + """PATCH /endpoints/{endpoint_id}""" + ref = self.new_endpoint_ref(service_id=self.service_id) + del ref['id'] + r = self.patch( + '/endpoints/%(endpoint_id)s' % { + 'endpoint_id': self.endpoint_id}, + body={'endpoint': ref}) + self.assertValidEndpointResponse(r, ref) + + def test_delete_endpoint(self): + """DELETE /endpoints/{endpoint_id}""" + self.delete( + '/endpoints/%(endpoint_id)s' % { + 'endpoint_id': self.endpoint_id}) |