private void SetUpResponse()
        {
            var response       = new DescribeInstancesResponse();
            var reservationOne = new Reservation
            {
                Instances = new List <Instance>
                {
                    GenerateInstance("one", InstanceStateName.Running),
                    GenerateInstance("two", InstanceStateName.Stopped),
                    GenerateInstance("three", InstanceStateName.Terminated)
                }
            };

            var reservationTwo = new Reservation
            {
                Instances = new List <Instance>
                {
                    GenerateInstance("four", InstanceStateName.Terminated),
                    GenerateInstance("five", InstanceStateName.Terminated),
                    GenerateInstance("six", InstanceStateName.Running),
                    GenerateInstance("seven", InstanceStateName.Stopping)
                }
            };

            response.Reservations = new List <Reservation> {
                reservationOne, reservationTwo
            };
            Ec2ClientMock.Setup(x => x.DescribeInstances()).Returns(response);
        }
        public void GetInstance()
        {
            // Arrange
            const string instanceId = "eight";
            var          request    = new DescribeInstancesRequest {
                InstanceIds = new List <string> {
                    instanceId
                }
            };
            var response = new DescribeInstancesResponse
            {
                Reservations = new List <Reservation>
                {
                    new Reservation
                    {
                        Instances = new List <Instance>
                        {
                            GenerateInstance(instanceId, InstanceStateName.Running)
                        }
                    }
                }
            };

            Ec2ClientMock.Setup(x => x.DescribeInstances(It.Is <DescribeInstancesRequest>(
                                                             req => req.InstanceIds.First() == request.InstanceIds.First()
                                                             ))).Returns(response);

            // Act
            Instance instance = InstanceService.GetInstance(instanceId);

            // Assert
            instance.State.Name.Should().Be(InstanceStateName.Running);
        }
        public void GetSubnetsByVpcId_Ok()
        {
            // Arrange
            const string vpcId          = "VpcOne";
            var          subnetInVpcOne = new Subnet {
                VpcId = vpcId
            };
            var subnetInVpcTwo = new Subnet {
                VpcId = "VpcTwo"
            };
            var subnets = new List <Subnet>
            {
                subnetInVpcOne,
                subnetInVpcTwo
            };
            var response = new DescribeSubnetsResponse {
                Subnets = subnets
            };

            Ec2ClientMock.Setup(x => x.DescribeSubnets(It.IsAny <DescribeSubnetsRequest>())).Returns(response);

            // Act
            var actualSubnets = NetworkService.GetSubnets(vpcId);

            // Assert
            actualSubnets.Single().Should().BeSameAs(subnetInVpcOne);
        }
        public void GetAllocatedIpAddresses_Ok()
        {
            // Arrange
            var response = new DescribeInstancesResponse
            {
                Reservations = new List <Reservation>
                {
                    new Reservation
                    {
                        Instances = new List <Instance>
                        {
                            new Instance {
                                PrivateIpAddress = "192.168.10.10"
                            },
                            new Instance {
                                PrivateIpAddress = "192.168.10.11"
                            }
                        }
                    },
                    new Reservation
                    {
                        Instances = new List <Instance>
                        {
                            new Instance {
                                PrivateIpAddress = "192.168.10.12"
                            },
                            new Instance {
                                PrivateIpAddress = "192.168.10.13"
                            }
                        }
                    }
                }
            };

            Ec2ClientMock.Setup(x => x.DescribeInstances(It.IsAny <DescribeInstancesRequest>())).Returns(response);
            var expected = new List <string> {
                "192.168.10.10", "192.168.10.11", "192.168.10.12", "192.168.10.13"
            };

            // Act
            var actual = NetworkService.GetAllocatedIpAddresses();

            // Assert
            actual.Should().BeEquivalentTo(expected);
        }
        public void GetVpcs_Ok()
        {
            // Arrange
            var vpcs = new List <Vpc> {
                new Vpc()
            };
            var response = new DescribeVpcsResponse {
                Vpcs = vpcs
            };

            Ec2ClientMock.Setup(x => x.DescribeVpcs(It.IsAny <DescribeVpcsRequest>())).Returns(response);

            // Act
            var actualVpcs = NetworkService.GetVpcs();

            // Assert
            actualVpcs.Should().BeSameAs(vpcs);
        }
        public void GetCidrBySubnet_Ok()
        {
            // Arrange
            const string subnetId = "SubnetOne";
            const string cidr     = "192.0.0.0/24";
            var          response = new DescribeSubnetsResponse {
                Subnets = new List <Subnet> {
                    new Subnet {
                        CidrBlock = "192.0.0.0/24"
                    }
                }
            };

            Ec2ClientMock.Setup(x => x.DescribeSubnets(It.Is <DescribeSubnetsRequest>(req => req.SubnetIds.Contains("SubnetOne")))).Returns(response);

            // Act
            var results = NetworkService.GetCidrBySubnetId(subnetId);

            // Assert
            results.Should().Be(cidr);
        }