Added tests for checking of handling AssertionErrors
The following tests have been added: *test_engine_service.test_validate_new_stack_handle_assertion_error *test_stack.test_validate_assertion_exception_rethrow *test_stack_resource.test_validate_assertion_exception_rethrow These tests are focused on checking the cases when we should return 500 status codes and log the tracebacks for AssertionException, but not wrap in the validation exception. Related commit: I71d91a5413d7f026b332014487583b7f2762b322 Closes-Bug: #1456839 Change-Id: I30c2a91043465aa14c39cae5fb0b0d2c17e059e9
This commit is contained in:
parent
25cff7933d
commit
e18bb22acd
|
@ -2931,6 +2931,14 @@ class StackServiceTest(common.HeatTestCase):
|
|||
self.eng._validate_new_stack,
|
||||
self.ctx, 'test_existing_stack', parsed_template)
|
||||
|
||||
def test_validate_new_stack_handle_assertion_error(self):
|
||||
tmpl = mock.MagicMock()
|
||||
expected_message = 'Expected assertion error'
|
||||
tmpl.validate.side_effect = AssertionError(expected_message)
|
||||
exc = self.assertRaises(AssertionError, self.eng._validate_new_stack,
|
||||
self.ctx, 'stack_name', tmpl)
|
||||
self.assertEqual(expected_message, six.text_type(exc))
|
||||
|
||||
@mock.patch('heat.engine.service.ThreadGroupManager',
|
||||
return_value=mock.Mock())
|
||||
@mock.patch.object(stack_object.Stack, 'get_all')
|
||||
|
|
|
@ -2122,6 +2122,39 @@ class StackTest(common.HeatTestCase):
|
|||
self.assertIsNone(tmpl_stack.prev_raw_template_id)
|
||||
self.assertFalse(mock_store.called)
|
||||
|
||||
def test_validate_assertion_exception_rethrow(self):
|
||||
expected_msg = 'Expected Assertion Error'
|
||||
with mock.patch('heat.engine.stack.dependencies',
|
||||
new_callable=mock.PropertyMock) as mock_dependencies:
|
||||
mock_dependency = mock.MagicMock()
|
||||
mock_dependency.validate.side_effect = AssertionError(expected_msg)
|
||||
mock_dependencies.Dependencies.return_value = [mock_dependency]
|
||||
stc = stack.Stack(self.ctx, utils.random_name(), self.tmpl)
|
||||
expected_exception = self.assertRaises(AssertionError,
|
||||
stc.validate)
|
||||
self.assertEqual(expected_msg, six.text_type(expected_exception))
|
||||
mock_dependency.validate.assert_called_once_with()
|
||||
|
||||
stc = stack.Stack(self.ctx, utils.random_name(), self.tmpl)
|
||||
output_value = mock.MagicMock()
|
||||
output_value.get.side_effect = AssertionError(expected_msg)
|
||||
stc.outputs = {'foo': output_value}
|
||||
expected_exception = self.assertRaises(AssertionError, stc.validate)
|
||||
self.assertEqual(expected_msg, six.text_type(expected_exception))
|
||||
output_value.get.assert_called_once_with('Value')
|
||||
|
||||
def test_resolve_static_data_assertion_exception_rethrow(self):
|
||||
tmpl = mock.MagicMock()
|
||||
expected_message = 'Expected Assertion Error'
|
||||
tmpl.parse.side_effect = AssertionError(expected_message)
|
||||
|
||||
stc = stack.Stack(self.ctx, utils.random_name(),
|
||||
tmpl, resolve_data=False)
|
||||
expected_exception = self.assertRaises(AssertionError,
|
||||
stc.resolve_static_data,
|
||||
None)
|
||||
self.assertEqual(expected_message, six.text_type(expected_exception))
|
||||
|
||||
|
||||
class StackKwargsForCloningTest(common.HeatTestCase):
|
||||
scenarios = [
|
||||
|
|
|
@ -645,6 +645,22 @@ class StackResourceAttrTest(StackResourceBaseTest):
|
|||
self.assertFalse(nested.strict_validate)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_validate_assertion_exception_rethrow(self):
|
||||
expected_message = 'Expected Assertion Error'
|
||||
self.parent_resource.child_template = mock.Mock(return_value='foo')
|
||||
self.parent_resource.child_params = mock.Mock(return_value={})
|
||||
self.m.StubOutWithMock(stack_resource.StackResource,
|
||||
'_parse_nested_stack')
|
||||
name = '%s-%s' % (self.parent_stack.name, self.parent_resource.name)
|
||||
stack_resource.StackResource._parse_nested_stack(
|
||||
name, 'foo', {}).AndRaise(AssertionError(expected_message))
|
||||
|
||||
self.m.ReplayAll()
|
||||
exc = self.assertRaises(AssertionError,
|
||||
self.parent_resource.validate_nested_stack)
|
||||
self.assertEqual(expected_message, six.text_type(exc))
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
||||
class StackResourceCheckCompleteTest(StackResourceBaseTest):
|
||||
scenarios = [
|
||||
|
|
Loading…
Reference in New Issue