Note that we also don't check the individual locations anymore. The key numbers will be randomized and not testing content seems to be the method employed by the AWS provider as well https://github.com/terraform-providers/terraform-provider-aws/blob/
81bba6b1f567aed561c6a6a30916504ee0886c68/aws/resource_aws_autoscaling_group_test.go#L404
"github.com/hashicorp/terraform/helper/schema"
)
"github.com/hashicorp/terraform/helper/schema"
)
-func castInterfaceToSliceStrings(in interface{}) []string {
- input := in.([]interface{})
- res := make([]string, len(input))
+func castSetToSliceStrings(configured []interface{}) []string {
+ res := make([]string, len(configured))
- for i, element := range input {
+ for i, element := range configured {
res[i] = element.(string)
}
return res
}
res[i] = element.(string)
}
return res
}
+// Special handling for node_locations since statuscake will return `[""]` for the empty case
+func considerEmptyStringAsEmptyArray(in []string) []string {
+ if len(in) == 1 && in[0] == "" {
+ return []string{}
+ } else {
+ return in
+ }
+}
+
func resourceStatusCakeTest() *schema.Resource {
return &schema.Resource{
Create: CreateTest,
func resourceStatusCakeTest() *schema.Resource {
return &schema.Resource{
Create: CreateTest,
Elem: &schema.Schema{Type: schema.TypeString},
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Optional: true,
+ Set: schema.HashString,
UserAgent: d.Get("user_agent").(string),
Status: d.Get("status").(string),
Uptime: d.Get("uptime").(float64),
UserAgent: d.Get("user_agent").(string),
Status: d.Get("status").(string),
Uptime: d.Get("uptime").(float64),
- NodeLocations: castInterfaceToSliceStrings(d.Get("node_locations")),
+ NodeLocations: castSetToSliceStrings(d.Get("node_locations").(*schema.Set).List()),
PingURL: d.Get("ping_url").(string),
BasicUser: d.Get("basic_user").(string),
BasicPass: d.Get("basic_pass").(string),
PingURL: d.Get("ping_url").(string),
BasicUser: d.Get("basic_user").(string),
BasicPass: d.Get("basic_pass").(string),
d.Set("user_agent", testResp.UserAgent)
d.Set("status", testResp.Status)
d.Set("uptime", testResp.Uptime)
d.Set("user_agent", testResp.UserAgent)
d.Set("status", testResp.Status)
d.Set("uptime", testResp.Uptime)
- if err := d.Set("node_locations", testResp.NodeLocations); err != nil {
+ if err := d.Set("node_locations", considerEmptyStringAsEmptyArray(testResp.NodeLocations)); err != nil {
return fmt.Errorf("[WARN] Error setting node locations: %s", err)
}
d.Set("ping_url", testResp.PingURL)
return fmt.Errorf("[WARN] Error setting node locations: %s", err)
}
d.Set("ping_url", testResp.PingURL)
test.UserAgent = v.(string)
}
if v, ok := d.GetOk("node_locations"); ok {
test.UserAgent = v.(string)
}
if v, ok := d.GetOk("node_locations"); ok {
- test.NodeLocations = castInterfaceToSliceStrings(v)
+ test.NodeLocations = castSetToSliceStrings(v.(*schema.Set).List())
}
if v, ok := d.GetOk("ping_url"); ok {
test.PingURL = v.(string)
}
if v, ok := d.GetOk("ping_url"); ok {
test.PingURL = v.(string)
resource.TestCheckResourceAttr("statuscake_test.google", "status", "Up"),
resource.TestCheckResourceAttr("statuscake_test.google", "uptime", "0"),
resource.TestCheckResourceAttr("statuscake_test.google", "node_locations.#", "3"),
resource.TestCheckResourceAttr("statuscake_test.google", "status", "Up"),
resource.TestCheckResourceAttr("statuscake_test.google", "uptime", "0"),
resource.TestCheckResourceAttr("statuscake_test.google", "node_locations.#", "3"),
- resource.TestCheckResourceAttr("statuscake_test.google", "node_locations.0", "string16045"),
- resource.TestCheckResourceAttr("statuscake_test.google", "node_locations.1", "string19741"),
- resource.TestCheckResourceAttr("statuscake_test.google", "node_locations.2", "string12122"),
resource.TestCheckResourceAttr("statuscake_test.google", "ping_url", "string8410"),
resource.TestCheckResourceAttr("statuscake_test.google", "basic_user", "string27052"),
resource.TestCheckResourceAttr("statuscake_test.google", "basic_pass", "string5659"),
resource.TestCheckResourceAttr("statuscake_test.google", "ping_url", "string8410"),
resource.TestCheckResourceAttr("statuscake_test.google", "basic_user", "string27052"),
resource.TestCheckResourceAttr("statuscake_test.google", "basic_pass", "string5659"),