github.com/skyscape-cloud-services/terraform@v0.9.2-0.20170609144644-7ece028a1747/builtin/providers/aws/resource_aws_vpn_gateway_route_propagation_test.go (about) 1 package aws 2 3 import ( 4 "errors" 5 "fmt" 6 "testing" 7 8 "github.com/aws/aws-sdk-go/service/ec2" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAWSVPNGatewayRoutePropagation_basic(t *testing.T) { 14 var rtID, gwID string 15 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 IDRefreshName: "aws_vpn_gateway_route_propagation.foo", 19 Providers: testAccProviders, 20 Steps: []resource.TestStep{ 21 { 22 Config: testAccAWSVPNGatewayRoutePropagation_basic, 23 Check: func(state *terraform.State) error { 24 conn := testAccProvider.Meta().(*AWSClient).ec2conn 25 26 rs := state.RootModule().Resources["aws_vpn_gateway_route_propagation.foo"] 27 if rs == nil { 28 return errors.New("missing resource state") 29 } 30 31 rtID = rs.Primary.Attributes["route_table_id"] 32 gwID = rs.Primary.Attributes["vpn_gateway_id"] 33 34 rtRaw, _, err := resourceAwsRouteTableStateRefreshFunc(conn, rtID)() 35 if err != nil { 36 return fmt.Errorf("failed to read route table: %s", err) 37 } 38 if rtRaw == nil { 39 return errors.New("route table doesn't exist") 40 } 41 42 rt := rtRaw.(*ec2.RouteTable) 43 exists := false 44 for _, vgw := range rt.PropagatingVgws { 45 if *vgw.GatewayId == gwID { 46 exists = true 47 } 48 } 49 if !exists { 50 return errors.New("route table does not list VPN gateway as a propagator") 51 } 52 53 return nil 54 }, 55 }, 56 }, 57 CheckDestroy: func(state *terraform.State) error { 58 conn := testAccProvider.Meta().(*AWSClient).ec2conn 59 60 rtRaw, _, err := resourceAwsRouteTableStateRefreshFunc(conn, rtID)() 61 if err != nil { 62 return fmt.Errorf("failed to read route table: %s", err) 63 } 64 if rtRaw != nil { 65 return errors.New("route table still exists") 66 } 67 return nil 68 }, 69 }) 70 71 } 72 73 const testAccAWSVPNGatewayRoutePropagation_basic = ` 74 resource "aws_vpc" "foo" { 75 cidr_block = "10.1.0.0/16" 76 } 77 78 resource "aws_vpn_gateway" "foo" { 79 vpc_id = "${aws_vpc.foo.id}" 80 } 81 82 resource "aws_route_table" "foo" { 83 vpc_id = "${aws_vpc.foo.id}" 84 } 85 86 resource "aws_vpn_gateway_route_propagation" "foo" { 87 vpn_gateway_id = "${aws_vpn_gateway.foo.id}" 88 route_table_id = "${aws_route_table.foo.id}" 89 } 90 `