From 5016a56fd4407a95ed9d86601380048658bd49dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rui=20Gon=C3=A7alves?= Date: Sun, 11 Dec 2016 19:41:49 +0000 Subject: [PATCH] provider/statuscake: fix StatusCake tests (#10660) * Update vendored statuscake SDK * Set all attributes when upserting statuscake tests --- .../statuscake/resource_statuscaketest.go | 11 ++++- .../resource_statuscaketest_test.go | 47 +++++++++++++++++-- .../DreamItGetIT/statuscake/tests.go | 2 +- vendor/vendor.json | 4 +- 4 files changed, 58 insertions(+), 6 deletions(-) diff --git a/builtin/providers/statuscake/resource_statuscaketest.go b/builtin/providers/statuscake/resource_statuscaketest.go index 53b30599b..08ace9785 100644 --- a/builtin/providers/statuscake/resource_statuscaketest.go +++ b/builtin/providers/statuscake/resource_statuscaketest.go @@ -67,8 +67,11 @@ func CreateTest(d *schema.ResourceData, meta interface{}) error { newTest := &statuscake.Test{ WebsiteName: d.Get("website_name").(string), WebsiteURL: d.Get("website_url").(string), - TestType: d.Get("test_type").(string), CheckRate: d.Get("check_rate").(int), + TestType: d.Get("test_type").(string), + Paused: d.Get("paused").(bool), + Timeout: d.Get("timeout").(int), + ContactID: d.Get("contact_id").(int), } log.Printf("[DEBUG] Creating new StatusCake Test: %s", d.Get("website_name").(string)) @@ -124,7 +127,13 @@ func ReadTest(d *schema.ResourceData, meta interface{}) error { if err != nil { return fmt.Errorf("Error Getting StatusCake Test Details for %s: Error: %s", d.Id(), err) } + d.Set("website_name", testResp.WebsiteName) + d.Set("website_url", testResp.WebsiteURL) d.Set("check_rate", testResp.CheckRate) + d.Set("test_type", testResp.TestType) + d.Set("paused", testResp.Paused) + d.Set("timeout", testResp.Timeout) + d.Set("contact_id", testResp.ContactID) return nil } diff --git a/builtin/providers/statuscake/resource_statuscaketest_test.go b/builtin/providers/statuscake/resource_statuscaketest_test.go index bec1a4546..de302542d 100644 --- a/builtin/providers/statuscake/resource_statuscaketest_test.go +++ b/builtin/providers/statuscake/resource_statuscaketest_test.go @@ -22,6 +22,7 @@ func TestAccStatusCake_basic(t *testing.T) { Config: testAccTestConfig_basic, Check: resource.ComposeTestCheckFunc( testAccTestCheckExists("statuscake_test.google", &test), + testAccTestCheckAttributes("statuscake_test.google", &test), ), }, }, @@ -47,9 +48,10 @@ func TestAccStatusCake_withUpdate(t *testing.T) { Config: testAccTestConfig_update, Check: resource.ComposeTestCheckFunc( testAccTestCheckExists("statuscake_test.google", &test), + testAccTestCheckAttributes("statuscake_test.google", &test), resource.TestCheckResourceAttr("statuscake_test.google", "check_rate", "500"), resource.TestCheckResourceAttr("statuscake_test.google", "paused", "true"), - resource.TestCheckResourceAttr("statuscake_test.google", "contact_id", "23456"), + resource.TestCheckResourceAttr("statuscake_test.google", "contact_id", "0"), ), }, }, @@ -75,7 +77,7 @@ func testAccTestCheckExists(rn string, test *statuscake.Test) resource.TestCheck gotTest, err := client.Tests().Detail(testId) if err != nil { - return fmt.Errorf("error getting project: %s", err) + return fmt.Errorf("error getting test: %s", err) } *test = *gotTest @@ -84,6 +86,46 @@ func testAccTestCheckExists(rn string, test *statuscake.Test) resource.TestCheck } } +func testAccTestCheckAttributes(rn string, test *statuscake.Test) resource.TestCheckFunc { + return func(s *terraform.State) error { + attrs := s.RootModule().Resources[rn].Primary.Attributes + + check := func(key, stateValue, testValue string) error { + if testValue != stateValue { + return fmt.Errorf("different values for %s in state (%s) and in statuscake (%s)", + key, stateValue, testValue) + } + return nil + } + + for key, value := range attrs { + var err error + + switch key { + case "website_name": + err = check(key, value, test.WebsiteName) + case "website_url": + err = check(key, value, test.WebsiteURL) + case "check_rate": + err = check(key, value, strconv.Itoa(test.CheckRate)) + case "test_type": + err = check(key, value, test.TestType) + case "paused": + err = check(key, value, strconv.FormatBool(test.Paused)) + case "timeout": + err = check(key, value, strconv.Itoa(test.Timeout)) + case "contact_id": + err = check(key, value, strconv.Itoa(test.ContactID)) + } + + if err != nil { + return err + } + } + return nil + } +} + func testAccTestCheckDestroy(test *statuscake.Test) resource.TestCheckFunc { return func(s *terraform.State) error { client := testAccProvider.Meta().(*statuscake.Client) @@ -113,6 +155,5 @@ resource "statuscake_test" "google" { test_type = "HTTP" check_rate = 500 paused = true - contact_id = 23456 } ` diff --git a/vendor/github.com/DreamItGetIT/statuscake/tests.go b/vendor/github.com/DreamItGetIT/statuscake/tests.go index 1870a8e6d..4053e53e0 100644 --- a/vendor/github.com/DreamItGetIT/statuscake/tests.go +++ b/vendor/github.com/DreamItGetIT/statuscake/tests.go @@ -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"` diff --git a/vendor/vendor.json b/vendor/vendor.json index a6277563f..bad86b3c8 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -306,8 +306,10 @@ "revision": "edd0930276e7f1a5f2cf3e7835b5dc42a3217669" }, { + "checksumSHA1": "jZHdtVQsg/9NeRqbxwy63OSbLl8=", "path": "github.com/DreamItGetIT/statuscake", - "revision": "8cbe86575f00210a6df2c19cb2f59b00cd181de3" + "revision": "9bfac395790f4d221cb5088c5c411f0ba8ba5f23", + "revisionTime": "2016-12-01T15:35:21Z" }, { "path": "github.com/Ensighten/udnssdk",