Example #1
0
    def test_create(self):
        serializer = common.MetadataTemplate()
        fixture = {
            'metadata': {
                'key9': 'value9',
                'key2': 'value2',
                'key1': 'value1',
            },
        }
        output = serializer.serialize(fixture)
        print output
        root = etree.XML(output)
        xmlutil.validate_schema(root, 'metadata')
        metadata_dict = fixture['metadata']
        metadata_elems = root.findall('{0}meta'.format(NS))
        self.assertEqual(len(metadata_elems), 3)
        for i, metadata_elem in enumerate(metadata_elems):
            (meta_key, meta_value) = metadata_dict.items()[i]
            self.assertEqual(str(metadata_elem.get('key')), str(meta_key))
            self.assertEqual(str(metadata_elem.text).strip(), str(meta_value))
        actual = minidom.parseString(output.replace("  ", ""))

        expected = minidom.parseString("""
            <metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
                <meta key="key2">value2</meta>
                <meta key="key9">value9</meta>
                <meta key="key1">value1</meta>
            </metadata>
        """.replace("  ", "").replace("\n", ""))

        self.assertEqual(expected.toxml(), actual.toxml())
    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]))
Example #3
0
    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)
Example #4
0
 def test_index_unicode(self):
     serializer = common.MetadataTemplate()
     fixture = {
         'metadata': {
             u'three': u'Jos\xe9',
         },
     }
     output = serializer.serialize(fixture)
     print output
     root = etree.XML(output)
     xmlutil.validate_schema(root, 'metadata')
     metadata_dict = fixture['metadata']
     metadata_elems = root.findall('{0}meta'.format(NS))
     self.assertEqual(len(metadata_elems), 1)
     for i, metadata_elem in enumerate(metadata_elems):
         (meta_key, meta_value) = metadata_dict.items()[i]
         self.assertEqual(str(metadata_elem.get('key')), str(meta_key))
         self.assertEqual(metadata_elem.text.strip(), meta_value)
    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 = volume.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')
Example #7
0
 def test_update_all(self):
     serializer = common.MetadataTemplate()
     fixture = {
         'metadata': {
             'key6': 'value6',
             'key4': 'value4',
         },
     }
     output = serializer.serialize(fixture)
     print output
     root = etree.XML(output)
     xmlutil.validate_schema(root, 'metadata')
     metadata_dict = fixture['metadata']
     metadata_elems = root.findall('{0}meta'.format(NS))
     self.assertEqual(len(metadata_elems), 2)
     for i, metadata_elem in enumerate(metadata_elems):
         (meta_key, meta_value) = metadata_dict.items()[i]
         self.assertEqual(str(metadata_elem.get('key')), str(meta_key))
         self.assertEqual(str(metadata_elem.text).strip(), str(meta_value))
Example #8
0
    def test_get_extension_xml(self):
        app = volume.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_list_extensions_xml(self):
        app = volume.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.assert_(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')
Example #10
0
    def test_list_extensions_xml(self):
        app = volume.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.assert_(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')
Example #11
0
    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]))