public void ShouldFailIfStackIsBroken(string stackStatus, StackOperationalState expectedOutcome) { var logger = new TestLogger(this.output); var mockClientFactory = TestHelpers.GetClientFactoryMock(); var mockContext = TestHelpers.GetContextMock(logger); var mockCloudFormation = new Mock <IAmazonCloudFormation>(); mockCloudFormation.SetupSequence(cf => cf.DescribeStacksAsync(It.IsAny <DescribeStacksRequest>(), default)) .ReturnsAsync( new DescribeStacksResponse { Stacks = new List <Stack> { new Stack() { StackName = StackName, StackStatus = StackStatus.FindValue(stackStatus) } } }).ReturnsAsync( new DescribeStacksResponse { Stacks = new List <Stack> { new Stack() { StackName = StackName, StackStatus = StackStatus.FindValue(stackStatus) } } }); mockClientFactory.Setup(f => f.CreateCloudFormationClient()).Returns(mockCloudFormation.Object); var runner = CloudFormationRunner.Builder(mockContext.Object, StackName) .WithClientFactory(mockClientFactory.Object) .WithTemplateLocation(this.fixture.TestStackJsonTemplate.FullPath).Build(); Func <Task <CloudFormationResult> > action = async() => await runner.UpdateStackAsync(null); action.Should().Throw <StackOperationException>().And.OperationalState.Should().Be(expectedOutcome); }
/// <summary> /// Initializes a new instance of the <see cref="StackOperationException"/> class. /// </summary> /// <param name="stack">The stack.</param> /// <param name="state">The operational state.</param> public StackOperationException(Stack stack, StackOperationalState state) : base(OperationalStateMessages[state]) { this.Stack = stack; this.OperationalState = state; }