terraform/builtin/providers/aws/import_aws_elasticache_clus...

37 lines
850 B
Go
Raw Normal View History

package aws
import (
"os"
"testing"
provider/aws: Support Import of aws_elasticache_cluster Initial tests were failing as follows: ``` === RUN TestAccAWSElasticacheCluster_importBasic --- FAIL: TestAccAWSElasticacheCluster_importBasic (362.66s) testing.go:265: Step 1 error: ImportStateVerify attributes not equivalent. Difference is shown below. Top is actual, bottom is expected. (map[string]string) { } (map[string]string) (len=2) { (string) (len=20) "parameter_group_name": (string) (len=20) "default.memcached1.4", (string) (len=22) "security_group_names.#": (string) (len=1) "0" } FAIL exit status 1 ``` The import of ElastiCache clusters helped to point out 3 things: 1. Currently, we were trying to set the parameter_group_name as follows: ``` d.Set("parameter_group_name", c.CacheParameterGroup) ``` Unfortunately, c.CacheParameterGroup is a struct not a string. This was causing the test import failure. So this had to be replaced as follows: ``` if c.CacheParameterGroup != nil { d.Set("parameter_group_name", c.CacheParameterGroup.CacheParameterGroupName) } ``` 2. We were trying to set the security_group_names as follows: ``` d.Set("security_group_names", c.CacheSecurityGroups) ``` The CacheSecurityGroups was actually a []* so had to be changed to work as follows: ``` if len(c.CacheSecurityGroups) > 0 { d.Set("security_group_names", flattenElastiCacheSecurityGroupNames(c.CacheSecurityGroups)) } ``` 3. We were trying to set the security_group_ids as follows: ``` d.Set("security_group_ids", c.SecurityGroups) ``` This is another []* and needs to be changed as follows: ``` if len(c.SecurityGroups) > 0 { d.Set("security_group_ids", flattenElastiCacheSecurityGroupIds(c.SecurityGroups)) } ``` This then allows the import test to pass as expected: ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheCluster_importBasic' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2016/09/23 10:59:01 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheCluster_importBasic -timeout 120m === RUN TestAccAWSElasticacheCluster_importBasic --- PASS: TestAccAWSElasticacheCluster_importBasic (351.96s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 351.981s ``` As a final test, I ran the basic ElastiCache cluster creation to make sure all passed as expected: ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheCluster_basic' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2016/09/23 11:05:51 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheCluster_basic -timeout 120m === RUN TestAccAWSElasticacheCluster_basic --- PASS: TestAccAWSElasticacheCluster_basic (809.25s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 809.267s ```
2016-09-23 12:06:19 +02:00
"github.com/hashicorp/terraform/helper/acctest"
"github.com/hashicorp/terraform/helper/resource"
)
func TestAccAWSElasticacheCluster_importBasic(t *testing.T) {
oldvar := os.Getenv("AWS_DEFAULT_REGION")
os.Setenv("AWS_DEFAULT_REGION", "us-east-1")
defer os.Setenv("AWS_DEFAULT_REGION", oldvar)
provider/aws: Support Import of aws_elasticache_cluster Initial tests were failing as follows: ``` === RUN TestAccAWSElasticacheCluster_importBasic --- FAIL: TestAccAWSElasticacheCluster_importBasic (362.66s) testing.go:265: Step 1 error: ImportStateVerify attributes not equivalent. Difference is shown below. Top is actual, bottom is expected. (map[string]string) { } (map[string]string) (len=2) { (string) (len=20) "parameter_group_name": (string) (len=20) "default.memcached1.4", (string) (len=22) "security_group_names.#": (string) (len=1) "0" } FAIL exit status 1 ``` The import of ElastiCache clusters helped to point out 3 things: 1. Currently, we were trying to set the parameter_group_name as follows: ``` d.Set("parameter_group_name", c.CacheParameterGroup) ``` Unfortunately, c.CacheParameterGroup is a struct not a string. This was causing the test import failure. So this had to be replaced as follows: ``` if c.CacheParameterGroup != nil { d.Set("parameter_group_name", c.CacheParameterGroup.CacheParameterGroupName) } ``` 2. We were trying to set the security_group_names as follows: ``` d.Set("security_group_names", c.CacheSecurityGroups) ``` The CacheSecurityGroups was actually a []* so had to be changed to work as follows: ``` if len(c.CacheSecurityGroups) > 0 { d.Set("security_group_names", flattenElastiCacheSecurityGroupNames(c.CacheSecurityGroups)) } ``` 3. We were trying to set the security_group_ids as follows: ``` d.Set("security_group_ids", c.SecurityGroups) ``` This is another []* and needs to be changed as follows: ``` if len(c.SecurityGroups) > 0 { d.Set("security_group_ids", flattenElastiCacheSecurityGroupIds(c.SecurityGroups)) } ``` This then allows the import test to pass as expected: ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheCluster_importBasic' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2016/09/23 10:59:01 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheCluster_importBasic -timeout 120m === RUN TestAccAWSElasticacheCluster_importBasic --- PASS: TestAccAWSElasticacheCluster_importBasic (351.96s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 351.981s ``` As a final test, I ran the basic ElastiCache cluster creation to make sure all passed as expected: ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheCluster_basic' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2016/09/23 11:05:51 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheCluster_basic -timeout 120m === RUN TestAccAWSElasticacheCluster_basic --- PASS: TestAccAWSElasticacheCluster_basic (809.25s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 809.267s ```
2016-09-23 12:06:19 +02:00
name := acctest.RandString(10)
resourceName := "aws_elasticache_cluster.bar"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSElasticacheClusterDestroy,
Steps: []resource.TestStep{
resource.TestStep{
provider/aws: Support Import of aws_elasticache_cluster Initial tests were failing as follows: ``` === RUN TestAccAWSElasticacheCluster_importBasic --- FAIL: TestAccAWSElasticacheCluster_importBasic (362.66s) testing.go:265: Step 1 error: ImportStateVerify attributes not equivalent. Difference is shown below. Top is actual, bottom is expected. (map[string]string) { } (map[string]string) (len=2) { (string) (len=20) "parameter_group_name": (string) (len=20) "default.memcached1.4", (string) (len=22) "security_group_names.#": (string) (len=1) "0" } FAIL exit status 1 ``` The import of ElastiCache clusters helped to point out 3 things: 1. Currently, we were trying to set the parameter_group_name as follows: ``` d.Set("parameter_group_name", c.CacheParameterGroup) ``` Unfortunately, c.CacheParameterGroup is a struct not a string. This was causing the test import failure. So this had to be replaced as follows: ``` if c.CacheParameterGroup != nil { d.Set("parameter_group_name", c.CacheParameterGroup.CacheParameterGroupName) } ``` 2. We were trying to set the security_group_names as follows: ``` d.Set("security_group_names", c.CacheSecurityGroups) ``` The CacheSecurityGroups was actually a []* so had to be changed to work as follows: ``` if len(c.CacheSecurityGroups) > 0 { d.Set("security_group_names", flattenElastiCacheSecurityGroupNames(c.CacheSecurityGroups)) } ``` 3. We were trying to set the security_group_ids as follows: ``` d.Set("security_group_ids", c.SecurityGroups) ``` This is another []* and needs to be changed as follows: ``` if len(c.SecurityGroups) > 0 { d.Set("security_group_ids", flattenElastiCacheSecurityGroupIds(c.SecurityGroups)) } ``` This then allows the import test to pass as expected: ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheCluster_importBasic' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2016/09/23 10:59:01 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheCluster_importBasic -timeout 120m === RUN TestAccAWSElasticacheCluster_importBasic --- PASS: TestAccAWSElasticacheCluster_importBasic (351.96s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 351.981s ``` As a final test, I ran the basic ElastiCache cluster creation to make sure all passed as expected: ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSElasticacheCluster_basic' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2016/09/23 11:05:51 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSElasticacheCluster_basic -timeout 120m === RUN TestAccAWSElasticacheCluster_basic --- PASS: TestAccAWSElasticacheCluster_basic (809.25s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 809.267s ```
2016-09-23 12:06:19 +02:00
Config: testAccAWSElasticacheClusterConfigBasic(name),
},
resource.TestStep{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
},
})
}