def test_wait_for_stack_event_returns_on_update_complete(self, cloudformation_mock): timestamp = datetime.datetime.utcnow() template_mock = Mock(spec=CloudFormationTemplate) template_mock.url = "foo.yml" template_mock.get_template_body_dict.return_value = {} event = StackEvent() event.resource_type = "AWS::CloudFormation::Stack" event.resource_status = "UPDATE_COMPLETE" event.event_id = "123" event.timestamp = timestamp stack_events_mock = Mock() stack_events_mock.describe_stack_events.return_value = [event] cloudformation_mock.connect_to_region.return_value = stack_events_mock cfn = CloudFormation() cfn.wait_for_stack_events("foo", "UPDATE_COMPLETE", timestamp - timedelta(seconds=10), timeout=10)
def test_wait_for_stack_event_returns_on_start_event_with_valid_timestamp( self, cloudformation_mock): timestamp = datetime.datetime.utcnow() template_mock = Mock(spec=CloudFormationTemplate) template_mock.url = "foo.yml" template_mock.get_template_body_dict.return_value = {} event = StackEvent() event.resource_type = "AWS::CloudFormation::Stack" event.resource_status = "UPDATE_IN_PROGRESS" event.event_id = "123" event.timestamp = timestamp stack_events_mock = Mock() stack_events_mock.describe_stack_events.return_value = [event] cloudformation_mock.connect_to_region.return_value = stack_events_mock cfn = CloudFormation() event = cfn.wait_for_stack_events("foo", "UPDATE_IN_PROGRESS", timestamp - timedelta(seconds=10), timeout=10) self.assertEqual(timestamp, event.timestamp)
def test_wait_for_stack_event_raises_exception_on_rollback(self, cloudformation_mock): timestamp = datetime.datetime.utcnow() template_mock = Mock(spec=CloudFormationTemplate) template_mock.url = "foo.yml" template_mock.get_template_body_dict.return_value = {} event = StackEvent() event.resource_type = "AWS::CloudFormation::Stack" event.resource_status = "ROLLBACK_COMPLETE" event.event_id = "123" event.timestamp = timestamp stack_events_mock = Mock() stack_events_mock.describe_stack_events.return_value = [event] cloudformation_mock.connect_to_region.return_value = stack_events_mock cfn = CloudFormation() with self.assertRaises(Exception): cfn.wait_for_stack_events("foo", ["UPDATE_COMPLETE"], timestamp - timedelta(seconds=10), timeout=10)
def test_wait_for_stack_event_returns_on_start_event_with_valid_timestamp(self, cloudformation_mock): timestamp = datetime.datetime.utcnow() template_mock = Mock(spec=CloudFormationTemplate) template_mock.url = "foo.yml" template_mock.get_template_body_dict.return_value = {} event = StackEvent() event.resource_type = "AWS::CloudFormation::Stack" event.resource_status = "UPDATE_IN_PROGRESS" event.event_id = "123" event.timestamp = timestamp stack_events_mock = Mock() stack_events_mock.describe_stack_events.return_value = [event] cloudformation_mock.connect_to_region.return_value = stack_events_mock cfn = CloudFormation() event = cfn.wait_for_stack_events("foo", "UPDATE_IN_PROGRESS", timestamp - timedelta(seconds=10), timeout=10) self.assertEqual(timestamp, event.timestamp)
def test_wait_for_stack_event_returns_on_update_complete( self, cloudformation_mock): timestamp = datetime.datetime.utcnow() template_mock = Mock(spec=CloudFormationTemplate) template_mock.url = "foo.yml" template_mock.get_template_body_dict.return_value = {} event = StackEvent() event.resource_type = "AWS::CloudFormation::Stack" event.resource_status = "UPDATE_COMPLETE" event.event_id = "123" event.timestamp = timestamp stack_events_mock = Mock() stack_events_mock.describe_stack_events.return_value = [event] cloudformation_mock.connect_to_region.return_value = stack_events_mock cfn = CloudFormation() cfn.wait_for_stack_events("foo", "UPDATE_COMPLETE", timestamp - timedelta(seconds=10), timeout=10)
def test_wait_for_stack_event_raises_exception_on_rollback( self, cloudformation_mock): timestamp = datetime.datetime.utcnow() template_mock = Mock(spec=CloudFormationTemplate) template_mock.url = "foo.yml" template_mock.get_template_body_dict.return_value = {} event = StackEvent() event.resource_type = "AWS::CloudFormation::Stack" event.resource_status = "ROLLBACK_COMPLETE" event.event_id = "123" event.timestamp = timestamp stack_events_mock = Mock() stack_events_mock.describe_stack_events.return_value = [event] cloudformation_mock.connect_to_region.return_value = stack_events_mock cfn = CloudFormation() with self.assertRaises(Exception): cfn.wait_for_stack_events("foo", ["UPDATE_COMPLETE"], timestamp - timedelta(seconds=10), timeout=10)