]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/commitdiff
provider/statuscake: fix StatusCake tests (#10660)
authorRui Gonçalves <ruippeixotog@gmail.com>
Sun, 11 Dec 2016 19:41:49 +0000 (19:41 +0000)
committerPaul Stack <public@paulstack.co.uk>
Sun, 11 Dec 2016 19:41:49 +0000 (19:41 +0000)
* Update vendored statuscake SDK

* Set all attributes when upserting statuscake tests

resource_statuscaketest.go
resource_statuscaketest_test.go

index 53b30599b1759e77dbf393d76e894d9710172b4e..08ace9785b256e63651afeb97a6ce46ab8e35b00 100644 (file)
@@ -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
 }
index bec1a45466e674ba44a6e006a2e5b07185f9e2c8..de302542d4a06504b9b16a019bf5ca60d44b1392 100644 (file)
@@ -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
 }
 `