diff options
| author | Unmesh Gurjar <unmesh.gurjar@vertex.co.in> | 2012-04-02 11:52:37 +0530 |
|---|---|---|
| committer | Unmesh Gurjar <unmesh.gurjar@vertex.co.in> | 2012-04-12 10:59:32 +0530 |
| commit | 56dfbb59f9ad61d7f45d97f233db5d1cf0a46879 (patch) | |
| tree | 6b5f309d2649ceaabf5d8ed63a59548915f5fc56 /nova/tests | |
| parent | 42f3bec10c7f7374ad4e9752b275b02ca2b2fdb9 (diff) | |
Fixed metadata validation err. Fixes bug 965102.
1. Fixed the error message on specifying invalid server metadata key/value.
2. Added check to disallow specifying blank metadata key.
3. Added unit test coverage.
Addressed review comments.
Change-Id: I1f0002971dc236045d6e622641f46a4a30249d54
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/openstack/compute/test_server_metadata.py | 54 |
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) |
