예제 #1
0
    def test_call(self):
        conf = mock.Mock()
        controller = versions.Controller(conf)
        environ = {
            'REQUEST_METHOD': 'GET',
            'SERVER_NAME': 'host',
            'SERVER_PORT': 8778,
            'SCRIPT_NAME': '/v1',
            'PATH_INFO': '/tenant_id/versions',
            'wsgi.url_scheme': 'http',
        }
        req = wsgi.Request(environ)
        expected_dict = {
            'versions': [{
                'id':
                'v1.0',
                'status':
                'CURRENT',
                'links': [{
                    'rel': 'self',
                    'href': 'http://host:8778/v1/'
                }]
            }]
        }
        expected_body = json.dumps(expected_dict)

        resp = controller(req)

        self.assertIsInstance(resp, webob.Response)
        self.assertEqual(expected_body, encodeutils.safe_decode(resp.body))
        self.assertEqual(http_client.MULTIPLE_CHOICES, resp.status_code)
        self.assertEqual('application/json', resp.content_type)
예제 #2
0
    def test_init(self):
        conf = mock.Mock()

        controller = versions.Controller(conf)

        self.assertIsNotNone(controller)
        self.assertEqual(conf, controller.conf)
예제 #3
0
    def test_get_href(self):
        controller = versions.Controller(mock.Mock())
        req = mock.Mock()
        req.host_url = 'FAKE_URL'

        res = controller.get_href(req)

        self.assertEqual('FAKE_URL/v1/', res)
예제 #4
0
    def test_call(self):
        conf = mock.Mock()
        controller = versions.Controller(conf)
        environ = {
            'REQUEST_METHOD': 'GET',
            'SERVER_NAME': 'host',
            'SERVER_PORT': 8778,
            'SCRIPT_NAME': '/',
            'PATH_INFO': '/',
            'wsgi.url_scheme': 'http',
        }
        req = wsgi.Request(environ)
        expected_dict = {
            'versions': [{
                'id':
                '1.0',
                'status':
                'CURRENT',
                'updated':
                '2016-01-18T00:00:00Z',
                'media-types': [{
                    'base':
                    'application/json',
                    'type':
                    'application/vnd.openstack.clustering-v1+json'
                }],
                'links': [{
                    'rel': 'self',
                    'href': '/v1/'
                }],
                'min_version':
                versions._MIN_API_VERSION,
                'max_version':
                versions._MAX_API_VERSION
            }]
        }
        expected_body = jsonutils.dumps(expected_dict)

        resp = controller(req)

        self.assertIsInstance(resp, webob.Response)
        self.assertEqual(expected_body, encodeutils.safe_decode(resp.body))
        self.assertEqual(http_client.MULTIPLE_CHOICES, resp.status_code)
        self.assertEqual('application/json', resp.content_type)
예제 #5
0
    def test_call(self, mock_v1):
        mock_v1.return_value = {'foo': 'bar'}
        conf = mock.Mock()
        controller = versions.Controller(conf)
        environ = {
            'REQUEST_METHOD': 'GET',
            'SERVER_NAME': 'host',
            'SERVER_PORT': 8778,
            'SCRIPT_NAME': '/',
            'PATH_INFO': '/',
            'wsgi.url_scheme': 'http',
        }
        req = wsgi.Request(environ)
        expected_dict = {'versions': [{'foo': 'bar'}]}
        expected_body = jsonutils.dumps(expected_dict)

        resp = controller(req)

        self.assertIsInstance(resp, webob.Response)
        self.assertEqual(expected_body, encodeutils.safe_decode(resp.body))
        self.assertEqual(http_client.MULTIPLE_CHOICES, resp.status_code)
        self.assertEqual('application/json', resp.content_type)
예제 #6
0
 def __init__(self, app, conf):
     self.versions_app = os_ver.Controller(conf)
     self.version_uri_regex = re.compile(r"^v([1-9]\d*)\.?([1-9]\d*|0)?$")
     self.conf = conf
     super(VersionNegotiationFilter, self).__init__(app)