provider/aws: Add acc tests for CloudWatch Event Rule
This commit is contained in:
parent
ab89e5e528
commit
b5039dd897
|
@ -0,0 +1,208 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
events "github.com/aws/aws-sdk-go/service/cloudwatchevents"
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
"github.com/hashicorp/terraform/terraform"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccAWSCloudWatchEventRule_basic(t *testing.T) {
|
||||||
|
var rule events.DescribeRuleOutput
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSCloudWatchEventRuleDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSCloudWatchEventRuleConfig,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckCloudWatchEventRuleExists("aws_cloudwatch_event_rule.foo", &rule),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.foo", "name", "tf-acc-cw-event-rule"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSCloudWatchEventRuleConfigModified,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckCloudWatchEventRuleExists("aws_cloudwatch_event_rule.foo", &rule),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.foo", "name", "tf-acc-cw-event-rule-mod"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAccAWSCloudWatchEventRule_full(t *testing.T) {
|
||||||
|
var rule events.DescribeRuleOutput
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSCloudWatchEventRuleDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSCloudWatchEventRuleConfig_full,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckCloudWatchEventRuleExists("aws_cloudwatch_event_rule.moobar", &rule),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.moobar", "name", "tf-acc-cw-event-rule-full"),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.moobar", "schedule_expression", "rate(5 minutes)"),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.moobar", "event_pattern", "{\"source\":[\"aws.ec2\"]}"),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.moobar", "description", "He's not dead, he's just resting!"),
|
||||||
|
resource.TestCheckResourceAttr("aws_cloudwatch_event_rule.moobar", "role_arn", ""),
|
||||||
|
testAccCheckCloudWatchEventRuleEnabled("aws_cloudwatch_event_rule.moobar", "DISABLED", &rule),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAccAWSCloudWatchEventRule_enable(t *testing.T) {
|
||||||
|
var rule events.DescribeRuleOutput
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckAWSCloudWatchEventRuleDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSCloudWatchEventRuleConfigEnabled,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckCloudWatchEventRuleExists("aws_cloudwatch_event_rule.moo", &rule),
|
||||||
|
testAccCheckCloudWatchEventRuleEnabled("aws_cloudwatch_event_rule.moo", "ENABLED", &rule),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSCloudWatchEventRuleConfigDisabled,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckCloudWatchEventRuleExists("aws_cloudwatch_event_rule.moo", &rule),
|
||||||
|
testAccCheckCloudWatchEventRuleEnabled("aws_cloudwatch_event_rule.moo", "DISABLED", &rule),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccAWSCloudWatchEventRuleConfigEnabled,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckCloudWatchEventRuleExists("aws_cloudwatch_event_rule.moo", &rule),
|
||||||
|
testAccCheckCloudWatchEventRuleEnabled("aws_cloudwatch_event_rule.moo", "ENABLED", &rule),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func testAccCheckCloudWatchEventRuleExists(n string, rule *events.DescribeRuleOutput) resource.TestCheckFunc {
|
||||||
|
return func(s *terraform.State) error {
|
||||||
|
rs, ok := s.RootModule().Resources[n]
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("Not found: %s", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
conn := testAccProvider.Meta().(*AWSClient).cloudwatcheventsconn
|
||||||
|
params := events.DescribeRuleInput{
|
||||||
|
Name: aws.String(rs.Primary.ID),
|
||||||
|
}
|
||||||
|
resp, err := conn.DescribeRule(¶ms)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resp == nil {
|
||||||
|
return fmt.Errorf("Rule not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
*rule = *resp
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testAccCheckCloudWatchEventRuleEnabled(n string, desired string, rule *events.DescribeRuleOutput) resource.TestCheckFunc {
|
||||||
|
return func(s *terraform.State) error {
|
||||||
|
rs, ok := s.RootModule().Resources[n]
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("Not found: %s", n)
|
||||||
|
}
|
||||||
|
|
||||||
|
conn := testAccProvider.Meta().(*AWSClient).cloudwatcheventsconn
|
||||||
|
params := events.DescribeRuleInput{
|
||||||
|
Name: aws.String(rs.Primary.ID),
|
||||||
|
}
|
||||||
|
resp, err := conn.DescribeRule(¶ms)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if *resp.State != desired {
|
||||||
|
return fmt.Errorf("Expected state %q, given %q", desired, *resp.State)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testAccCheckAWSCloudWatchEventRuleDestroy(s *terraform.State) error {
|
||||||
|
conn := testAccProvider.Meta().(*AWSClient).cloudwatcheventsconn
|
||||||
|
|
||||||
|
for _, rs := range s.RootModule().Resources {
|
||||||
|
if rs.Type != "aws_cloudwatch_event_rule" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
params := events.DescribeRuleInput{
|
||||||
|
Name: aws.String(rs.Primary.ID),
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := conn.DescribeRule(¶ms)
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
return fmt.Errorf("CloudWatch Event Rule %q still exists: %s",
|
||||||
|
rs.Primary.ID, resp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var testAccAWSCloudWatchEventRuleConfig = `
|
||||||
|
resource "aws_cloudwatch_event_rule" "foo" {
|
||||||
|
name = "tf-acc-cw-event-rule"
|
||||||
|
schedule_expression = "rate(1 hour)"
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
var testAccAWSCloudWatchEventRuleConfigEnabled = `
|
||||||
|
resource "aws_cloudwatch_event_rule" "moo" {
|
||||||
|
name = "tf-acc-cw-event-rule-state"
|
||||||
|
schedule_expression = "rate(1 hour)"
|
||||||
|
}
|
||||||
|
`
|
||||||
|
var testAccAWSCloudWatchEventRuleConfigDisabled = `
|
||||||
|
resource "aws_cloudwatch_event_rule" "moo" {
|
||||||
|
name = "tf-acc-cw-event-rule-state"
|
||||||
|
schedule_expression = "rate(1 hour)"
|
||||||
|
is_enabled = false
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
var testAccAWSCloudWatchEventRuleConfigModified = `
|
||||||
|
resource "aws_cloudwatch_event_rule" "foo" {
|
||||||
|
name = "tf-acc-cw-event-rule-mod"
|
||||||
|
schedule_expression = "rate(1 hour)"
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
var testAccAWSCloudWatchEventRuleConfig_full = `
|
||||||
|
resource "aws_cloudwatch_event_rule" "moobar" {
|
||||||
|
name = "tf-acc-cw-event-rule-full"
|
||||||
|
schedule_expression = "rate(5 minutes)"
|
||||||
|
event_pattern = <<PATTERN
|
||||||
|
{ "source": ["aws.ec2"] }
|
||||||
|
PATTERN
|
||||||
|
description = "He's not dead, he's just resting!"
|
||||||
|
is_enabled = false
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
// TODO: Figure out example with IAM Role
|
Loading…
Reference in New Issue