예제 #1
0
    def _bounce_id(self, test_id):
        class BounceController(object):
            def show(self, req, id):
                return id

        res_ext = extensions.ResourceExtension('bounce', BounceController())
        manager = StubExtensionManager(res_ext)
        app = router.APIRouter(manager)
        request = webob.Request.blank("/fake/bounce/%s" % test_id)
        response = request.get_response(app)
        return response.body
예제 #2
0
    def test_get_extension_json(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions/FOXNSOX")
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        data = jsonutils.loads(response.body)
        self.assertEqual(
            {
                "namespace": "http://www.fox.in.socks/api/ext/pie/v1.0",
                "name": "Fox In Socks",
                "updated": "2011-01-22T13:25:27-06:00",
                "description": "The Fox In Socks Extension.",
                "alias": "FOXNSOX",
                "links": []
            }, data['extension'])
예제 #3
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')
예제 #4
0
    def test_list_extensions_json(self):
        app = router.APIRouter()
        request = webob.Request.blank("/fake/extensions")
        response = request.get_response(app)
        self.assertEqual(200, response.status_int)

        # Make sure we have all the extensions, extra extensions being OK.
        data = jsonutils.loads(response.body)
        names = [
            str(x['name']) for x in data['extensions']
            if str(x['name']) in self.ext_list
        ]
        names.sort()
        self.assertEqual(self.ext_list, names)

        # Ensure all the timestamps are valid according to iso8601
        for ext in data['extensions']:
            iso8601.parse_date(ext['updated'])

        # Make sure that at least Fox in Sox is correct.
        (fox_ext, ) = [
            x for x in data['extensions'] if x['alias'] == 'FOXNSOX'
        ]
        self.assertEqual(
            {
                'namespace': 'http://www.fox.in.socks/api/ext/pie/v1.0',
                'name': 'Fox In Socks',
                'updated': '2011-01-22T13:25:27-06:00',
                'description': 'The Fox In Socks Extension.',
                'alias': 'FOXNSOX',
                'links': []
            }, fox_ext)

        for ext in data['extensions']:
            url = '/fake/extensions/%s' % ext['alias']
            request = webob.Request.blank(url)
            response = request.get_response(app)
            output = jsonutils.loads(response.body)
            self.assertEqual(ext['alias'], output['extension']['alias'])
예제 #5
0
    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')
예제 #6
0
 def setUp(self):
     super(MiperRouterTestCase, self).setUp()
     # NOTE(vish): versions is just returning text so, no need to stub.
     self.app = router.APIRouter()
예제 #7
0
 def test_get_non_existing_extension_json(self):
     app = router.APIRouter()
     request = webob.Request.blank("/fake/extensions/4")
     response = request.get_response(app)
     self.assertEqual(404, response.status_int)