From 9ee3fba769274a84ea7709aa0068c19a421dbd80 Mon Sep 17 00:00:00 2001 From: Unmesh Gurjar Date: Wed, 10 Oct 2012 04:22:31 -0700 Subject: Fixes 500 err on authentication for invalid body 1. This fixes the 500 error on authentication when invalid request body is provided, a 400 Bad Request response is returned instead. 2. Also added unit test coverage. Fixes LP: #1060709 Change-Id: I7f2916e0b91de1e299d2dc7a245ff6c2bc548afd --- keystone/service.py | 3 +++ tests/test_service.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/keystone/service.py b/keystone/service.py index fdc895cb..c5fe9633 100644 --- a/keystone/service.py +++ b/keystone/service.py @@ -285,6 +285,9 @@ class TokenController(wsgi.Application): Alternatively, this call accepts auth with only a token and tenant that will return a token that is scoped to that tenant. """ + if not auth: + raise exception.ValidationError(attribute='auth', + target='request body') if 'passwordCredentials' in auth: user_id = auth['passwordCredentials'].get('userId', None) diff --git a/tests/test_service.py b/tests/test_service.py index fc4e94de..979e9472 100644 --- a/tests/test_service.py +++ b/tests/test_service.py @@ -49,3 +49,18 @@ class TokenControllerTest(test.TestCase): 'tenantName': 'demo'} self.assertRaises(exception.ValidationError, self.api.authenticate, None, body_dict) + + def test_authenticate_blank_request_body(self): + """Verify sending empty json dict raises the right exception.""" + self.assertRaises(exception.ValidationError, self.api.authenticate, + None, {}) + + def test_authenticate_blank_auth(self): + """Verify sending blank 'auth' raises the right exception.""" + self.assertRaises(exception.ValidationError, self.api.authenticate, + None, {'auth': {}}) + + def test_authenticate_invalid_auth_content(self): + """Verify sending invalid 'auth' raises the right exception.""" + self.assertRaises(exception.ValidationError, self.api.authenticate, + None, {'auth': 'abcd'}) -- cgit