github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/aws/resource_aws_customer_gateway_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/aws/awserr" 9 "github.com/aws/aws-sdk-go/service/ec2" 10 11 "github.com/hashicorp/terraform/helper/resource" 12 "github.com/hashicorp/terraform/terraform" 13 ) 14 15 func TestAccAWSCustomerGateway_basic(t *testing.T) { 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckCustomerGatewayDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccCustomerGatewayConfig, 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckCustomerGateway( 25 "aws_customer_gateway.foo", 26 ), 27 ), 28 }, 29 resource.TestStep{ 30 Config: testAccCustomerGatewayConfigUpdateTags, 31 Check: resource.ComposeTestCheckFunc( 32 testAccCheckCustomerGateway( 33 "aws_customer_gateway.foo", 34 ), 35 ), 36 }, 37 resource.TestStep{ 38 Config: testAccCustomerGatewayConfigForceReplace, 39 Check: resource.ComposeTestCheckFunc( 40 testAccCheckCustomerGateway( 41 "aws_customer_gateway.foo", 42 ), 43 ), 44 }, 45 }, 46 }) 47 } 48 49 func testAccCheckCustomerGatewayDestroy(s *terraform.State) error { 50 conn := testAccProvider.Meta().(*AWSClient).ec2conn 51 52 for _, rs := range s.RootModule().Resources { 53 if rs.Type != "aws_customer_gatewah" { 54 continue 55 } 56 57 gatewayFilter := &ec2.Filter{ 58 Name: aws.String("customer-gateway-id"), 59 Values: []*string{aws.String(rs.Primary.ID)}, 60 } 61 62 resp, err := conn.DescribeCustomerGateways(&ec2.DescribeCustomerGatewaysInput{ 63 Filters: []*ec2.Filter{gatewayFilter}, 64 }) 65 66 if ae, ok := err.(awserr.Error); ok && ae.Code() == "InvalidCustomerGatewayID.NotFound" { 67 continue 68 } 69 70 if err == nil { 71 if len(resp.CustomerGateways) > 0 { 72 return fmt.Errorf("Customer gateway still exists: %v", resp.CustomerGateways) 73 } 74 } 75 76 return err 77 } 78 79 return nil 80 } 81 82 func testAccCheckCustomerGateway(gatewayResource string) resource.TestCheckFunc { 83 return func(s *terraform.State) error { 84 rs, ok := s.RootModule().Resources[gatewayResource] 85 if !ok { 86 return fmt.Errorf("Not found: %s", gatewayResource) 87 } 88 89 if rs.Primary.ID == "" { 90 return fmt.Errorf("No ID is set") 91 } 92 93 gateway, ok := s.RootModule().Resources[gatewayResource] 94 if !ok { 95 return fmt.Errorf("Not found: %s", gatewayResource) 96 } 97 98 ec2conn := testAccProvider.Meta().(*AWSClient).ec2conn 99 gatewayFilter := &ec2.Filter{ 100 Name: aws.String("customer-gateway-id"), 101 Values: []*string{aws.String(gateway.Primary.ID)}, 102 } 103 104 _, err := ec2conn.DescribeCustomerGateways(&ec2.DescribeCustomerGatewaysInput{ 105 Filters: []*ec2.Filter{gatewayFilter}, 106 }) 107 108 if err != nil { 109 return err 110 } 111 112 return nil 113 } 114 } 115 116 const testAccCustomerGatewayConfig = ` 117 resource "aws_customer_gateway" "foo" { 118 bgp_asn = 60000 119 ip_address = "172.0.0.1" 120 type = "ipsec.1" 121 tags { 122 Name = "foo-gateway" 123 } 124 } 125 ` 126 127 // Add the Another: "tag" tag. 128 const testAccCustomerGatewayConfigUpdateTags = ` 129 resource "aws_customer_gateway" "foo" { 130 bgp_asn = 60000 131 ip_address = "172.0.0.1" 132 type = "ipsec.1" 133 tags { 134 Name = "foo-gateway" 135 Another = "tag" 136 } 137 } 138 ` 139 140 // Change the ip_address. 141 const testAccCustomerGatewayConfigForceReplace = ` 142 resource "aws_customer_gateway" "foo" { 143 bgp_asn = 60000 144 ip_address = "172.10.10.1" 145 type = "ipsec.1" 146 tags { 147 Name = "foo-gateway" 148 Another = "tag" 149 } 150 } 151 `