summaryrefslogtreecommitdiffstats
path: root/tests/test_content_types.py
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-02-27 21:22:51 +0000
committerGerrit Code Review <review@openstack.org>2012-02-27 21:22:51 +0000
commit28129406ba2bbec2dc60b9e8733c4270d7e5d15b (patch)
tree337d4f50db254eea9ec2b639d8ffc821b9b3b3e5 /tests/test_content_types.py
parent9075d25071bf77184d18cb8d83f9701e431ef717 (diff)
parent071f6b367b55782bd048e645dab96402eb504114 (diff)
downloadkeystone-28129406ba2bbec2dc60b9e8733c4270d7e5d15b.tar.gz
keystone-28129406ba2bbec2dc60b9e8733c4270d7e5d15b.tar.xz
keystone-28129406ba2bbec2dc60b9e8733c4270d7e5d15b.zip
Merge "Implements extension discovery (bug 928054)"
Diffstat (limited to 'tests/test_content_types.py')
-rw-r--r--tests/test_content_types.py81
1 files changed, 77 insertions, 4 deletions
diff --git a/tests/test_content_types.py b/tests/test_content_types.py
index 016ffa9a..7f749fb4 100644
--- a/tests/test_content_types.py
+++ b/tests/test_content_types.py
@@ -234,6 +234,25 @@ class CoreApiTests(object):
self.assertIsNotNone(error.get('title'))
self.assertIsNotNone(error.get('message'))
+ def assertValidExtension(self, extension):
+ """Applicable to XML and JSON.
+
+ However, navigating extension links differs between content types.
+ They need to be validated seperately with assertValidExtensionLink.
+
+ """
+ self.assertIsNotNone(extension)
+ self.assertIsNotNone(extension.get('name'))
+ self.assertIsNotNone(extension.get('namespace'))
+ self.assertIsNotNone(extension.get('alias'))
+ self.assertIsNotNone(extension.get('updated'))
+
+ def assertValidExtensionLink(self, link):
+ """Applicable to XML and JSON."""
+ self.assertIsNotNone(link.get('rel'))
+ self.assertIsNotNone(link.get('type'))
+ self.assertIsNotNone(link.get('href'))
+
def assertValidTenant(self, tenant):
"""Applicable to XML and JSON."""
self.assertIsNotNone(tenant.get('id'))
@@ -270,14 +289,26 @@ class CoreApiTests(object):
self.assertValidVersionResponse(r)
def test_public_extensions(self):
- raise nose.exc.SkipTest('Blocked by bug 928054')
-
self.public_request(path='/v2.0/extensions',)
+ # TODO(dolph): can't test this without any public extensions defined
+ # self.assertValidExtensionListResponse(r)
+
def test_admin_extensions(self):
- raise nose.exc.SkipTest('Blocked by bug 928054')
+ r = self.admin_request(path='/v2.0/extensions',)
+ self.assertValidExtensionListResponse(r)
+
+ def test_admin_extensions_404(self):
+ self.admin_request(path='/v2.0/extensions/invalid-extension',
+ expected_status=404)
- self.admin_request(path='/v2.0/extensions',)
+ def test_public_osksadm_extension_404(self):
+ self.public_request(path='/v2.0/extensions/OS-KSADM',
+ expected_status=404)
+
+ def test_admin_osksadm_extension(self):
+ r = self.admin_request(path='/v2.0/extensions/OS-KSADM')
+ self.assertValidExtensionResponse(r)
def test_authenticate(self):
r = self.public_request(method='POST', path='/v2.0/tokens', body={
@@ -384,6 +415,25 @@ class JsonTestCase(RestfulTestCase, CoreApiTests):
self.assertValidError(r.body['error'])
self.assertEqual(r.body['error']['code'], r.status)
+ def assertValidExtension(self, extension):
+ super(JsonTestCase, self).assertValidExtension(extension)
+
+ self.assertIsNotNone(extension.get('description'))
+ self.assertIsNotNone(extension.get('links'))
+ self.assertTrue(len(extension.get('links')))
+ for link in extension.get('links'):
+ self.assertValidExtensionLink(link)
+
+ def assertValidExtensionListResponse(self, r):
+ self.assertIsNotNone(r.body.get('extensions'))
+ self.assertIsNotNone(r.body['extensions'].get('values'))
+ self.assertTrue(len(r.body['extensions'].get('values')))
+ for extension in r.body['extensions']['values']:
+ self.assertValidExtension(extension)
+
+ def assertValidExtensionResponse(self, r):
+ self.assertValidExtension(r.body.get('extension'))
+
def assertValidAuthenticationResponse(self, r):
self.assertIsNotNone(r.body.get('access'))
self.assertIsNotNone(r.body['access'].get('token'))
@@ -480,6 +530,29 @@ class XmlTestCase(RestfulTestCase, CoreApiTests):
self.assertValidError(xml)
self.assertEqual(xml.get('code'), str(r.status))
+ def assertValidExtension(self, extension):
+ super(XmlTestCase, self).assertValidExtension(extension)
+
+ self.assertIsNotNone(extension.find(self._tag('description')))
+ self.assertTrue(extension.find(self._tag('description')).text)
+ self.assertTrue(len(extension.findall(self._tag('link'))))
+ for link in extension.findall(self._tag('link')):
+ self.assertValidExtensionLink(link)
+
+ def assertValidExtensionListResponse(self, r):
+ xml = r.body
+ self.assertEqual(xml.tag, self._tag('extensions'))
+
+ self.assertTrue(len(xml.findall(self._tag('extension'))))
+ for extension in xml.findall(self._tag('extension')):
+ self.assertValidExtension(extension)
+
+ def assertValidExtensionResponse(self, r):
+ xml = r.body
+ self.assertEqual(xml.tag, self._tag('extension'))
+
+ self.assertValidExtension(xml)
+
def assertValidMultipleChoiceResponse(self, r):
xml = r.body
self.assertEqual(xml.tag, self._tag('versions'))