Adding ability to add and update contact groups using the terraform statuscake provider

pull/7115/head
Lee Johnson 10 years ago
parent 511101ab75
commit ea613cef96

@ -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)
}

@ -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") + `
}`

@ -28,7 +28,7 @@ type Test struct {
Port int `json:"Port" querystring:"Port"`
// Contact group ID - will return int of contact group used else 0
ContactID int `json:"ContactID"`
ContactID int `json:"ContactID" querystring:"ContactGroup"`
// Current status at last test
Status string `json:"Status"`

Loading…
Cancel
Save