def test_list_extensions_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) root = etree.XML(response.body) self.assertEqual(root.tag.split('extensions')[0], NS) # Make sure we have all the extensions, extras extensions being OK. exts = root.findall('{0}extension'.format(NS)) self.assertTrue(len(exts) >= len(self.ext_list)) # Make sure that at least Fox in Sox is correct. (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX'] self.assertEqual(fox_ext.get('name'), 'Fox In Socks') 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)), 'The Fox In Socks Extension') xmlutil.validate_schema(root, 'extensions')
def test_list_extensions_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) root = etree.XML(response.body) self.assertEqual(root.tag.split('extensions')[0], NS) # Make sure we have all the extensions, extras extensions being OK. exts = root.findall('{0}extension'.format(NS)) self.assertGreaterEqual(len(exts), len(self.ext_list)) # Make sure that at least Fox in Sox is correct. (fox_ext, ) = [x for x in exts if x.get('alias') == 'FOXNSOX'] self.assertEqual('Fox In Socks', fox_ext.get('name')) self.assertEqual( 'http://www.fox.in.socks/api/ext/pie/v1.0', fox_ext.get('namespace')) self.assertEqual('2011-01-22T13:25:27-06:00', fox_ext.get('updated')) self.assertEqual( 'The Fox In Socks Extension.', fox_ext.findtext('{0}description'.format(NS))) xmlutil.validate_schema(root, 'extensions')
def test_qos_associations_serializer(self): fixture = { "qos_associations": [{ "association_type": "volume_type", "name": "type-4", "id": "14d54d29-51a4-4046-9f6f-cf9800323563" }, { "association_type": "volume_type", "name": "type-2", "id": "3689ce83-308d-4ba1-8faf-7f1be04a282b" }] } output = self.serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'qos_associations') association_elems = root.findall("associations") self.assertEqual(len(association_elems), 2) for i, association_elem in enumerate(association_elems): association_dict = fixture['qos_associations'][i] # check qos_spec attributes for key in ['name', 'id', 'association_type']: self.assertEqual(association_elem.get(key), str(association_dict[key]))
def test_qos_associations_serializer(self): fixture = { "qos_associations": [ { "association_type": "volume_type", "name": "type-4", "id": "14d54d29-51a4-4046-9f6f-cf9800323563" }, { "association_type": "volume_type", "name": "type-2", "id": "3689ce83-308d-4ba1-8faf-7f1be04a282b"} ] } output = self.serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'qos_associations') association_elems = root.findall("associations") self.assertEqual(len(association_elems), 2) for i, association_elem in enumerate(association_elems): association_dict = fixture['qos_associations'][i] # check qos_spec attributes for key in ['name', 'id', 'association_type']: self.assertEqual(association_elem.get(key), str(association_dict[key]))
def test_index(self): serializer = limits.LimitsTemplate() fixture = { "limits": { "rate": [ { "uri": "*", "regex": ".*", "limit": [ { "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": "2011-12-15T22:42:45Z", } ], }, { "uri": "*/servers", "regex": "^/servers", "limit": [ { "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": "2011-12-15T22:42:45Z", } ], }, ], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240}, } } output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, "limits") # verify absolute limits absolutes = root.xpath("ns:absolute/ns:limit", namespaces=NS) self.assertEqual(len(absolutes), 4) for limit in absolutes: name = limit.get("name") value = limit.get("value") self.assertEqual(value, str(fixture["limits"]["absolute"][name])) # verify rate limits rates = root.xpath("ns:rates/ns:rate", namespaces=NS) self.assertEqual(len(rates), 2) for i, rate in enumerate(rates): for key in ["uri", "regex"]: self.assertEqual(rate.get(key), str(fixture["limits"]["rate"][i][key])) rate_limits = rate.xpath("ns:limit", namespaces=NS) self.assertEqual(len(rate_limits), 1) for j, limit in enumerate(rate_limits): for key in ["verb", "value", "remaining", "unit", "next-available"]: self.assertEqual(limit.get(key), str(fixture["limits"]["rate"][i]["limit"][j][key]))
def test_index(self): serializer = limits.LimitsTemplate() fixture = { "limits": { "rate": [{ "uri": "*", "regex": ".*", "limit": [{ "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": "2011-12-15T22:42:45Z"}]}, {"uri": "*/servers", "regex": "^/servers", "limit": [{ "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": "2011-12-15T22:42:45Z"}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') #verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(len(absolutes), 4) for limit in absolutes: name = limit.get('name') value = limit.get('value') self.assertEqual(value, str(fixture['limits']['absolute'][name])) #verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(len(rates), 2) for i, rate in enumerate(rates): for key in ['uri', 'regex']: self.assertEqual(rate.get(key), str(fixture['limits']['rate'][i][key])) rate_limits = rate.xpath('ns:limit', namespaces=NS) self.assertEqual(len(rate_limits), 1) for j, limit in enumerate(rate_limits): for key in ['verb', 'value', 'remaining', 'unit', 'next-available']: self.assertEqual( limit.get(key), str(fixture['limits']['rate'][i]['limit'][j][key]))
def test_index(self): serializer = limits.LimitsTemplate() fixture = { "limits": { "rate": [{ "uri": "*", "regex": ".*", "limit": [{ "value": 10, "verb": "POST", "remaining": 2, "unit": "MINUTE", "next-available": "2011-12-15T22:42:45Z"}]}, {"uri": "*/servers", "regex": "^/servers", "limit": [{ "value": 50, "verb": "POST", "remaining": 10, "unit": "DAY", "next-available": "2011-12-15T22:42:45Z"}]}], "absolute": {"maxServerMeta": 1, "maxImageMeta": 1, "maxPersonality": 5, "maxPersonalitySize": 10240}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') # verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(4, len(absolutes)) for limit in absolutes: name = limit.get('name') value = limit.get('value') self.assertEqual(str(fixture['limits']['absolute'][name]), value) # verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(2, len(rates)) for i, rate in enumerate(rates): for key in ['uri', 'regex']: self.assertEqual(str(fixture['limits']['rate'][i][key]), rate.get(key)) rate_limits = rate.xpath('ns:limit', namespaces=NS) self.assertEqual(1, len(rate_limits)) for j, limit in enumerate(rate_limits): for key in ['verb', 'value', 'remaining', 'unit', 'next-available']: self.assertEqual( str(fixture['limits']['rate'][i]['limit'][j][key]), limit.get(key))
def test_index_no_limits(self): serializer = limits.LimitsTemplate() fixture = {"limits": {"rate": [], "absolute": {}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'limits') # verify absolute limits absolutes = root.xpath('ns:absolute/ns:limit', namespaces=NS) self.assertEqual(0, len(absolutes)) # verify rate limits rates = root.xpath('ns:rates/ns:rate', namespaces=NS) self.assertEqual(0, len(rates))
def test_index_no_limits(self): serializer = limits.LimitsTemplate() fixture = {"limits": {"rate": [], "absolute": {}}} output = serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, "limits") # verify absolute limits absolutes = root.xpath("ns:absolute/ns:limit", namespaces=NS) self.assertEqual(len(absolutes), 0) # verify rate limits rates = root.xpath("ns:rates/ns:rate", namespaces=NS) self.assertEqual(len(rates), 0)
def test_get_extension_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions/FOXNSOX") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) xml = response.body root = etree.XML(xml) self.assertEqual(NS, root.tag.split("extension")[0]) self.assertEqual("FOXNSOX", root.get("alias")) self.assertEqual("Fox In Socks", root.get("name")) self.assertEqual("http://www.fox.in.socks/api/ext/pie/v1.0", root.get("namespace")) self.assertEqual("2011-01-22T13:25:27-06:00", root.get("updated")) self.assertEqual("The Fox In Socks Extension.", root.findtext("{0}description".format(NS))) xmlutil.validate_schema(root, "extension")
def test_get_extension_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions/FOXNSOX") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) xml = response.body root = etree.XML(xml) 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)), 'The Fox In Socks Extension.') xmlutil.validate_schema(root, 'extension')
def test_get_extension_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions/FOXNSOX") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) xml = response.body root = etree.XML(xml) self.assertEqual(NS, root.tag.split('extension')[0]) self.assertEqual('FOXNSOX', root.get('alias')) self.assertEqual('Fox In Socks', root.get('name')) self.assertEqual('http://www.fox.in.socks/api/ext/pie/v1.0', root.get('namespace')) self.assertEqual('2011-01-22T13:25:27-06:00', root.get('updated')) self.assertEqual('The Fox In Socks Extension.', root.findtext('{0}description'.format(NS))) xmlutil.validate_schema(root, 'extension')
def test_qos_specs_serializer(self): fixture = { "qos_specs": [ { "specs": { "key1": "v1", "key2": "v2", }, "consumer": "back-end", "name": "qos-2", "id": "61e7b72f-ef15-46d9-b00e-b80f699999d0" }, { "specs": {"total_iops_sec": "200"}, "consumer": "front-end", "name": "qos-1", "id": "e44bba5e-b629-4b96-9aa3-0404753a619b" } ] } output = self.serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'qos_specs') qos_elems = root.findall("qos_spec") self.assertEqual(len(qos_elems), 2) for i, qos_elem in enumerate(qos_elems): qos_dict = fixture['qos_specs'][i] # check qos_spec attributes for key in ['name', 'id', 'consumer']: self.assertEqual(qos_elem.get(key), str(qos_dict[key])) # check specs specs = qos_elem.find("specs") new_dict = {} for element in specs.iter(tag=etree.Element): # skip root element for specs if element.tag == "specs": continue new_dict.update({element.tag: element.text}) self.assertDictMatch(new_dict, qos_dict['specs'])
def test_qos_specs_serializer(self): fixture = { "qos_specs": [ { "specs": { "key1": "v1", "key2": "v2", }, "consumer": "back-end", "name": "qos-2", "id": "61e7b72f-ef15-46d9-b00e-b80f699999d0" }, { "specs": {"total_iops_sec": "200"}, "consumer": "front-end", "name": "qos-1", "id": "e44bba5e-b629-4b96-9aa3-0404753a619b" } ] } output = self.serializer.serialize(fixture) root = etree.XML(output) xmlutil.validate_schema(root, 'qos_specs') qos_elems = root.findall("qos_spec") self.assertEqual(2, len(qos_elems)) for i, qos_elem in enumerate(qos_elems): qos_dict = fixture['qos_specs'][i] # check qos_spec attributes for key in ['name', 'id', 'consumer']: self.assertEqual(str(qos_dict[key]), qos_elem.get(key)) # check specs specs = qos_elem.find("specs") new_dict = {} for element in specs.iter(tag=etree.Element): # skip root element for specs if element.tag == "specs": continue new_dict.update({element.tag: element.text}) self.assertDictMatch(qos_dict['specs'], new_dict)
def test_list_extensions_xml(self): app = router.APIRouter() request = webob.Request.blank("/fake/extensions") request.accept = "application/xml" response = request.get_response(app) self.assertEqual(200, response.status_int) root = etree.XML(response.body) self.assertEqual(NS, root.tag.split("extensions")[0]) # Make sure we have all the extensions, extras extensions being OK. exts = root.findall("{0}extension".format(NS)) self.assertGreaterEqual(len(exts), len(self.ext_list)) # Make sure that at least Fox in Sox is correct. (fox_ext,) = [x for x in exts if x.get("alias") == "FOXNSOX"] self.assertEqual("Fox In Socks", fox_ext.get("name")) self.assertEqual("http://www.fox.in.socks/api/ext/pie/v1.0", fox_ext.get("namespace")) self.assertEqual("2011-01-22T13:25:27-06:00", fox_ext.get("updated")) self.assertEqual("The Fox In Socks Extension.", fox_ext.findtext("{0}description".format(NS))) xmlutil.validate_schema(root, "extensions")