diff options
author | Johannes Erdfelt <johannes.erdfelt@rackspace.com> | 2012-03-03 17:53:41 +0000 |
---|---|---|
committer | Johannes Erdfelt <johannes.erdfelt@rackspace.com> | 2012-03-04 17:22:36 +0000 |
commit | 8813ab185d0b6ad1c111e7f9e346e2ce91c8113b (patch) | |
tree | 13d4ae5f62ade4142c8b23ea1738742d90db6519 /nova/tests/test_api.py | |
parent | d0cae6b5a16a5873afbcd47ba8ee5e97b6a25072 (diff) | |
download | nova-8813ab185d0b6ad1c111e7f9e346e2ce91c8113b.tar.gz nova-8813ab185d0b6ad1c111e7f9e346e2ce91c8113b.tar.xz nova-8813ab185d0b6ad1c111e7f9e346e2ce91c8113b.zip |
assertRaises(Exception, ...) considered harmful
Expecting that Exception is raised can end up passing an a test when an
unexpected error occurs. For instance, errors in the unit test itself
can be masked:
https://review.openstack.org/4848
https://review.openstack.org/4873
https://review.openstack.org/4874
Change a variety of unit tests to expect a more specific exception so
we don't run into false positive tests in the future.
Change-Id: Ibc0c63b1f6b5574a3ce93d9f02c9d1ff5ac4a8b0
Diffstat (limited to 'nova/tests/test_api.py')
-rw-r--r-- | nova/tests/test_api.py | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/nova/tests/test_api.py b/nova/tests/test_api.py index 2ec9a1e81..7591df0c9 100644 --- a/nova/tests/test_api.py +++ b/nova/tests/test_api.py @@ -389,48 +389,45 @@ class ApiEc2TestCase(test.TestCase): group.authorize('tcp', 80, 81, '0.0.0.0/0') group.authorize('icmp', -1, -1, '0.0.0.0/0') group.authorize('udp', 80, 81, '0.0.0.0/0') + + def _assert(message, *args): + try: + group.authorize(*args) + except EC2ResponseError as e: + self.assertEqual(e.status, 400, 'Expected status to be 400') + self.assertIn(message, e.error_message, e.error_message) + else: + raise self.failureException, 'EC2ResponseError not raised' + # Invalid CIDR address - self.assertRaises(Exception, - group.authorize, 'tcp', 80, 81, '0.0.0.0/0444') + _assert('Invalid CIDR', 'tcp', 80, 81, '0.0.0.0/0444') # Missing ports - self.assertRaises(Exception, - group.authorize, 'tcp', '0.0.0.0/0') + _assert('Not enough parameters', 'tcp', '0.0.0.0/0') # from port cannot be greater than to port - self.assertRaises(Exception, - group.authorize, 'tcp', 100, 1, '0.0.0.0/0') + _assert('Invalid port range', 'tcp', 100, 1, '0.0.0.0/0') # For tcp, negative values are not allowed - self.assertRaises(Exception, - group.authorize, 'tcp', -1, 1, '0.0.0.0/0') + _assert('Invalid port range', 'tcp', -1, 1, '0.0.0.0/0') # For tcp, valid port range 1-65535 - self.assertRaises(Exception, - group.authorize, 'tcp', 1, 65599, '0.0.0.0/0') + _assert('Invalid port range', 'tcp', 1, 65599, '0.0.0.0/0') # For icmp, only -1:-1 is allowed for type:code - self.assertRaises(Exception, - group.authorize, 'icmp', -1, 0, '0.0.0.0/0') + _assert('An unknown error has occurred', 'icmp', -1, 0, '0.0.0.0/0') # Non valid type:code - self.assertRaises(Exception, - group.authorize, 'icmp', 0, 3, '0.0.0.0/0') + _assert('An unknown error has occurred', 'icmp', 0, 3, '0.0.0.0/0') # Invalid Cidr for ICMP type - self.assertRaises(Exception, - group.authorize, 'icmp', -1, -1, '0.0.444.0/4') + _assert('Invalid CIDR', 'icmp', -1, -1, '0.0.444.0/4') # Invalid protocol - self.assertRaises(Exception, - group.authorize, 'xyz', 1, 14, '0.0.0.0/0') + _assert('An unknown error has occurred', 'xyz', 1, 14, '0.0.0.0/0') # Invalid port - self.assertRaises(Exception, - group.authorize, 'tcp', " ", "81", '0.0.0.0/0') + _assert('An unknown error has occurred', 'tcp', " ", "81", '0.0.0.0/0') # Invalid icmp port - self.assertRaises(Exception, - group.authorize, 'icmp', " ", "81", '0.0.0.0/0') + _assert('An unknown error has occurred', 'icmp', " ", "81", + '0.0.0.0/0') # Invalid CIDR Address - self.assertRaises(Exception, - group.authorize, 'icmp', -1, -1, '0.0.0.0') + _assert('Invalid CIDR', 'icmp', -1, -1, '0.0.0.0') # Invalid CIDR Address - self.assertRaises(Exception, - group.authorize, 'icmp', -1, -1, '0.0.0.0/') + _assert('Invalid CIDR', 'icmp', -1, -1, '0.0.0.0/') # Invalid Cidr ports - self.assertRaises(Exception, - group.authorize, 'icmp', 1, 256, '0.0.0.0/0') + _assert('Invalid port range', 'icmp', 1, 256, '0.0.0.0/0') self.expect_http() self.mox.ReplayAll() |