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 `