diff --git a/builtin/providers/aws/resource_aws_waf_rule.go b/builtin/providers/aws/resource_aws_waf_rule.go index c62b889c7..e7d44d7be 100644 --- a/builtin/providers/aws/resource_aws_waf_rule.go +++ b/builtin/providers/aws/resource_aws_waf_rule.go @@ -129,13 +129,16 @@ func resourceAwsWafRuleRead(d *schema.ResourceData, meta interface{}) error { func resourceAwsWafRuleUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).wafconn - o, n := d.GetChange("predicates") - oldP, newP := o.(*schema.Set).List(), n.(*schema.Set).List() + if d.HasChange("predicates") { + o, n := d.GetChange("predicates") + oldP, newP := o.(*schema.Set).List(), n.(*schema.Set).List() - err := updateWafRuleResource(d.Id(), oldP, newP, conn) - if err != nil { - return fmt.Errorf("Error Updating WAF Rule: %s", err) + err := updateWafRuleResource(d.Id(), oldP, newP, conn) + if err != nil { + return fmt.Errorf("Error Updating WAF Rule: %s", err) + } } + return resourceAwsWafRuleRead(d, meta) } diff --git a/builtin/providers/aws/resource_aws_waf_rule_test.go b/builtin/providers/aws/resource_aws_waf_rule_test.go index ddf5e005d..456b1f5aa 100644 --- a/builtin/providers/aws/resource_aws_waf_rule_test.go +++ b/builtin/providers/aws/resource_aws_waf_rule_test.go @@ -181,6 +181,29 @@ func testCheckResourceAttrWithIndexesAddr(name, format string, idx *int, value s } } +func TestAccAWSWafRule_noPredicates(t *testing.T) { + var rule waf.Rule + ruleName := fmt.Sprintf("wafrule%s", acctest.RandString(5)) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSWafRuleDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSWafRuleConfig_noPredicates(ruleName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAWSWafRuleExists("aws_waf_rule.wafrule", &rule), + resource.TestCheckResourceAttr( + "aws_waf_rule.wafrule", "name", ruleName), + resource.TestCheckResourceAttr( + "aws_waf_rule.wafrule", "predicates.#", "0"), + ), + }, + }, + }) +} + func testAccCheckAWSWafRuleDisappears(v *waf.Rule) resource.TestCheckFunc { return func(s *terraform.State) error { conn := testAccProvider.Meta().(*AWSClient).wafconn @@ -362,3 +385,11 @@ resource "aws_waf_rule" "wafrule" { } }`, name, name, name, name) } + +func testAccAWSWafRuleConfig_noPredicates(name string) string { + return fmt.Sprintf(` +resource "aws_waf_rule" "wafrule" { + name = "%s" + metric_name = "%s" +}`, name, name) +}