diff options
| author | Vishvananda Ishaya <vishvananda@gmail.com> | 2011-08-26 17:40:22 -0700 |
|---|---|---|
| committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2011-08-26 17:40:22 -0700 |
| commit | 470b9dc73c5e27ef8716436fe22e9f32dbdffd28 (patch) | |
| tree | 334c9611bd5aeb6a02aa6b9f09f116c4660d2b83 | |
| parent | 0343a328e66557abda9d0817558ad09a73962eb9 (diff) | |
| download | nova-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__.py | 19 | ||||
| -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.py | 7 |
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) |
