From a425272d39c081e0548f22a3927a9e4ea122d154 Mon Sep 17 00:00:00 2001 From: DrFaust92 Date: Fri, 11 Oct 2019 20:55:26 +0300 Subject: [PATCH] Add support import for aws_waf_rate_based_rule resource --- aws/resource_aws_waf_rate_based_rule.go | 3 + aws/resource_aws_waf_rate_based_rule_test.go | 90 +++++++++++-------- .../docs/r/waf_rate_based_rule.html.markdown | 8 ++ 3 files changed, 64 insertions(+), 37 deletions(-) diff --git a/aws/resource_aws_waf_rate_based_rule.go b/aws/resource_aws_waf_rate_based_rule.go index 4f7c7271002e..527878ec5871 100644 --- a/aws/resource_aws_waf_rate_based_rule.go +++ b/aws/resource_aws_waf_rate_based_rule.go @@ -17,6 +17,9 @@ func resourceAwsWafRateBasedRule() *schema.Resource { Read: resourceAwsWafRateBasedRuleRead, Update: resourceAwsWafRateBasedRuleUpdate, Delete: resourceAwsWafRateBasedRuleDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, Schema: map[string]*schema.Schema{ "name": { diff --git a/aws/resource_aws_waf_rate_based_rule_test.go b/aws/resource_aws_waf_rate_based_rule_test.go index a3de398590a0..c48151a790e8 100644 --- a/aws/resource_aws_waf_rate_based_rule_test.go +++ b/aws/resource_aws_waf_rate_based_rule_test.go @@ -17,6 +17,8 @@ import ( func TestAccAWSWafRateBasedRule_basic(t *testing.T) { var v waf.RateBasedRule wafRuleName := fmt.Sprintf("wafrule%s", acctest.RandString(5)) + resourceName := "aws_waf_rate_based_rule.wafrule" + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccPreCheckAWSWaf(t) }, Providers: testAccProviders, @@ -25,15 +27,17 @@ func TestAccAWSWafRateBasedRule_basic(t *testing.T) { { Config: testAccAWSWafRateBasedRuleConfig(wafRuleName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &v), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "name", wafRuleName), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "predicates.#", "1"), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "metric_name", wafRuleName), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &v), + resource.TestCheckResourceAttr(resourceName, "name", wafRuleName), + resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), + resource.TestCheckResourceAttr(resourceName, "metric_name", wafRuleName), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } @@ -42,6 +46,7 @@ func TestAccAWSWafRateBasedRule_changeNameForceNew(t *testing.T) { var before, after waf.RateBasedRule wafRuleName := fmt.Sprintf("wafrule%s", acctest.RandString(5)) wafRuleNewName := fmt.Sprintf("wafrulenew%s", acctest.RandString(5)) + resourceName := "aws_waf_rate_based_rule.wafrule" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccPreCheckAWSWaf(t) }, @@ -51,27 +56,26 @@ func TestAccAWSWafRateBasedRule_changeNameForceNew(t *testing.T) { { Config: testAccAWSWafRateBasedRuleConfig(wafRuleName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &before), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "name", wafRuleName), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "predicates.#", "1"), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "metric_name", wafRuleName), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &before), + resource.TestCheckResourceAttr(resourceName, "name", wafRuleName), + resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), + resource.TestCheckResourceAttr(resourceName, "metric_name", wafRuleName), ), }, { Config: testAccAWSWafRateBasedRuleConfigChangeName(wafRuleNewName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &after), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "name", wafRuleNewName), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "predicates.#", "1"), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "metric_name", wafRuleNewName), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &after), + resource.TestCheckResourceAttr(resourceName, "name", wafRuleNewName), + resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), + resource.TestCheckResourceAttr(resourceName, "metric_name", wafRuleNewName), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } @@ -79,6 +83,8 @@ func TestAccAWSWafRateBasedRule_changeNameForceNew(t *testing.T) { func TestAccAWSWafRateBasedRule_disappears(t *testing.T) { var v waf.RateBasedRule wafRuleName := fmt.Sprintf("wafrule%s", acctest.RandString(5)) + resourceName := "aws_waf_rate_based_rule.wafrule" + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccPreCheckAWSWaf(t) }, Providers: testAccProviders, @@ -87,7 +93,7 @@ func TestAccAWSWafRateBasedRule_disappears(t *testing.T) { { Config: testAccAWSWafRateBasedRuleConfig(wafRuleName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &v), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &v), testAccCheckAWSWafRateBasedRuleDisappears(&v), ), ExpectNonEmptyPlan: true, @@ -103,6 +109,7 @@ func TestAccAWSWafRateBasedRule_changePredicates(t *testing.T) { var before, after waf.RateBasedRule var idx int ruleName := fmt.Sprintf("wafrule%s", acctest.RandString(5)) + resourceName := "aws_waf_rate_based_rule.wafrule" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccPreCheckAWSWaf(t) }, @@ -113,26 +120,31 @@ func TestAccAWSWafRateBasedRule_changePredicates(t *testing.T) { Config: testAccAWSWafRateBasedRuleConfig(ruleName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAWSWafIPSetExists("aws_waf_ipset.ipset", &ipset), - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &before), - resource.TestCheckResourceAttr("aws_waf_rate_based_rule.wafrule", "name", ruleName), - resource.TestCheckResourceAttr("aws_waf_rate_based_rule.wafrule", "predicates.#", "1"), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &before), + resource.TestCheckResourceAttr(resourceName, "name", ruleName), + resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), computeWafRateBasedRulePredicateWithIpSet(&ipset, false, "IPMatch", &idx), - testCheckResourceAttrWithIndexesAddr("aws_waf_rate_based_rule.wafrule", "predicates.%d.negated", &idx, "false"), - testCheckResourceAttrWithIndexesAddr("aws_waf_rate_based_rule.wafrule", "predicates.%d.type", &idx, "IPMatch"), + testCheckResourceAttrWithIndexesAddr(resourceName, "predicates.%d.negated", &idx, "false"), + testCheckResourceAttrWithIndexesAddr(resourceName, "predicates.%d.type", &idx, "IPMatch"), ), }, { Config: testAccAWSWafRateBasedRuleConfig_changePredicates(ruleName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckAWSWafByteMatchSetExists("aws_waf_byte_match_set.set", &byteMatchSet), - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &after), - resource.TestCheckResourceAttr("aws_waf_rate_based_rule.wafrule", "name", ruleName), - resource.TestCheckResourceAttr("aws_waf_rate_based_rule.wafrule", "predicates.#", "1"), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &after), + resource.TestCheckResourceAttr(resourceName, "name", ruleName), + resource.TestCheckResourceAttr(resourceName, "predicates.#", "1"), computeWafRateBasedRulePredicateWithByteMatchSet(&byteMatchSet, true, "ByteMatch", &idx), - testCheckResourceAttrWithIndexesAddr("aws_waf_rate_based_rule.wafrule", "predicates.%d.negated", &idx, "true"), - testCheckResourceAttrWithIndexesAddr("aws_waf_rate_based_rule.wafrule", "predicates.%d.type", &idx, "ByteMatch"), + testCheckResourceAttrWithIndexesAddr(resourceName, "predicates.%d.negated", &idx, "true"), + testCheckResourceAttrWithIndexesAddr(resourceName, "predicates.%d.type", &idx, "ByteMatch"), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } @@ -178,6 +190,7 @@ func computeWafRateBasedRulePredicateWithByteMatchSet(set *waf.ByteMatchSet, neg func TestAccAWSWafRateBasedRule_noPredicates(t *testing.T) { var rule waf.RateBasedRule ruleName := fmt.Sprintf("wafrule%s", acctest.RandString(5)) + resourceName := "aws_waf_rate_based_rule.wafrule" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t); testAccPreCheckAWSWaf(t) }, @@ -187,13 +200,16 @@ func TestAccAWSWafRateBasedRule_noPredicates(t *testing.T) { { Config: testAccAWSWafRateBasedRuleConfig_noPredicates(ruleName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckAWSWafRateBasedRuleExists("aws_waf_rate_based_rule.wafrule", &rule), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "name", ruleName), - resource.TestCheckResourceAttr( - "aws_waf_rate_based_rule.wafrule", "predicates.#", "0"), + testAccCheckAWSWafRateBasedRuleExists(resourceName, &rule), + resource.TestCheckResourceAttr(resourceName, "name", ruleName), + resource.TestCheckResourceAttr(resourceName, "predicates.#", "0"), ), }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, }, }) } diff --git a/website/docs/r/waf_rate_based_rule.html.markdown b/website/docs/r/waf_rate_based_rule.html.markdown index 9a8d6dc6d95c..fcf126e2e78a 100644 --- a/website/docs/r/waf_rate_based_rule.html.markdown +++ b/website/docs/r/waf_rate_based_rule.html.markdown @@ -69,3 +69,11 @@ See the [WAF Documentation](https://docs.aws.amazon.com/waf/latest/APIReference/ In addition to all arguments above, the following attributes are exported: * `id` - The ID of the WAF rule. + +## Import + +WAF Rated Based Rule can be imported using the id, e.g. + +``` +$ terraform import aws_waf_rate_based_rule.wafrule a1b2c3d4-d5f6-7777-8888-9999aaaabbbbcccc +``` \ No newline at end of file