Skip to content

Commit

Permalink
dont show blank endpoint headers
Browse files Browse the repository at this point in the history
fixes bug: 741972

Change-Id: I4a661a13c5baaa79ee647a6c1cedcef29a2642f6
  • Loading branch information
Nikhil Komawar committed Feb 7, 2012
1 parent d52ea46 commit 95771cf
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 16 deletions.
1 change: 1 addition & 0 deletions Authors
Expand Up @@ -123,6 +123,7 @@ MotoKen <motokentsai@gmail.com>
Muneyuki Noguchi <noguchimn@nttdata.co.jp>
Nachi Ueno <ueno.nachi@lab.ntt.co.jp>
Naveed Massjouni <naveedm9@gmail.com>
Nikhil Komawar <nikhil.komawar@rackspace.com>
Nikolay Sokolov <nsokolov@griddynamics.com>
Nirmal Ranganathan <rnirmal@gmail.com>
Ollie Leahy <oliver.leahy@hp.com>
Expand Down
12 changes: 8 additions & 4 deletions nova/api/openstack/auth.py
Expand Up @@ -52,8 +52,6 @@ def __call__(self, req):
# 2.0 auth here as well.
res.headers['X-Auth-Token'] = '%s:%s' % (user_id, project_id)
res.headers['X-Server-Management-Url'] = os_url
res.headers['X-Storage-Url'] = ''
res.headers['X-CDN-Management-Url'] = ''
res.content_type = 'text/plain'
res.status = '204'
return res
Expand Down Expand Up @@ -177,8 +175,14 @@ def _get_auth_header(key):
res.headers['X-Auth-Token'] = token['token_hash']
res.headers['X-Server-Management-Url'] = \
token['server_management_url']
res.headers['X-Storage-Url'] = token['storage_url']
res.headers['X-CDN-Management-Url'] = token['cdn_management_url']

if token['storage_url']:
res.headers['X-Storage-Url'] = token['storage_url']

if token['cdn_management_url']:
res.headers['X-CDN-Management-Url'] = \
token['cdn_management_url']

res.content_type = 'text/plain'
res.status = '204'
LOG.debug(_("Successfully authenticated '%s'") % username)
Expand Down
38 changes: 26 additions & 12 deletions nova/tests/api/openstack/compute/test_auth.py
Expand Up @@ -57,9 +57,6 @@ def test_authorize_user(self):
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '204 No Content')
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
self.assertEqual(result.headers['X-CDN-Management-Url'],
"")
self.assertEqual(result.headers['X-Storage-Url'], "")

def test_authorize_token(self):
f = fakes.FakeAuthManager()
Expand All @@ -75,9 +72,6 @@ def test_authorize_token(self):
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
self.assertEqual(result.headers['X-Server-Management-Url'],
"http://foo/v2/user1_project")
self.assertEqual(result.headers['X-CDN-Management-Url'],
"")
self.assertEqual(result.headers['X-Storage-Url'], "")

token = result.headers['X-Auth-Token']
self.stubs.Set(nova.api.openstack.compute, 'APIRouter',
Expand Down Expand Up @@ -210,6 +204,21 @@ def test_not_authorized_project(self):
result = req.get_response(fakes.wsgi_app(fake_auth=False))
self.assertEqual(result.status, '401 Unauthorized')

def test_auth_token_no_empty_headers(self):
f = fakes.FakeAuthManager()
user = nova.auth.manager.User('id1', 'user1', 'user1_key', None, None)
f.add_user(user)

req = webob.Request.blank('/v2/')
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(fake_auth=False))
self.assertEqual(result.status, '204 No Content')
self.assertEqual(len(result.headers['X-Auth-Token']), 40)
self.assertFalse('X-CDN-Management-Url' in result.headers)
self.assertFalse('X-Storage-Url' in result.headers)


class TestFunctional(test.TestCase):
def test_token_expiry(self):
Expand Down Expand Up @@ -297,9 +306,6 @@ def test_authorize_user(self):
result = req.get_response(fakes.wsgi_app(fake_auth=False,
use_no_auth=True))
self.assertEqual(result.status, '204 No Content')
self.assertEqual(result.headers['X-CDN-Management-Url'],
"")
self.assertEqual(result.headers['X-Storage-Url'], "")
self.assertEqual(result.headers['X-Server-Management-Url'],
"http://localhost/v2/user1_project")

Expand All @@ -312,8 +318,16 @@ def test_authorize_user_trailing_slash(self):
result = req.get_response(fakes.wsgi_app(fake_auth=False,
use_no_auth=True))
self.assertEqual(result.status, '204 No Content')
self.assertEqual(result.headers['X-CDN-Management-Url'],
"")
self.assertEqual(result.headers['X-Storage-Url'], "")
self.assertEqual(result.headers['X-Server-Management-Url'],
"http://localhost/v2/user1_project")

def test_auth_token_no_empty_headers(self):
req = webob.Request.blank('/v2')
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(fake_auth=False,
use_no_auth=True))
self.assertEqual(result.status, '204 No Content')
self.assertFalse('X-CDN-Management-Url' in result.headers)
self.assertFalse('X-Storage-Url' in result.headers)

0 comments on commit 95771cf

Please sign in to comment.