From 1a605cccb1fe29ae6554ad5afa3110abef11d9c2 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Fri, 17 Aug 2012 15:34:28 -0400 Subject: Return HTTP 422 on bad server update PUT request. This patch updates the /servers API and the disk config extension so that they properly handle incorrectly formatted server update/PUT requests. Includes a new test cause that verifies (with extensions enabled) that a poorly formatted PUT request to /servers returns HTTP 422 instead of a 500. Also updated the previous test_create_missing_server test to use test.TestException instead of Exception. Fixes LP Bug #1038227. Change-Id: I6b11602790778465348647bb5825b7326d50065a --- nova/tests/api/openstack/compute/test_servers.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'nova/tests') diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index 662a272f8..fd3597b68 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -4765,7 +4765,7 @@ class ServersAllExtensionsTestCase(test.TestCase): """Test create with malformed body""" def fake_create(*args, **kwargs): - raise Exception("Request should not reach the compute API.") + raise test.TestingException("Should not reach the compute API.") self.stubs.Set(nova.compute.api.API, 'create', fake_create) @@ -4777,3 +4777,20 @@ class ServersAllExtensionsTestCase(test.TestCase): req.body = jsonutils.dumps(body) res = req.get_response(self.app) self.assertEqual(422, res.status_int) + + def test_update_missing_server(self): + """Test create with malformed body""" + + def fake_update(*args, **kwargs): + raise test.TestingException("Should not reach the compute API.") + + self.stubs.Set(nova.compute.api.API, 'create', fake_update) + + req = fakes.HTTPRequest.blank('/fake/servers/1') + req.method = 'PUT' + req.content_type = 'application/json' + body = {'foo': {'a': 'b'}} + + req.body = jsonutils.dumps(body) + res = req.get_response(self.app) + self.assertEqual(422, res.status_int) -- cgit