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)
def test_init(self): conf = mock.Mock() controller = versions.Controller(conf) self.assertIsNotNone(controller) self.assertEqual(conf, controller.conf)
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)
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)
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)
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)