summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-08-26 17:40:22 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2011-08-26 17:40:22 -0700
commit470b9dc73c5e27ef8716436fe22e9f32dbdffd28 (patch)
tree334c9611bd5aeb6a02aa6b9f09f116c4660d2b83
parent0343a328e66557abda9d0817558ad09a73962eb9 (diff)
downloadnova-470b9dc73c5e27ef8716436fe22e9f32dbdffd28.tar.gz
nova-470b9dc73c5e27ef8716436fe22e9f32dbdffd28.tar.xz
nova-470b9dc73c5e27ef8716436fe22e9f32dbdffd28.zip
add tests to verify NotFound exceptions are wrapped with the proper ids
-rw-r--r--nova/tests/api/ec2/__init__.py19
-rw-r--r--nova/tests/api/ec2/test_middleware.py (renamed from nova/tests/test_middleware.py)45
-rw-r--r--nova/tests/test_cloud.py7
3 files changed, 64 insertions, 7 deletions
diff --git a/nova/tests/api/ec2/__init__.py b/nova/tests/api/ec2/__init__.py
new file mode 100644
index 000000000..6dab802f2
--- /dev/null
+++ b/nova/tests/api/ec2/__init__.py
@@ -0,0 +1,19 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 Openstack LLC.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# NOTE(vish): this forces the fixtures from tests/__init.py:setup() to work
+from nova.tests import *
diff --git a/nova/tests/test_middleware.py b/nova/tests/api/ec2/test_middleware.py
index 40d117c45..295f6c4ea 100644
--- a/nova/tests/test_middleware.py
+++ b/nova/tests/api/ec2/test_middleware.py
@@ -21,10 +21,13 @@ import webob.dec
import webob.exc
from nova.api import ec2
+from nova import context
+from nova import exception
from nova import flags
from nova import test
from nova import utils
+from xml.etree.ElementTree import fromstring as xml_to_tree
FLAGS = flags.FLAGS
@@ -83,3 +86,45 @@ class LockoutTestCase(test.TestCase):
utils.advance_time_seconds(FLAGS.lockout_window * 60)
self._send_bad_attempts('test', FLAGS.lockout_attempts - 1)
self.assertFalse(self._is_locked_out('test'))
+
+
+class ExecutorTestCase(test.TestCase):
+ def setUp(self):
+ super(ExecutorTestCase, self).setUp()
+ self.executor = ec2.Executor()
+
+ def _execute(self, invoke):
+ class Fake(object):
+ pass
+ fake_ec2_request = Fake()
+ fake_ec2_request.invoke = invoke
+
+ fake_wsgi_request = Fake()
+
+ fake_wsgi_request.environ = {
+ 'nova.context': context.get_admin_context(),
+ 'ec2.request': fake_ec2_request,
+ }
+ return self.executor(fake_wsgi_request)
+
+ def _extract_message(self, result):
+ tree = xml_to_tree(result.body)
+ return tree.findall('./Errors')[0].find('Error/Message').text
+
+ def test_instance_not_found(self):
+ def not_found(context):
+ raise exception.InstanceNotFound(instance_id=5)
+ result = self._execute(not_found)
+ self.assertIn('i-00000005', self._extract_message(result))
+
+ def test_snapshot_not_found(self):
+ def not_found(context):
+ raise exception.SnapshotNotFound(snapshot_id=5)
+ result = self._execute(not_found)
+ self.assertIn('snap-00000005', self._extract_message(result))
+
+ def test_volume_not_found(self):
+ def not_found(context):
+ raise exception.VolumeNotFound(volume_id=5)
+ result = self._execute(not_found)
+ self.assertIn('vol-00000005', self._extract_message(result))
diff --git a/nova/tests/test_cloud.py b/nova/tests/test_cloud.py
index 0793784f8..1bf12a06f 100644
--- a/nova/tests/test_cloud.py
+++ b/nova/tests/test_cloud.py
@@ -86,13 +86,6 @@ class CloudTestCase(test.TestCase):
self.stubs.Set(rpc, 'cast', finish_cast)
- def tearDown(self):
- networks = db.project_get_networks(self.context, self.project_id,
- associate=False)
- for network in networks:
- db.network_disassociate(self.context, network['id'])
- super(CloudTestCase, self).tearDown()
-
def _create_key(self, name):
# NOTE(vish): create depends on pool, so just call helper directly
return cloud._gen_key(self.context, self.context.user_id, name)