github.com/sarguru/terraform@v0.6.17-0.20160525232901-8fcdfd7e3dc9/builtin/providers/nsone/resource_monitoringjob_test.go (about) 1 package nsone 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/bobtfish/go-nsone-api" 8 "github.com/hashicorp/terraform/helper/resource" 9 "github.com/hashicorp/terraform/terraform" 10 ) 11 12 func TestAccMonitoringJob_basic(t *testing.T) { 13 var mj nsone.MonitoringJob 14 resource.Test(t, resource.TestCase{ 15 PreCheck: func() { testAccPreCheck(t) }, 16 Providers: testAccProviders, 17 CheckDestroy: testAccCheckMonitoringJobDestroy, 18 Steps: []resource.TestStep{ 19 resource.TestStep{ 20 Config: testAccMonitoringJobBasic, 21 Check: resource.ComposeTestCheckFunc( 22 testAccCheckMonitoringJobState("name", "terraform test"), 23 testAccCheckMonitoringJobExists("nsone_monitoringjob.foobar", &mj), 24 testAccCheckMonitoringJobAttributes(&mj), 25 ), 26 }, 27 }, 28 }) 29 } 30 31 func TestAccMonitoringJob_updated(t *testing.T) { 32 var mj nsone.MonitoringJob 33 resource.Test(t, resource.TestCase{ 34 PreCheck: func() { testAccPreCheck(t) }, 35 Providers: testAccProviders, 36 CheckDestroy: testAccCheckMonitoringJobDestroy, 37 Steps: []resource.TestStep{ 38 resource.TestStep{ 39 Config: testAccMonitoringJobBasic, 40 Check: resource.ComposeTestCheckFunc( 41 testAccCheckMonitoringJobState("name", "terraform test"), 42 testAccCheckMonitoringJobExists("nsone_monitoringjob.foobar", &mj), 43 testAccCheckMonitoringJobAttributes(&mj), 44 ), 45 }, 46 resource.TestStep{ 47 Config: testAccMonitoringJobUpdated, 48 Check: resource.ComposeTestCheckFunc( 49 testAccCheckMonitoringJobState("name", "terraform test"), 50 testAccCheckMonitoringJobExists("nsone_monitoringjob.foobar", &mj), 51 testAccCheckMonitoringJobAttributesUpdated(&mj), 52 ), 53 }, 54 }, 55 }) 56 } 57 58 func testAccCheckMonitoringJobState(key, value string) resource.TestCheckFunc { 59 return func(s *terraform.State) error { 60 rs, ok := s.RootModule().Resources["nsone_monitoringjob.foobar"] 61 if !ok { 62 return fmt.Errorf("Not found: %s", "nsone_monitoringjob.foobar") 63 } 64 65 if rs.Primary.ID == "" { 66 return fmt.Errorf("No ID is set") 67 } 68 69 p := rs.Primary 70 if p.Attributes[key] != value { 71 return fmt.Errorf( 72 "%s != %s (actual: %s)", key, value, p.Attributes[key]) 73 } 74 75 return nil 76 } 77 } 78 79 func testAccCheckMonitoringJobExists(n string, monitoringJob *nsone.MonitoringJob) resource.TestCheckFunc { 80 return func(s *terraform.State) error { 81 rs, ok := s.RootModule().Resources[n] 82 83 if !ok { 84 return fmt.Errorf("Not found: %s", n) 85 } 86 87 if rs.Primary.ID == "" { 88 return fmt.Errorf("NoID is set") 89 } 90 91 client := testAccProvider.Meta().(*nsone.APIClient) 92 93 foundMj, err := client.GetMonitoringJob(rs.Primary.Attributes["id"]) 94 95 p := rs.Primary 96 97 if err != nil { 98 return err 99 } 100 101 if foundMj.Id != p.Attributes["id"] { 102 return fmt.Errorf("Monitoring Job not found") 103 } 104 105 *monitoringJob = foundMj 106 107 return nil 108 } 109 } 110 111 func testAccCheckMonitoringJobDestroy(s *terraform.State) error { 112 client := testAccProvider.Meta().(*nsone.APIClient) 113 114 for _, rs := range s.RootModule().Resources { 115 if rs.Type != "nsone_monitoringjob" { 116 continue 117 } 118 119 _, err := client.GetMonitoringJob(rs.Primary.Attributes["id"]) 120 121 if err == nil { 122 return fmt.Errorf("Record still exists") 123 } 124 } 125 126 return nil 127 } 128 129 func testAccCheckMonitoringJobAttributes(mj *nsone.MonitoringJob) resource.TestCheckFunc { 130 return func(s *terraform.State) error { 131 if mj.Frequency != 60 { 132 return fmt.Errorf("Bad value : %d", mj.Frequency) 133 } 134 135 if mj.RapidRecheck != true { 136 return fmt.Errorf("Bad value : %s", mj.RapidRecheck) 137 } 138 139 if mj.Policy != "all" { 140 return fmt.Errorf("Bad value : %s", mj.Policy) 141 } 142 143 if mj.Config["port"].(float64) != 80 { 144 return fmt.Errorf("Bad value : %b", mj.Config["port"].(float64)) 145 } 146 147 return nil 148 } 149 } 150 151 func testAccCheckMonitoringJobAttributesUpdated(mj *nsone.MonitoringJob) resource.TestCheckFunc { 152 return func(s *terraform.State) error { 153 if mj.Frequency != 120 { 154 return fmt.Errorf("Bad value : %d", mj.Frequency) 155 } 156 157 if mj.RapidRecheck != false { 158 return fmt.Errorf("Bad value : %s", mj.RapidRecheck) 159 } 160 161 if mj.Policy != "quorum" { 162 return fmt.Errorf("Bad value : %s", mj.Policy) 163 } 164 165 if mj.Config["port"].(float64) != 443 { 166 return fmt.Errorf("Bad value : %b", mj.Config["port"].(float64)) 167 } 168 169 return nil 170 } 171 } 172 173 const testAccMonitoringJobBasic = ` 174 resource "nsone_monitoringjob" "foobar" { 175 name = "terraform test" 176 active = true 177 regions = [ "lga" ] 178 job_type = "tcp" 179 frequency = 60 180 rapid_recheck = true 181 policy = "all" 182 config { 183 send = "HEAD / HTTP/1.0\r\n\r\n" 184 port = 80 185 host = "1.1.1.1" 186 } 187 }` 188 189 const testAccMonitoringJobUpdated = ` 190 resource "nsone_monitoringjob" "foobar" { 191 name = "terraform test" 192 active = true 193 regions = [ "lga" ] 194 job_type = "tcp" 195 frequency = 120 196 rapid_recheck = false 197 policy = "quorum" 198 config { 199 send = "HEAD / HTTP/1.0\r\n\r\n" 200 port = 443 201 host = "1.1.1.1" 202 } 203 }`