github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/newrelic/resource_newrelic_alert_channel_test.go (about) 1 package newrelic 2 3 import ( 4 "fmt" 5 "strconv" 6 "testing" 7 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 newrelic "github.com/paultyng/go-newrelic/api" 12 ) 13 14 func TestAccNewRelicAlertChannel_Basic(t *testing.T) { 15 rName := acctest.RandString(5) 16 resource.Test(t, resource.TestCase{ 17 PreCheck: func() { testAccPreCheck(t) }, 18 Providers: testAccProviders, 19 CheckDestroy: testAccCheckNewRelicAlertChannelDestroy, 20 Steps: []resource.TestStep{ 21 resource.TestStep{ 22 Config: testAccCheckNewRelicAlertChannelConfig(rName), 23 Check: resource.ComposeTestCheckFunc( 24 testAccCheckNewRelicAlertChannelExists("newrelic_alert_channel.foo"), 25 resource.TestCheckResourceAttr( 26 "newrelic_alert_channel.foo", "name", fmt.Sprintf("tf-test-%s", rName)), 27 resource.TestCheckResourceAttr( 28 "newrelic_alert_channel.foo", "type", "email"), 29 resource.TestCheckResourceAttr( 30 "newrelic_alert_channel.foo", "configuration.recipients", "foo@example.com"), 31 resource.TestCheckResourceAttr( 32 "newrelic_alert_channel.foo", "configuration.include_json_attachment", "1"), 33 ), 34 }, 35 resource.TestStep{ 36 Config: testAccCheckNewRelicAlertChannelConfigUpdated(rName), 37 Check: resource.ComposeTestCheckFunc( 38 testAccCheckNewRelicAlertChannelExists("newrelic_alert_channel.foo"), 39 resource.TestCheckResourceAttr( 40 "newrelic_alert_channel.foo", "name", fmt.Sprintf("tf-test-updated-%s", rName)), 41 resource.TestCheckResourceAttr( 42 "newrelic_alert_channel.foo", "type", "email"), 43 resource.TestCheckResourceAttr( 44 "newrelic_alert_channel.foo", "configuration.recipients", "bar@example.com"), 45 resource.TestCheckResourceAttr( 46 "newrelic_alert_channel.foo", "configuration.include_json_attachment", "0"), 47 ), 48 }, 49 }, 50 }) 51 } 52 53 func testAccCheckNewRelicAlertChannelDestroy(s *terraform.State) error { 54 client := testAccProvider.Meta().(*newrelic.Client) 55 for _, r := range s.RootModule().Resources { 56 if r.Type != "newrelic_alert_channel" { 57 continue 58 } 59 60 id, err := strconv.ParseInt(r.Primary.ID, 10, 32) 61 if err != nil { 62 return err 63 } 64 65 _, err = client.GetAlertChannel(int(id)) 66 67 if err == nil { 68 return fmt.Errorf("Alert channel still exists") 69 } 70 71 } 72 return nil 73 } 74 75 func testAccCheckNewRelicAlertChannelExists(n string) resource.TestCheckFunc { 76 return func(s *terraform.State) error { 77 rs, ok := s.RootModule().Resources[n] 78 if !ok { 79 return fmt.Errorf("Not found: %s", n) 80 } 81 if rs.Primary.ID == "" { 82 return fmt.Errorf("No channel ID is set") 83 } 84 85 client := testAccProvider.Meta().(*newrelic.Client) 86 87 id, err := strconv.ParseInt(rs.Primary.ID, 10, 32) 88 if err != nil { 89 return err 90 } 91 92 found, err := client.GetAlertChannel(int(id)) 93 if err != nil { 94 return err 95 } 96 97 if strconv.Itoa(found.ID) != rs.Primary.ID { 98 return fmt.Errorf("Channel not found: %v - %v", rs.Primary.ID, found) 99 } 100 101 return nil 102 } 103 } 104 105 func testAccCheckNewRelicAlertChannelConfig(rName string) string { 106 return fmt.Sprintf(` 107 resource "newrelic_alert_channel" "foo" { 108 name = "tf-test-%s" 109 type = "email" 110 111 configuration = { 112 recipients = "foo@example.com" 113 include_json_attachment = "1" 114 } 115 } 116 `, rName) 117 } 118 119 func testAccCheckNewRelicAlertChannelConfigUpdated(rName string) string { 120 return fmt.Sprintf(` 121 resource "newrelic_alert_channel" "foo" { 122 name = "tf-test-updated-%s" 123 type = "email" 124 125 configuration = { 126 recipients = "bar@example.com" 127 include_json_attachment = "0" 128 } 129 } 130 `, rName) 131 }