summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-04-25 06:53:39 +0000
committerGerrit Code Review <review@openstack.org>2012-04-25 06:53:39 +0000
commitda834cf8aee734837e873b5a8bd78ff40be15caa (patch)
tree9a82e2702408c36280a47044025acc509d46cb2a /nova/tests
parent5999008f39357aa1c81310affc04886a164c4b77 (diff)
parent56dfbb59f9ad61d7f45d97f233db5d1cf0a46879 (diff)
Merge "Fixed metadata validation err. Fixes bug 965102."
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/compute/test_server_metadata.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/nova/tests/api/openstack/compute/test_server_metadata.py b/nova/tests/api/openstack/compute/test_server_metadata.py
index 61bf4fc47..aa4e47706 100644
--- a/nova/tests/api/openstack/compute/test_server_metadata.py
+++ b/nova/tests/api/openstack/compute/test_server_metadata.py
@@ -346,6 +346,31 @@ class ServerMetaDataTest(test.TestCase):
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
self.controller.create, req, self.uuid, data)
+ def test_invalid_metadata_items_on_create(self):
+ self.stubs.Set(nova.db, 'instance_metadata_update',
+ return_create_instance_metadata)
+ req = fakes.HTTPRequest.blank(self.url)
+ req.method = 'POST'
+ req.headers["content-type"] = "application/json"
+
+ #test for long key
+ data = {"metadata": {"a" * 260: "value1"}}
+ req.body = json.dumps(data)
+ self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
+ self.controller.create, req, self.uuid, data)
+
+ #test for long value
+ data = {"metadata": {"key": "v" * 260}}
+ req.body = json.dumps(data)
+ self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
+ self.controller.create, req, self.uuid, data)
+
+ #test for empty key.
+ data = {"metadata": {"": "value1"}}
+ req.body = json.dumps(data)
+ self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
+ self.controller.create, req, self.uuid, data)
+
def test_too_many_metadata_items_on_update_item(self):
self.stubs.Set(nova.db, 'instance_metadata_update',
return_create_instance_metadata)
@@ -359,3 +384,32 @@ class ServerMetaDataTest(test.TestCase):
self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
self.controller.update_all, req, self.uuid, data)
+
+ def test_invalid_metadata_items_on_update_item(self):
+ self.stubs.Set(nova.db, 'instance_metadata_update',
+ return_create_instance_metadata)
+ data = {"metadata": {}}
+ for num in range(FLAGS.quota_metadata_items + 1):
+ data['metadata']['key%i' % num] = "blah"
+ req = fakes.HTTPRequest.blank(self.url)
+ req.method = 'PUT'
+ req.body = json.dumps(data)
+ req.headers["content-type"] = "application/json"
+
+ #test for long key
+ data = {"metadata": {"a" * 260: "value1"}}
+ req.body = json.dumps(data)
+ self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
+ self.controller.update_all, req, self.uuid, data)
+
+ #test for long value
+ data = {"metadata": {"key": "v" * 260}}
+ req.body = json.dumps(data)
+ self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
+ self.controller.update_all, req, self.uuid, data)
+
+ #test for empty key.
+ data = {"metadata": {"": "value1"}}
+ req.body = json.dumps(data)
+ self.assertRaises(webob.exc.HTTPRequestEntityTooLarge,
+ self.controller.update_all, req, self.uuid, data)