From 2896d7888b8980d2d42ed2087b9e431fd7981a5a Mon Sep 17 00:00:00 2001 From: Sharon Nam Date: Wed, 28 Jun 2023 13:46:20 -0700 Subject: [PATCH] Add acceptance test --- internal/service/events/rule.go | 2 +- internal/service/events/rule_test.go | 42 +++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/internal/service/events/rule.go b/internal/service/events/rule.go index 89d5dd35dbcc..3740591cb3a5 100644 --- a/internal/service/events/rule.go +++ b/internal/service/events/rule.go @@ -296,7 +296,7 @@ func FindRuleByTwoPartKey(ctx context.Context, conn *eventbridge.EventBridge, ev return output, nil } -// Decodes unicode translation of <,>,& +// RuleEventPatternJSONDecoder decodes unicode translation of <,>,& func RuleEventPatternJSONDecoder(jsonString interface{}) (string, error) { var j interface{} diff --git a/internal/service/events/rule_test.go b/internal/service/events/rule_test.go index 9e36a8f2f58c..5cee161adc16 100644 --- a/internal/service/events/rule_test.go +++ b/internal/service/events/rule_test.go @@ -39,12 +39,12 @@ func TestRuleEventPatternJSONDecoder(t *testing.T) { } tests := map[string]testCase{ "lessThanGreaterThan": { - input: `{"detail": {"count": [ { "numeric": [ "\u003e", 0, "\u003c", 5 ] } ]}}`, - expected: `{"detail": {"count": [ { "numeric": [ ">", 0, "<", 5 ] } ]}}`, + input: `{"detail":{"count":[{"numeric":["\u003e",0,"\u003c",5]}]}}`, + expected: `{"detail":{"count":[{"numeric":[">",0,"<",5]}]}}`, }, "ampersand": { - input: `{"detail": {"count": [ { "numeric": [ "\u0026", 0, "\u0026", 5 ] } ]}}`, - expected: `{"detail": {"count": [ { "numeric": [ "&", 0, "&", 5 ] } ]}}`, + input: `{"detail":{"count":[{"numeric":["\u0026",0,"\u0026",5]}]}}`, + expected: `{"detail":{"count":[{"numeric":["&",0,"&",5]}]}}`, }, } @@ -292,6 +292,31 @@ func TestAccEventsRule_pattern(t *testing.T) { }) } +func TestAccEventsRule_patternJsonEncoder(t *testing.T) { + ctx := acctest.Context(t) + var v1 eventbridge.DescribeRuleOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_cloudwatch_event_rule.test" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, eventbridge.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckRuleDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccRuleConfig_patternJSONEncoder(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckRuleExists(ctx, resourceName, &v1), + resource.TestCheckResourceAttr(resourceName, "name", rName), + resource.TestCheckResourceAttr(resourceName, "schedule_expression", ""), + acctest.CheckResourceAttrEquivalentJSON(resourceName, "event_pattern", `{"detail":{"count":[{"numeric":[">",0,"<",5]}]}}`), + ), + }, + }, + }) +} + func TestAccEventsRule_scheduleAndPattern(t *testing.T) { ctx := acctest.Context(t) var v eventbridge.DescribeRuleOutput @@ -721,6 +746,15 @@ PATTERN `, rName, pattern) } +func testAccRuleConfig_patternJSONEncoder(rName string) string { + return fmt.Sprintf(` +resource "aws_cloudwatch_event_rule" "test" { + name = %[1]q + event_pattern = jsonencode({ "detail" : { "count" : [{ "numeric" : [">", 0, "<", 5] }] } }) +} +`, rName) +} + func testAccRuleConfig_scheduleAndPattern(rName, pattern string) string { return fmt.Sprintf(` resource "aws_cloudwatch_event_rule" "test" {