Skip to content
This repository has been archived by the owner on Jun 11, 2024. It is now read-only.

Commit

Permalink
Merge branch 'nhamlh-feature/monitor-resource-support-optional-attrib…
Browse files Browse the repository at this point in the history
…utes'
  • Loading branch information
louy committed Aug 27, 2018
2 parents d29d199 + 39ed5df commit c2490db
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 2 deletions.
2 changes: 2 additions & 0 deletions uptimerobot/api/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ func (client UptimeRobotApiClient) CreateMonitor(req MonitorCreateRequest) (m Mo
data.Add("friendly_name", req.FriendlyName)
data.Add("url", req.URL)
data.Add("type", fmt.Sprintf("%d", monitorType[req.Type]))
data.Add("interval", fmt.Sprintf("%d", req.Interval))
switch req.Type {
case "port":
data.Add("sub_type", fmt.Sprintf("%d", monitorSubType[req.SubType]))
Expand Down Expand Up @@ -202,6 +203,7 @@ func (client UptimeRobotApiClient) UpdateMonitor(req MonitorUpdateRequest) (m Mo
data.Add("friendly_name", req.FriendlyName)
data.Add("url", req.URL)
data.Add("type", fmt.Sprintf("%d", monitorType[req.Type]))
data.Add("interval", fmt.Sprintf("%d", req.Interval))
switch req.Type {
case "port":
data.Add("sub_type", fmt.Sprintf("%d", monitorSubType[req.SubType]))
Expand Down
8 changes: 8 additions & 0 deletions uptimerobot/resource_uptimerobot_monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ func resourceMonitorCreate(d *schema.ResourceData, m interface{}) error {
req.HTTPPassword = d.Get("http_password").(string)
break
}

// Add optional attributes
req.Interval = d.Get("interval").(int)

req.AlertContacts = make([]uptimerobotapi.MonitorRequestAlertContact, len(d.Get("alert_contact").([]interface{})))
for k, v := range d.Get("alert_contact").([]interface{}) {
req.AlertContacts[k] = uptimerobotapi.MonitorRequestAlertContact{
Expand Down Expand Up @@ -188,6 +192,10 @@ func resourceMonitorUpdate(d *schema.ResourceData, m interface{}) error {
req.HTTPPassword = d.Get("http_password").(string)
break
}

// Add optional attributes
req.Interval = d.Get("interval").(int)

req.AlertContacts = make([]uptimerobotapi.MonitorRequestAlertContact, len(d.Get("alert_contact").([]interface{})))
for k, v := range d.Get("alert_contact").([]interface{}) {
req.AlertContacts[k] = uptimerobotapi.MonitorRequestAlertContact{
Expand Down
95 changes: 93 additions & 2 deletions uptimerobot/resource_uptimerobot_monitor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,38 @@ import (
)

func TestUptimeRobotDataResourceMonitor_http_monitor(t *testing.T) {
var FriendlyName = "TF Test: http monitor"
var Type = "http"
var URL = "https://google.com"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMonitorDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: fmt.Sprintf(`
resource "uptimerobot_monitor" "test" {
friendly_name = "%s"
type = "%s"
url = "%s"
}
`, FriendlyName, Type, URL),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "friendly_name", FriendlyName),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "type", Type),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "url", URL),
),
},
resource.TestStep{
ResourceName: "uptimerobot_monitor.test",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestUptimeRobotDataResourceMonitor_change_url(t *testing.T) {
var FriendlyName = "TF Test: http monitor"
var Type = "http"
var URL = "https://google.com"
Expand All @@ -23,7 +55,8 @@ func TestUptimeRobotDataResourceMonitor_http_monitor(t *testing.T) {
Steps: []resource.TestStep{
resource.TestStep{
Config: fmt.Sprintf(`
resource "uptimerobot_monitor" "test" { friendly_name = "%s"
resource "uptimerobot_monitor" "test" {
friendly_name = "%s"
type = "%s"
url = "%s"
}
Expand All @@ -42,7 +75,8 @@ func TestUptimeRobotDataResourceMonitor_http_monitor(t *testing.T) {
// Change url
resource.TestStep{
Config: fmt.Sprintf(`
resource "uptimerobot_monitor" "test" { friendly_name = "%s"
resource "uptimerobot_monitor" "test" {
friendly_name = "%s"
type = "%s"
url = "%s"
}
Expand Down Expand Up @@ -94,6 +128,63 @@ func TestUptimeRobotDataResourceMonitor_ping_monitor(t *testing.T) {
})
}

func TestUptimeRobotDataResourceMonitor_custom_interval(t *testing.T) {
var FriendlyName = "TF Test: ping monitor"
var Type = "ping"
var URL = "1.1.1.1"
var Interval = 300
var Interval2 = 360
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMonitorDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: fmt.Sprintf(`
resource "uptimerobot_monitor" "test" {
friendly_name = "%s"
type = "%s"
url = "%s"
interval = %d
}
`, FriendlyName, Type, URL, Interval),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "friendly_name", FriendlyName),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "type", Type),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "url", URL),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "interval", fmt.Sprintf(`%d`, Interval)),
),
},
resource.TestStep{
ResourceName: "uptimerobot_monitor.test",
ImportState: true,
ImportStateVerify: true,
},
resource.TestStep{
Config: fmt.Sprintf(`
resource "uptimerobot_monitor" "test" {
friendly_name = "%s"
type = "%s"
url = "%s"
interval = %d
}
`, FriendlyName, Type, URL, Interval2),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "friendly_name", FriendlyName),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "type", Type),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "url", URL),
resource.TestCheckResourceAttr("uptimerobot_monitor.test", "interval", fmt.Sprintf(`%d`, Interval2)),
),
},
resource.TestStep{
ResourceName: "uptimerobot_monitor.test",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestUptimeRobotDataResourceMonitor_http_auth_monitor(t *testing.T) {
var FriendlyName = "TF Test: http auth monitor"
var Type = "http"
Expand Down

0 comments on commit c2490db

Please sign in to comment.