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
This commit is contained in:
He Jie Xu 2015-09-15 14:09:21 +08:00 committed by John Garbutt
parent fe8b32593d
commit 3d03e2ab9e
2 changed files with 32 additions and 11 deletions

View File

@ -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"

View File

@ -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: