summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorRick Harris <rconradharris@gmail.com>2013-06-05 22:44:35 +0000
committerRick Harris <rconradharris@gmail.com>2013-06-06 23:14:49 +0000
commitfd55a4e1d049748634e6d802ca124cb67596cd52 (patch)
tree3861ca3aa5e2b619d0b1b1ef3b59c8e9ab849819 /nova/tests
parent364a00019daea8e2c8006de6e0fafc2193808659 (diff)
downloadnova-fd55a4e1d049748634e6d802ca124cb67596cd52.tar.gz
nova-fd55a4e1d049748634e6d802ca124cb67596cd52.tar.xz
nova-fd55a4e1d049748634e6d802ca124cb67596cd52.zip
Improve Keypair error messages in osapi
The KeypairAPI code provides useful error messages that weren't being percolated back through the OpenStack API. This patch addresses this by using the original `message` when crafting the HTTPException objects. References bug 1187952 Change-Id: I786a225010d912d7bfea5c01838ddcf43fd90d53
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_keypairs.py32
-rw-r--r--nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py31
-rw-r--r--nova/tests/compute/test_keypairs.py2
3 files changed, 60 insertions, 5 deletions
diff --git a/nova/tests/api/openstack/compute/contrib/test_keypairs.py b/nova/tests/api/openstack/compute/contrib/test_keypairs.py
index e338cad69..56b9fe84b 100644
--- a/nova/tests/api/openstack/compute/contrib/test_keypairs.py
+++ b/nova/tests/api/openstack/compute/contrib/test_keypairs.py
@@ -100,8 +100,12 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ 'Keypair name must be between 1 and 255 characters long',
+ res_dict['badRequest']['message'])
- def test_keypair_create_with_invalid_name(self):
+ def test_keypair_create_with_name_too_long(self):
body = {
'keypair': {
'name': 'a' * 256
@@ -113,6 +117,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ 'Keypair name must be between 1 and 255 characters long',
+ res_dict['badRequest']['message'])
def test_keypair_create_with_non_alphanumeric_name(self):
body = {
@@ -127,6 +135,10 @@ class KeypairsTest(test.TestCase):
res = req.get_response(self.app)
res_dict = jsonutils.loads(res.body)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Keypair name contains unsafe characters",
+ res_dict['badRequest']['message'])
def test_keypair_import(self):
body = {
@@ -183,6 +195,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 413)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Quota exceeded, too many key pairs.",
+ res_dict['overLimit']['message'])
def test_keypair_create_quota_limit(self):
@@ -203,6 +219,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 413)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Quota exceeded, too many key pairs.",
+ res_dict['overLimit']['message'])
def test_keypair_create_duplicate(self):
self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate)
@@ -213,6 +233,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 409)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Key pair 'create_duplicate' already exists.",
+ res_dict['conflictingRequest']['message'])
def test_keypair_import_bad_key(self):
body = {
@@ -229,6 +253,10 @@ class KeypairsTest(test.TestCase):
res = req.get_response(self.app)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual("Keypair data is invalid",
+ res_dict['badRequest']['message'])
+
def test_keypair_delete(self):
req = webob.Request.blank('/v2/fake/os-keypairs/FAKE')
req.method = 'DELETE'
@@ -305,7 +333,7 @@ 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):
+ def test_keypair_create_with_invalid_keypair_body(self):
body = {'alpha': {'name': 'create_test'}}
req = webob.Request.blank('/v1.1/fake/os-keypairs')
req.method = 'POST'
diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py b/nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py
index 529c5eb71..bb74fdafc 100644
--- a/nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py
+++ b/nova/tests/api/openstack/compute/plugins/v3/test_keypairs.py
@@ -102,8 +102,12 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ 'Keypair name must be between 1 and 255 characters long',
+ res_dict['badRequest']['message'])
- def test_keypair_create_with_invalid_name(self):
+ def test_keypair_create_with_name_too_long(self):
body = {
'keypair': {
'name': 'a' * 256
@@ -115,6 +119,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ 'Keypair name must be between 1 and 255 characters long',
+ res_dict['badRequest']['message'])
def test_keypair_create_with_non_alphanumeric_name(self):
body = {
@@ -129,6 +137,10 @@ class KeypairsTest(test.TestCase):
res = req.get_response(self.app)
res_dict = jsonutils.loads(res.body)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Keypair name contains unsafe characters",
+ res_dict['badRequest']['message'])
def test_keypair_import(self):
body = {
@@ -185,6 +197,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 413)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Quota exceeded, too many key pairs.",
+ res_dict['overLimit']['message'])
def test_keypair_create_quota_limit(self):
@@ -205,6 +221,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 413)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Quota exceeded, too many key pairs.",
+ res_dict['overLimit']['message'])
def test_keypair_create_duplicate(self):
self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate)
@@ -215,6 +235,10 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 409)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual(
+ "Key pair 'create_duplicate' already exists.",
+ res_dict['conflictingRequest']['message'])
def test_keypair_import_bad_key(self):
body = {
@@ -230,6 +254,9 @@ class KeypairsTest(test.TestCase):
req.headers['Content-Type'] = 'application/json'
res = req.get_response(self.app)
self.assertEqual(res.status_int, 400)
+ res_dict = jsonutils.loads(res.body)
+ self.assertEqual("Keypair data is invalid",
+ res_dict['badRequest']['message'])
def test_keypair_delete(self):
req = webob.Request.blank('/v3/os-keypairs/FAKE')
@@ -307,7 +334,7 @@ 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):
+ def test_keypair_create_with_invalid_keypair_body(self):
body = {'alpha': {'name': 'create_test'}}
req = webob.Request.blank('/v3/os-keypairs')
req.method = 'POST'
diff --git a/nova/tests/compute/test_keypairs.py b/nova/tests/compute/test_keypairs.py
index a6fbda71b..fcb21b3e6 100644
--- a/nova/tests/compute/test_keypairs.py
+++ b/nova/tests/compute/test_keypairs.py
@@ -113,7 +113,7 @@ class CreateImportSharedTestMixIn(object):
self.stubs.Set(db, "key_pair_create", db_key_pair_create_duplicate)
- msg = (_("Key pair %(key_name)s already exists.") %
+ msg = (_("Key pair '%(key_name)s' already exists.") %
{'key_name': self.existing_key_name})
self.assertKeyNameRaises(exception.KeyPairExists, msg,
self.existing_key_name)