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