github.com/ndarilek/terraform@v0.3.8-0.20150320140257-d3135c1b2bac/builtin/providers/aws/resource_aws_db_subnet_group_test.go (about)

     1  package aws
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/helper/resource"
     8  	"github.com/hashicorp/terraform/terraform"
     9  
    10  	"github.com/hashicorp/aws-sdk-go/aws"
    11  	"github.com/hashicorp/aws-sdk-go/gen/rds"
    12  )
    13  
    14  func TestAccAWSDBSubnetGroup(t *testing.T) {
    15  	var v rds.DBSubnetGroup
    16  
    17  	testCheck := func(*terraform.State) error {
    18  		return nil
    19  	}
    20  
    21  	resource.Test(t, resource.TestCase{
    22  		PreCheck:     func() { testAccPreCheck(t) },
    23  		Providers:    testAccProviders,
    24  		CheckDestroy: testAccCheckDBSubnetGroupDestroy,
    25  		Steps: []resource.TestStep{
    26  			resource.TestStep{
    27  				Config: testAccDBSubnetGroupConfig,
    28  				Check: resource.ComposeTestCheckFunc(
    29  					testAccCheckDBSubnetGroupExists(
    30  						"aws_db_subnet_group.foo", &v),
    31  					testCheck,
    32  				),
    33  			},
    34  		},
    35  	})
    36  }
    37  
    38  func testAccCheckDBSubnetGroupDestroy(s *terraform.State) error {
    39  	conn := testAccProvider.Meta().(*AWSClient).rdsconn
    40  
    41  	for _, rs := range s.RootModule().Resources {
    42  		if rs.Type != "aws_db_subnet_group" {
    43  			continue
    44  		}
    45  
    46  		// Try to find the resource
    47  		resp, err := conn.DescribeDBSubnetGroups(
    48  			&rds.DescribeDBSubnetGroupsMessage{DBSubnetGroupName: aws.String(rs.Primary.ID)})
    49  		if err == nil {
    50  			if len(resp.DBSubnetGroups) > 0 {
    51  				return fmt.Errorf("still exist.")
    52  			}
    53  
    54  			return nil
    55  		}
    56  
    57  		// Verify the error is what we want
    58  		rdserr, ok := err.(aws.APIError)
    59  		if !ok {
    60  			return err
    61  		}
    62  		if rdserr.Code != "DBSubnetGroupNotFoundFault" {
    63  			return err
    64  		}
    65  	}
    66  
    67  	return nil
    68  }
    69  
    70  func testAccCheckDBSubnetGroupExists(n string, v *rds.DBSubnetGroup) resource.TestCheckFunc {
    71  	return func(s *terraform.State) error {
    72  		rs, ok := s.RootModule().Resources[n]
    73  		if !ok {
    74  			return fmt.Errorf("Not found: %s", n)
    75  		}
    76  
    77  		if rs.Primary.ID == "" {
    78  			return fmt.Errorf("No ID is set")
    79  		}
    80  
    81  		conn := testAccProvider.Meta().(*AWSClient).rdsconn
    82  		resp, err := conn.DescribeDBSubnetGroups(
    83  			&rds.DescribeDBSubnetGroupsMessage{DBSubnetGroupName: aws.String(rs.Primary.ID)})
    84  		if err != nil {
    85  			return err
    86  		}
    87  		if len(resp.DBSubnetGroups) == 0 {
    88  			return fmt.Errorf("DbSubnetGroup not found")
    89  		}
    90  
    91  		*v = resp.DBSubnetGroups[0]
    92  
    93  		return nil
    94  	}
    95  }
    96  
    97  const testAccDBSubnetGroupConfig = `
    98  resource "aws_vpc" "foo" {
    99  	cidr_block = "10.1.0.0/16"
   100  }
   101  
   102  resource "aws_subnet" "foo" {
   103  	cidr_block = "10.1.1.0/24"
   104  	availability_zone = "us-west-2a"
   105  	vpc_id = "${aws_vpc.foo.id}"
   106  }
   107  
   108  resource "aws_subnet" "bar" {
   109  	cidr_block = "10.1.2.0/24"
   110  	availability_zone = "us-west-2b"
   111  	vpc_id = "${aws_vpc.foo.id}"
   112  }
   113  
   114  resource "aws_db_subnet_group" "foo" {
   115  	name = "foo"
   116  	description = "foo description"
   117  	subnet_ids = ["${aws_subnet.foo.id}", "${aws_subnet.bar.id}"]
   118  }
   119  `