From e7b04dd5bb4a5947d1f4e9049ec90032b62faa5e Mon Sep 17 00:00:00 2001 From: Lee Johnson Date: Fri, 10 Jun 2016 12:38:56 -0400 Subject: [PATCH] Adding ability to add and update contact groups using the terraform statuscake provider --- resource_statuscaketest.go | 9 ++++ resource_statuscaketest_test.go | 83 +++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/resource_statuscaketest.go b/resource_statuscaketest.go index 7f5ff67..d403848 100644 --- a/resource_statuscaketest.go +++ b/resource_statuscaketest.go @@ -33,6 +33,11 @@ func resourceStatusCakeTest() *schema.Resource { Required: true, }, + "contact_id": &schema.Schema{ + Type: schema.TypeInt, + Optional: true, + }, + "check_rate": &schema.Schema{ Type: schema.TypeInt, Optional: true, @@ -65,6 +70,7 @@ func CreateTest(d *schema.ResourceData, meta interface{}) error { WebsiteURL: d.Get("website_url").(string), TestType: d.Get("test_type").(string), CheckRate: d.Get("check_rate").(int), + ContactID: d.Get("contact_id").(int), } log.Printf("[DEBUG] Creating new StatusCake Test: %s", d.Get("website_name").(string)) @@ -142,6 +148,9 @@ func getStatusCakeTestInput(d *schema.ResourceData) *statuscake.Test { if v, ok := d.GetOk("check_rate"); ok { test.CheckRate = v.(int) } + if v, ok := d.GetOk("contact_id"); ok { + test.ContactID = v.(int) + } if v, ok := d.GetOk("test_type"); ok { test.TestType = v.(string) } diff --git a/resource_statuscaketest_test.go b/resource_statuscaketest_test.go index bbc6932..4123ac6 100644 --- a/resource_statuscaketest_test.go +++ b/resource_statuscaketest_test.go @@ -2,6 +2,7 @@ package statuscake import ( "fmt" + "os" "strconv" "testing" @@ -10,6 +11,19 @@ import ( "github.com/hashicorp/terraform/terraform" ) +// check to ensure that contact group id is provided before running +// tests on it. +func testAccContactGroupPreCheck(t *testing.T, testAlt bool) { + if v := os.Getenv("CONTACT_GROUP"); v == "" { + t.Fatal("CONTACT_GROUP must be set for contact group acceptance tests") + } + if testAlt { + if v := os.Getenv("ALT_CONTACT_GROUP"); v == "" { + t.Fatal("ALT_CONTACT_GROUP must be set for contact group acceptance tests") + } + } +} + func TestAccStatusCake_basic(t *testing.T) { var test statuscake.Test @@ -55,6 +69,57 @@ func TestAccStatusCake_withUpdate(t *testing.T) { }) } +func TestAccStatusCake_contactGroup_basic(t *testing.T) { + var test statuscake.Test + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + testAccPreCheck(t) + testAccContactGroupPreCheck(t, false) + }, + Providers: testAccProviders, + CheckDestroy: testAccTestCheckDestroy(&test), + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccTestConfig_contactGroup, + Check: resource.ComposeTestCheckFunc( + testAccTestCheckExists("statuscake_test.google", &test), + ), + }, + }, + }) +} + +func TestAccStatusCake_contactGroup_withUpdate(t *testing.T) { + var test statuscake.Test + var altContactGroup = os.Getenv("ALT_CONTACT_GROUP") + + resource.Test(t, resource.TestCase{ + PreCheck: func() { + testAccPreCheck(t) + testAccContactGroupPreCheck(t, true) + }, + Providers: testAccProviders, + CheckDestroy: testAccTestCheckDestroy(&test), + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccTestConfig_contactGroup, + Check: resource.ComposeTestCheckFunc( + testAccTestCheckExists("statuscake_test.google", &test), + ), + }, + // make sure to creat + resource.TestStep{ + Config: testAccTestConfig_contactGroup_update, + Check: resource.ComposeTestCheckFunc( + testAccTestCheckExists("statuscake_test.google", &test), + resource.TestCheckResourceAttr("statuscake_test.google", "contact_id", altContactGroup), + ), + }, + }, + }) +} + func testAccTestCheckExists(rn string, test *statuscake.Test) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[rn] @@ -113,3 +178,21 @@ resource "statuscake_test" "google" { paused = true } ` + +var testAccTestConfig_contactGroup string = `` + + `resource "statuscake_test" "google" { + website_name = "google.com" + website_url = "www.google.com" + test_type = "HTTP" + check_rate = 300 + contact_id = ` + os.Getenv("CONTACT_GROUP") + ` + }` + +var testAccTestConfig_contactGroup_update string = `` + + `resource "statuscake_test" "google" { + website_name = "google.com" + website_url = "www.google.com" + test_type = "HTTP" + check_rate = 300 + contact_id = ` + os.Getenv("ALT_CONTACT_GROUP") + ` + }` -- 2.41.0