diff --git a/nova/tests/unit/api/openstack/compute/test_versions.py b/nova/tests/unit/api/openstack/compute/test_versions.py index 1416a29473..1a6ce6f636 100644 --- a/nova/tests/unit/api/openstack/compute/test_versions.py +++ b/nova/tests/unit/api/openstack/compute/test_versions.py @@ -16,11 +16,13 @@ import copy import uuid as stdlib_uuid +import mock from oslo_serialization import jsonutils import webob from nova.api.openstack import api_version_request as avr from nova.api.openstack.compute import views +from nova.api.openstack import extensions from nova import test from nova.tests.unit.api.openstack import fakes from nova.tests.unit import matchers @@ -103,9 +105,11 @@ def _get_self_href(response): class VersionsTestV20(test.NoDBTestCase): - def setUp(self): - super(VersionsTestV20, self).setUp() - self.wsgi_app = fakes.wsgi_app() + @property + def wsgi_app(self): + with mock.patch.object(extensions.ExtensionManager, 'load_extension'): + # patch load_extension because it's expensive in fakes.wsgi_app + return fakes.wsgi_app(init_only=('servers', 'images', 'versions')) def test_get_version_list(self): req = webob.Request.blank('/') @@ -446,10 +450,14 @@ class VersionsTestV21(test.NoDBTestCase): {'href': 'http://localhost/v2.1/', 'rel': 'self'}, ) + @property + def wsgi_app(self): + return fakes.wsgi_app_v21(init_only=('versions',)) + def test_get_version_list_302(self): req = webob.Request.blank('/v2.1') req.accept = "application/json" - res = req.get_response(fakes.wsgi_app_v21()) + res = req.get_response(self.wsgi_app) self.assertEqual(302, res.status_int) redirect_req = webob.Request.blank('/v2.1/') self.assertEqual(redirect_req.url, res.location) @@ -457,7 +465,7 @@ class VersionsTestV21(test.NoDBTestCase): def test_get_version_21_detail(self): req = webob.Request.blank('/v2.1/') req.accept = "application/json" - res = req.get_response(fakes.wsgi_app_v21()) + res = req.get_response(self.wsgi_app) self.assertEqual(200, res.status_int) self.assertEqual("application/json", res.content_type) version = jsonutils.loads(res.body) @@ -467,7 +475,7 @@ class VersionsTestV21(test.NoDBTestCase): def test_get_version_21_versions_v21_detail(self): req = webob.Request.blank('/v2.1/fake/versions/v2.1') req.accept = "application/json" - res = req.get_response(fakes.wsgi_app_v21()) + res = req.get_response(self.wsgi_app) self.assertEqual(200, res.status_int) self.assertEqual("application/json", res.content_type) version = jsonutils.loads(res.body) @@ -477,7 +485,7 @@ class VersionsTestV21(test.NoDBTestCase): def test_get_version_21_versions_v20_detail(self): req = webob.Request.blank('/v2.1/fake/versions/v2.0') req.accept = "application/json" - res = req.get_response(fakes.wsgi_app_v21()) + res = req.get_response(self.wsgi_app) self.assertEqual(200, res.status_int) self.assertEqual("application/json", res.content_type) version = jsonutils.loads(res.body) @@ -487,13 +495,13 @@ class VersionsTestV21(test.NoDBTestCase): def test_get_version_21_versions_invalid(self): req = webob.Request.blank('/v2.1/versions/1234/foo') req.accept = "application/json" - res = req.get_response(fakes.wsgi_app_v21()) + res = req.get_response(self.wsgi_app) self.assertEqual(404, res.status_int) def test_get_version_21_detail_content_type(self): req = webob.Request.blank('/') req.accept = "application/json;version=2.1" - res = req.get_response(fakes.wsgi_app_v21()) + res = req.get_response(self.wsgi_app) self.assertEqual(200, res.status_int) self.assertEqual("application/json", res.content_type) version = jsonutils.loads(res.body) @@ -506,10 +514,16 @@ class VersionBehindSslTestCase(test.NoDBTestCase): super(VersionBehindSslTestCase, self).setUp() self.flags(secure_proxy_ssl_header='HTTP_X_FORWARDED_PROTO') + @property + def wsgi_app(self): + with mock.patch.object(extensions.ExtensionManager, 'load_extension'): + # patch load_extension because it's expensive in fakes.wsgi_app + return fakes.wsgi_app(init_only=('versions',)) + def test_versions_without_headers(self): req = wsgi.Request.blank('/') req.accept = "application/json" - res = req.get_response(fakes.wsgi_app()) + res = req.get_response(self.wsgi_app) self.assertEqual(200, res.status_int) href = _get_self_href(res) self.assertTrue(href.startswith('http://')) @@ -518,7 +532,7 @@ class VersionBehindSslTestCase(test.NoDBTestCase): req = wsgi.Request.blank('/') req.accept = "application/json" req.headers['X-Forwarded-Proto'] = 'https' - res = req.get_response(fakes.wsgi_app()) + res = req.get_response(self.wsgi_app) self.assertEqual(200, res.status_int) href = _get_self_href(res) self.assertTrue(href.startswith('https://')) @@ -526,6 +540,6 @@ class VersionBehindSslTestCase(test.NoDBTestCase): class VersionsTestV21WithV2CompatibleWrapper(VersionsTestV20): - def setUp(self): - super(VersionsTestV21WithV2CompatibleWrapper, self).setUp() - self.wsgi_app = fakes.wsgi_app_v21(v2_compatible=True) + @property + def wsgi_app(self): + return fakes.wsgi_app_v21(v2_compatible=True, init_only=('versions',))