summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaveed Massjouni <naveedm9@gmail.com>2011-07-23 16:13:48 -0400
committerNaveed Massjouni <naveedm9@gmail.com>2011-07-23 16:13:48 -0400
commita7fdcb0f7dacfe41b5c85faee38c027b31ddaf81 (patch)
tree6dd0f27fd9b12ebd80a606c86e9a94877267d37d
parent7066537c32da8acaff0266634383efaccdfc6e9c (diff)
Added test_serialize_extenstions to test ExtensionsXMLSerializer.index().
-rw-r--r--nova/tests/api/openstack/test_extensions.py115
1 files changed, 83 insertions, 32 deletions
diff --git a/nova/tests/api/openstack/test_extensions.py b/nova/tests/api/openstack/test_extensions.py
index f3c9d9423..47ec5ec89 100644
--- a/nova/tests/api/openstack/test_extensions.py
+++ b/nova/tests/api/openstack/test_extensions.py
@@ -31,7 +31,8 @@ from nova.api.openstack import wsgi
from nova.tests.api.openstack import fakes
FLAGS = flags.FLAGS
-
+NS = "{http://docs.openstack.org/compute/api/v1.1}"
+ATOMNS = "{http://www.w3.org/2005/Atom}"
response_body = "Try to say this Mr. Knox, sir..."
@@ -139,12 +140,11 @@ class ExtensionControllerTest(unittest.TestCase):
self.assertEqual(200, response.status_int)
print response.body
- ns = "{http://docs.openstack.org/compute/api/v1.1}"
root = ElementTree.XML(response.body)
- self.assertEqual(root.tag.split('extensions')[0], ns)
+ self.assertEqual(root.tag.split('extensions')[0], NS)
# Make sure we have all the extensions.
- exts = root.findall('{0}extension'.format(ns))
+ exts = root.findall('{0}extension'.format(NS))
self.assertEqual(len(exts), 6)
# Make sure that at least Fox in Sox is correct.
@@ -153,7 +153,7 @@ class ExtensionControllerTest(unittest.TestCase):
self.assertEqual(fox_ext.get('namespace'),
'http://www.fox.in.socks/api/ext/pie/v1.0')
self.assertEqual(fox_ext.get('updated'), '2011-01-22T13:25:27-06:00')
- self.assertEqual(fox_ext.findtext('{0}description'.format(ns)),
+ self.assertEqual(fox_ext.findtext('{0}description'.format(NS)),
'The Fox In Socks Extension')
def test_get_extension_xml(self):
@@ -166,14 +166,13 @@ class ExtensionControllerTest(unittest.TestCase):
print response.body
root = ElementTree.XML(response.body)
- ns = "{http://docs.openstack.org/compute/api/v1.1}"
- self.assertEqual(root.tag.split('extension')[0], ns)
+ self.assertEqual(root.tag.split('extension')[0], NS)
self.assertEqual(root.get('alias'), 'FOXNSOX')
self.assertEqual(root.get('name'), 'Fox In Socks')
self.assertEqual(root.get('namespace'),
'http://www.fox.in.socks/api/ext/pie/v1.0')
self.assertEqual(root.get('updated'), '2011-01-22T13:25:27-06:00')
- self.assertEqual(root.findtext('{0}description'.format(ns)),
+ self.assertEqual(root.findtext('{0}description'.format(NS)),
'The Fox In Socks Extension')
@@ -329,7 +328,8 @@ class RequestExtensionTest(unittest.TestCase):
class ExtensionsXMLSerializerTest(unittest.TestCase):
- def test_serialize(self):
+
+ def test_serialize_extenstion(self):
serializer = extensions.ExtensionsXMLSerializer()
data = {
'extension': {
@@ -353,30 +353,81 @@ class ExtensionsXMLSerializerTest(unittest.TestCase):
}
}
- ns = "{http://docs.openstack.org/compute/api/v1.1}"
- atomns = "{http://www.w3.org/2005/Atom}"
xml = serializer.serialize(data, 'show')
root = ElementTree.XML(xml)
- self.assertEqual(root.tag.split('extension')[0], ns)
- self.assertEqual(root.get('alias'), 'RS-PIE')
- self.assertEqual(root.get('name'), 'ext1')
- self.assertEqual(root.get('namespace'),
- 'http://docs.rack.com/servers/api/ext/pie/v1.0')
- self.assertEqual(root.get('updated'), '2011-01-22T13:25:27-06:00')
- self.assertEqual(root.findtext('{0}description'.format(ns)),
- 'Adds the capability to share an image.')
+ ext_dict = data['extension']
+ self.assertEqual(root.findtext('{0}description'.format(NS)),
+ ext_dict['description'])
+
+ for key in ['name', 'namespace', 'alias', 'updated']:
+ self.assertEqual(root.get(key), ext_dict[key])
- link_nodes = root.findall('{0}link'.format(atomns))
+ link_nodes = root.findall('{0}link'.format(ATOMNS))
self.assertEqual(len(link_nodes), 2)
- link_nodes.sort(key=lambda x: x.get('type'))
-
- self.assertEqual(link_nodes[0].get('type'), 'application/pdf')
- self.assertEqual(link_nodes[0].get('rel'), 'describedby')
- self.assertEqual(link_nodes[0].get('href'),
- 'http://docs.rack.com/servers/api/ext/cs.pdf')
-
- self.assertEqual(link_nodes[1].get('type'),
- 'application/vnd.sun.wadl+xml')
- self.assertEqual(link_nodes[1].get('rel'), 'describedby')
- self.assertEqual(link_nodes[1].get('href'),
- 'http://docs.rack.com/servers/api/ext/cs.wadl')
+ for i, link in enumerate(ext_dict['links']):
+ for key, value in link.items():
+ self.assertEqual(link_nodes[i].get(key), value)
+
+ def test_serialize_extenstions(self):
+ serializer = extensions.ExtensionsXMLSerializer()
+ data = {
+ "extensions": [
+ {
+ "name": "Public Image Extension",
+ "namespace": "http://foo.com/servers/api/ext/pie/v1.0",
+ "alias": "RS-PIE",
+ "updated": "2011-01-22T13:25:27-06:00",
+ "description": "Adds the capability to share an image.",
+ "links": [
+ {
+ "rel": "describedby",
+ "type": "application/pdf",
+ "href": "http://foo.com/servers/api/ext/cs-pie.pdf"
+ },
+ {
+ "rel": "describedby",
+ "type": "application/vnd.sun.wadl+xml",
+ "href": "http://foo.com/servers/api/ext/cs-pie.wadl"
+ }
+ ]
+ },
+ {
+ "name": "Cloud Block Storage",
+ "namespace": "http://foo.com/servers/api/ext/cbs/v1.0",
+ "alias": "RS-CBS",
+ "updated": "2011-01-12T11:22:33-06:00",
+ "description": "Allows mounting cloud block storage.",
+ "links": [
+ {
+ "rel": "describedby",
+ "type": "application/pdf",
+ "href": "http://foo.com/servers/api/ext/cs-cbs.pdf"
+ },
+ {
+ "rel": "describedby",
+ "type": "application/vnd.sun.wadl+xml",
+ "href": "http://foo.com/servers/api/ext/cs-cbs.wadl"
+ }
+ ]
+ }
+ ]
+ }
+
+ xml = serializer.serialize(data, 'index')
+ print xml
+ root = ElementTree.XML(xml)
+ ext_elems = root.findall('{0}extension'.format(NS))
+ self.assertEqual(len(ext_elems), 2)
+ for i, ext_elem in enumerate(ext_elems):
+ ext_dict = data['extensions'][i]
+ self.assertEqual(ext_elem.findtext('{0}description'.format(NS)),
+ ext_dict['description'])
+
+ for key in ['name', 'namespace', 'alias', 'updated']:
+ self.assertEqual(ext_elem.get(key), ext_dict[key])
+
+ link_nodes = ext_elem.findall('{0}link'.format(ATOMNS))
+ self.assertEqual(len(link_nodes), 2)
+ for i, link in enumerate(ext_dict['links']):
+ for key, value in link.items():
+ self.assertEqual(link_nodes[i].get(key), value)