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  `