From 3d03e2ab9e46f5ee14aae5c06c976b9f41dd9358 Mon Sep 17 00:00:00 2001 From: He Jie Xu Date: Tue, 15 Sep 2015 14:09:21 +0800 Subject: [PATCH] Test both NoAuthMiddleware and NoAuthMiddlewareV3 While we need to keep both of these until mitaka, we only tested the v3 class. Lets test both, and make it easy to remove the v3 test once we can drop that class. Change-Id: I149605d66949e657fd6fddaf579c3b58ccf9b096 Closes-Bug: #1462901 --- .../unit/api/openstack/compute/test_auth.py | 41 ++++++++++++++----- nova/tests/unit/api/openstack/fakes.py | 2 +- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/nova/tests/unit/api/openstack/compute/test_auth.py b/nova/tests/unit/api/openstack/compute/test_auth.py index 8221ca0e1fe5..37b140e1e281 100644 --- a/nova/tests/unit/api/openstack/compute/test_auth.py +++ b/nova/tests/unit/api/openstack/compute/test_auth.py @@ -17,44 +17,65 @@ import webob import webob.dec +from nova.api import openstack as openstack_api +from nova.api.openstack import auth +from nova.api.openstack import compute +from nova.api.openstack import urlmap from nova import test from nova.tests.unit.api.openstack import fakes -class TestNoAuthMiddlewareV3(test.NoDBTestCase): +class TestNoAuthMiddlewareV21(test.NoDBTestCase): def setUp(self): - super(TestNoAuthMiddlewareV3, self).setUp() + super(TestNoAuthMiddlewareV21, self).setUp() fakes.stub_out_rate_limiting(self.stubs) fakes.stub_out_networking(self.stubs) + self.wsgi_app = fakes.wsgi_app_v21(use_no_auth=True) + self.req_url = '/v2' + self.expected_url = "http://localhost/v2/user1_project" def test_authorize_user(self): - req = webob.Request.blank('/v2/fake') + req = webob.Request.blank(self.req_url) req.headers['X-Auth-User'] = 'user1' req.headers['X-Auth-Key'] = 'user1_key' req.headers['X-Auth-Project-Id'] = 'user1_project' - result = req.get_response(fakes.wsgi_app_v21(use_no_auth=True)) + result = req.get_response(self.wsgi_app) self.assertEqual(result.status, '204 No Content') self.assertEqual(result.headers['X-Server-Management-Url'], - "http://localhost/v2/fake") + self.expected_url) def test_authorize_user_trailing_slash(self): # make sure it works with trailing slash on the request - req = webob.Request.blank('/v2/fake/') + self.req_url = self.req_url + '/' + req = webob.Request.blank(self.req_url) req.headers['X-Auth-User'] = 'user1' req.headers['X-Auth-Key'] = 'user1_key' req.headers['X-Auth-Project-Id'] = 'user1_project' - result = req.get_response(fakes.wsgi_app_v21(use_no_auth=True)) + result = req.get_response(self.wsgi_app) self.assertEqual(result.status, '204 No Content') self.assertEqual(result.headers['X-Server-Management-Url'], - "http://localhost/v2/fake") + self.expected_url) def test_auth_token_no_empty_headers(self): - req = webob.Request.blank('/v2/fake') + req = webob.Request.blank(self.req_url) req.headers['X-Auth-User'] = 'user1' req.headers['X-Auth-Key'] = 'user1_key' req.headers['X-Auth-Project-Id'] = 'user1_project' - result = req.get_response(fakes.wsgi_app_v21(use_no_auth=True)) + result = req.get_response(self.wsgi_app) self.assertEqual(result.status, '204 No Content') self.assertNotIn('X-CDN-Management-Url', result.headers) self.assertNotIn('X-Storage-Url', result.headers) + + +class TestNoAuthMiddlewareV3(TestNoAuthMiddlewareV21): + + def setUp(self): + super(TestNoAuthMiddlewareV3, self).setUp() + api_router = compute.APIRouterV3() + api_v3 = openstack_api.FaultWrapper(auth.NoAuthMiddlewareV3( + api_router)) + self.wsgi_app = urlmap.URLMap() + self.wsgi_app['/v3'] = api_v3 + self.req_url = '/v3' + self.expected_url = "http://localhost/v3" diff --git a/nova/tests/unit/api/openstack/fakes.py b/nova/tests/unit/api/openstack/fakes.py index ac3f79f033ed..1f0e835e929a 100644 --- a/nova/tests/unit/api/openstack/fakes.py +++ b/nova/tests/unit/api/openstack/fakes.py @@ -113,7 +113,7 @@ def wsgi_app_v21(inner_app_v21=None, fake_auth_context=None, inner_app_v21 = openstack_api.LegacyV2CompatibleWrapper(inner_app_v21) if use_no_auth: - api_v21 = openstack_api.FaultWrapper(auth.NoAuthMiddlewareV3( + api_v21 = openstack_api.FaultWrapper(auth.NoAuthMiddleware( limits.RateLimitingMiddleware(inner_app_v21))) else: if fake_auth_context is not None: