Esempio n. 1
0
        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;
 }