summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-09-13 10:33:34 +0000
committerGerrit Code Review <review@openstack.org>2012-09-13 10:33:34 +0000
commit0296a2d2499a634ef49c2545fd75d41f3219bfa5 (patch)
treec14f019e7b26c5c1c3341ed033a5383fccde69b7
parent0bf93c05079c6c7c30e28ca1e0fba54b381c36d5 (diff)
parent760e59b8632edd8cbf395289e24f380ffd06f047 (diff)
Merge "Validate keypair create request body"
-rw-r--r--nova/api/openstack/compute/contrib/keypairs.py9
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_keypairs.py12
2 files changed, 19 insertions, 2 deletions
diff --git a/nova/api/openstack/compute/contrib/keypairs.py b/nova/api/openstack/compute/contrib/keypairs.py
index dc0c74b11..e5e1e37fd 100644
--- a/nova/api/openstack/compute/contrib/keypairs.py
+++ b/nova/api/openstack/compute/contrib/keypairs.py
@@ -70,8 +70,13 @@ class KeypairController(object):
context = req.environ['nova.context']
authorize(context)
- params = body['keypair']
- name = params['name']
+
+ try:
+ params = body['keypair']
+ name = params['name']
+ except KeyError:
+ msg = _("Invalid request body")
+ raise webob.exc.HTTPBadRequest(explanation=msg)
try:
if 'public_key' in params:
diff --git a/nova/tests/api/openstack/compute/contrib/test_keypairs.py b/nova/tests/api/openstack/compute/contrib/test_keypairs.py
index a14a64da5..d7fc378c6 100644
--- a/nova/tests/api/openstack/compute/contrib/test_keypairs.py
+++ b/nova/tests/api/openstack/compute/contrib/test_keypairs.py
@@ -295,6 +295,18 @@ class KeypairsTest(test.TestCase):
self.assertTrue('key_name' in server_dict)
self.assertEquals(server_dict['key_name'], '')
+ def test_keypair_create_with_invalid_keypairBody(self):
+ body = {'alpha': {'name': 'create_test'}}
+ req = webob.Request.blank('/v1.1/fake/os-keypairs')
+ req.method = 'POST'
+ req.body = jsonutils.dumps(body)
+ req.headers['Content-Type'] = 'application/json'
+ res = req.get_response(fakes.wsgi_app())
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(res.status_int, 400)
+ self.assertEqual(res_dict['badRequest']['message'],
+ "Invalid request body")
+
class KeypairsXMLSerializerTest(test.TestCase):
def setUp(self):