def test_get_stack_order_accepts_stacks_without_parameters_key(self): stacks = {'default-sg': {}, 'app1': None, 'app2': {}, 'vpc': {}, } result = 4 self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))
def test_get_stack_order_includes_independent_stacks(self): stacks = {'default-sg': StackConfig({'template-url': 'horst.yml'}), 'app1': StackConfig( {'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id'}}), 'app2': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id', 'c': 'Ref::app1.id'}}), 'vpc': StackConfig({'template-url': 'horst.yml', 'parameters': {'logBucketName': 'is24-cloudtrail-logs', 'includeGlobalServices': False}}) } result = 4 self.assertEqual(result, len(DependencyResolver.get_stack_order(stacks)))
def test_get_stack_order_returns_a_valid_order(self): stacks = {'default-sg': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': 'Ref::vpc.id'}}), 'app1': StackConfig( {'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id'}}), 'app2': StackConfig({'template-url': 'horst.yml', 'parameters': {'a': '|Ref|vpc.id', 'b': '|Ref|default-sg.id', 'c': '|Ref|app1.id'}}), 'vpc': StackConfig({'template-url': 'horst.yml', 'parameters': {'logBucketName': 'is24-cloudtrail-logs', 'includeGlobalServices': False}}) } expected = ['vpc', 'default-sg', 'app1', 'app2'] self.assertEqual(expected, DependencyResolver.get_stack_order(stacks))
def test_get_stack_order_raises_exception_on_cyclic_dependency(self): stacks = {'app1': {'parameters': {'a': 'Ref::app2.id'}}, 'app2': {'parameters': {'a': 'Ref::app1.id'}} } with self.assertRaises(Exception): DependencyResolver.get_stack_order(stacks)