package aws import ( "fmt" "testing" "github.com/awslabs/aws-sdk-go/aws" "github.com/awslabs/aws-sdk-go/service/elasticache" "github.com/hashicorp/terraform/helper/resource" "github.com/hashicorp/terraform/terraform" ) func TestAccAWSEcacheSubnetGroup(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckAWSEcacheSubnetGroupDestroy, Steps: []resource.TestStep{ resource.TestStep{ Config: testAccAWSEcacheSubnetGroupConfig, Check: resource.ComposeTestCheckFunc( testAccCheckAWSEcacheSubnetGroupExists("aws_elasticache_subnet_group.bar"), ), }, }, }) } func testAccCheckAWSEcacheSubnetGroupDestroy(s *terraform.State) error { conn := testAccProvider.Meta().(*AWSClient).elasticacheconn for _, rs := range s.RootModule().Resources { if rs.Type != "aws_elasticache_subnet_group" { continue } res, err := conn.DescribeCacheSubnetGroups(&elasticache.DescribeCacheSubnetGroupsInput{ CacheSubnetGroupName: aws.String(rs.Primary.ID), }) if err != nil { return err } if len(res.CacheSubnetGroups) > 0 { return fmt.Errorf("still exist.") } } return nil } func testAccCheckAWSEcacheSubnetGroupExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } if rs.Primary.ID == "" { return fmt.Errorf("No cache subnet group ID is set") } conn := testAccProvider.Meta().(*AWSClient).elasticacheconn _, err := conn.DescribeCacheSubnetGroups(&elasticache.DescribeCacheSubnetGroupsInput{ CacheSubnetGroupName: aws.String(rs.Primary.ID), }) if err != nil { return fmt.Errorf("CacheSubnetGroup error: %v", err) } return nil } } var testAccAWSEcacheSubnetGroupConfig = fmt.Sprintf(` resource "aws_vpc" "foo" { cidr_block = "192.168.1.1/16" tags { Name = "tf-test" } } resource "aws_subnet" "foo" { vpc_id = "${aws_vpc.foo.id}" cidr_block = "192.168.1.1/20" availability_zone = "us-west-2a" tags { Name = "tf-test" } } resource "aws_elasticache_subnet_group" "bar" { name = "tf-test-cache-subnet-%03d" description = "tf-test-cache-subnet-group-descr" subnet_ids = ["${aws_subnet.foo.id}"] } `, genRandInt())