github.com/IBM-Cloud/terraform@v0.6.4-0.20170726051544-8872b87621df/builtin/providers/pagerduty/resource_pagerduty_addon_test.go (about) 1 package pagerduty 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/PagerDuty/go-pagerduty" 8 "github.com/hashicorp/terraform/helper/acctest" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccPagerDutyAddon_Basic(t *testing.T) { 14 addon := fmt.Sprintf("tf-%s", acctest.RandString(5)) 15 addonUpdated := fmt.Sprintf("tf-%s", acctest.RandString(5)) 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckPagerDutyAddonDestroy, 21 Steps: []resource.TestStep{ 22 { 23 Config: testAccCheckPagerDutyAddonConfig(addon), 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckPagerDutyAddonExists("pagerduty_addon.foo"), 26 resource.TestCheckResourceAttr( 27 "pagerduty_addon.foo", "name", addon), 28 resource.TestCheckResourceAttr( 29 "pagerduty_addon.foo", "src", "https://intranet.foo.com/status"), 30 ), 31 }, 32 { 33 Config: testAccCheckPagerDutyAddonConfigUpdated(addonUpdated), 34 Check: resource.ComposeTestCheckFunc( 35 testAccCheckPagerDutyAddonExists("pagerduty_addon.foo"), 36 resource.TestCheckResourceAttr( 37 "pagerduty_addon.foo", "name", addonUpdated), 38 resource.TestCheckResourceAttr( 39 "pagerduty_addon.foo", "src", "https://intranet.bar.com/status"), 40 ), 41 }, 42 }, 43 }) 44 } 45 46 func testAccCheckPagerDutyAddonDestroy(s *terraform.State) error { 47 client := testAccProvider.Meta().(*pagerduty.Client) 48 for _, r := range s.RootModule().Resources { 49 if r.Type != "pagerduty_addon" { 50 continue 51 } 52 53 if _, err := client.GetAddon(r.Primary.ID); err == nil { 54 return fmt.Errorf("Add-on still exists") 55 } 56 57 } 58 return nil 59 } 60 61 func testAccCheckPagerDutyAddonExists(n string) resource.TestCheckFunc { 62 return func(s *terraform.State) error { 63 rs, ok := s.RootModule().Resources[n] 64 if !ok { 65 return fmt.Errorf("Not found: %s", n) 66 } 67 68 if rs.Primary.ID == "" { 69 return fmt.Errorf("No add-on ID is set") 70 } 71 72 client := testAccProvider.Meta().(*pagerduty.Client) 73 74 found, err := client.GetAddon(rs.Primary.ID) 75 if err != nil { 76 return err 77 } 78 79 if found.ID != rs.Primary.ID { 80 return fmt.Errorf("Add-on not found: %v - %v", rs.Primary.ID, found) 81 } 82 83 return nil 84 } 85 } 86 87 func testAccCheckPagerDutyAddonConfig(addon string) string { 88 return fmt.Sprintf(` 89 resource "pagerduty_addon" "foo" { 90 name = "%s" 91 src = "https://intranet.foo.com/status" 92 } 93 `, addon) 94 } 95 96 func testAccCheckPagerDutyAddonConfigUpdated(addon string) string { 97 return fmt.Sprintf(` 98 resource "pagerduty_addon" "foo" { 99 name = "%s" 100 src = "https://intranet.bar.com/status" 101 } 102 `, addon) 103 }