github.com/stakater/IngressMonitorController@v1.0.103/pkg/monitors/uptimerobot/uptime-status-page_test.go (about) 1 package uptimerobot 2 3 import ( 4 "strings" 5 "testing" 6 7 log "github.com/sirupsen/logrus" 8 "github.com/stakater/IngressMonitorController/pkg/config" 9 "github.com/stakater/IngressMonitorController/pkg/models" 10 "github.com/stakater/IngressMonitorController/pkg/util" 11 ) 12 13 // Not a test case. Cleanup to remove added dummy StatusPages 14 func TestRemoveDanglingStatusPages(t *testing.T) { 15 config := config.GetControllerConfig() 16 service := UpTimeStatusPageService{} 17 provider := util.GetProviderWithName(config, "UptimeRobot") 18 service.Setup(*provider) 19 20 statusPages, err := service.GetAllStatusPages("status-page-test") 21 22 if err == nil && statusPages == nil { 23 log.Println("No dangling StatusPages named: status-page-test") 24 } 25 if err != nil && statusPages != nil { 26 for _, statusPage := range statusPages { 27 service.Remove(statusPage) 28 } 29 } 30 31 statusPages1, err := service.GetAllStatusPages("status-page-test-1") 32 33 if err == nil && statusPages1 == nil { 34 log.Println("No dangling StatusPages named: status-page-test-1") 35 } 36 if err != nil && statusPages1 != nil { 37 for _, statusPage := range statusPages1 { 38 service.Remove(statusPage) 39 } 40 } 41 42 statusPages2, err := service.GetAllStatusPages("status-page-test-2") 43 44 if err == nil && statusPages2 == nil { 45 log.Println("No dangling StatusPages named: status-page-test-2") 46 } 47 if err != nil && statusPages2 != nil { 48 for _, statusPage := range statusPages2 { 49 service.Remove(statusPage) 50 } 51 } 52 53 statusPages3, err := service.GetAllStatusPages("status-page-test-3") 54 55 if err == nil && statusPages3 == nil { 56 log.Println("No dangling StatusPages named: status-page-test-3") 57 } 58 if err == nil && statusPages3 != nil { 59 for _, statusPage := range statusPages3 { 60 service.Remove(statusPage) 61 } 62 } 63 64 } 65 66 func TestAddMonitorMultipleTimesToStatusPage(t *testing.T) { 67 config := config.GetControllerConfig() 68 service := UpTimeStatusPageService{} 69 provider := util.GetProviderWithName(config, "UptimeRobot") 70 service.Setup(*provider) 71 72 statusPage := UpTimeStatusPage{Name: "status-page-test"} 73 ID, err := service.Add(statusPage) 74 if err != nil { 75 t.Error("Error: " + err.Error()) 76 } 77 statusPage.ID = ID 78 79 monitorService := UpTimeMonitorService{} 80 provider = util.GetProviderWithName(config, "UptimeRobot") 81 monitorService.Setup(*provider) 82 83 monitor := models.Monitor{Name: "google-test", URL: "https://google.com"} 84 monitorService.Add(monitor) 85 86 monitorRes, err := monitorService.GetByName("google-test") 87 if err != nil { 88 t.Error("Error: " + err.Error()) 89 } 90 91 service.AddMonitorToStatusPage(statusPage, *monitorRes) 92 if err != nil { 93 t.Error("Error: " + err.Error()) 94 } 95 96 statusPageRes, err := service.Get(statusPage.ID) 97 if err != nil { 98 t.Error("Error: " + err.Error()) 99 } 100 if !util.ContainsString(statusPageRes.Monitors, monitorRes.ID) { 101 t.Error("The status page does not contain the monitor, expected: " + monitorRes.ID + ", but was: " + strings.Join(statusPageRes.Monitors, "-")) 102 } 103 104 service.AddMonitorToStatusPage(statusPage, *monitorRes) 105 if err != nil { 106 t.Error("Error: " + err.Error()) 107 } 108 109 statusPageRes, err = service.Get(statusPage.ID) 110 if err != nil { 111 t.Error("Error: " + err.Error()) 112 } 113 if !util.ContainsString(statusPageRes.Monitors, monitorRes.ID) { 114 t.Error("The status page does not contain the monitor, expected: " + monitorRes.ID + ", but was: " + strings.Join(statusPageRes.Monitors, "-")) 115 } 116 117 // Tidy up 118 monitorService.Remove(*monitorRes) 119 service.Remove(statusPage) 120 } 121 122 func TestAddMultipleMonitorsToStatusPage(t *testing.T) { 123 config := config.GetControllerConfig() 124 service := UpTimeStatusPageService{} 125 provider := util.GetProviderWithName(config, "UptimeRobot") 126 service.Setup(*provider) 127 128 statusPage := UpTimeStatusPage{Name: "status-page-test"} 129 ID, err := service.Add(statusPage) 130 if err != nil { 131 t.Error("Error: " + err.Error()) 132 } 133 statusPage.ID = ID 134 135 monitorService := UpTimeMonitorService{} 136 provider = util.GetProviderWithName(config, "UptimeRobot") 137 monitorService.Setup(*provider) 138 monitor1 := models.Monitor{Name: "google-test-1", URL: "https://google.com"} 139 monitorService.Add(monitor1) 140 141 monitor1Res, err := monitorService.GetByName("google-test-1") 142 if err != nil { 143 t.Error("Error: " + err.Error()) 144 } 145 146 service.AddMonitorToStatusPage(statusPage, *monitor1Res) 147 if err != nil { 148 t.Error("Error: " + err.Error()) 149 } 150 151 monitor2 := models.Monitor{Name: "google-test-2", URL: "https://google.co.uk"} 152 monitorService.Add(monitor2) 153 154 monitor2Res, err := monitorService.GetByName("google-test-2") 155 if err != nil { 156 t.Error("Error: " + err.Error()) 157 } 158 159 service.AddMonitorToStatusPage(statusPage, *monitor2Res) 160 if err != nil { 161 t.Error("Error: " + err.Error()) 162 } 163 164 statusPageRes, err := service.Get(statusPage.ID) 165 if err != nil { 166 t.Error("Error: " + err.Error()) 167 } 168 if !util.ContainsString(statusPageRes.Monitors, monitor1Res.ID) { 169 t.Error("The status page does not contain the first monitor, expected: " + monitor1Res.ID + ", but was: " + strings.Join(statusPageRes.Monitors, "-")) 170 } 171 if !util.ContainsString(statusPageRes.Monitors, monitor2Res.ID) { 172 t.Error("The status page does not contain the second monitor, expected: " + monitor2Res.ID + ", but was: " + strings.Join(statusPageRes.Monitors, "-")) 173 } 174 175 // Tidy up 176 monitorService.Remove(*monitor1Res) 177 monitorService.Remove(*monitor2Res) 178 service.Remove(statusPage) 179 } 180 181 func TestGetStatusPagesForMonitor(t *testing.T) { 182 config := config.GetControllerConfig() 183 service := UpTimeStatusPageService{} 184 provider := util.GetProviderWithName(config, "UptimeRobot") 185 service.Setup(*provider) 186 187 statusPage1 := UpTimeStatusPage{Name: "status-page-test-1"} 188 ID1, err := service.Add(statusPage1) 189 if err != nil { 190 t.Error("Error: " + err.Error()) 191 } 192 statusPage1.ID = ID1 193 194 statusPage2 := UpTimeStatusPage{Name: "status-page-test-2"} 195 ID2, err := service.Add(statusPage2) 196 if err != nil { 197 t.Error("Error: " + err.Error()) 198 } 199 statusPage2.ID = ID2 200 201 statusPage3 := UpTimeStatusPage{Name: "status-page-test-3"} 202 ID3, err := service.Add(statusPage3) 203 if err != nil { 204 t.Error("Error: " + err.Error()) 205 } 206 statusPage3.ID = ID3 207 208 monitorService := UpTimeMonitorService{} 209 provider = util.GetProviderWithName(config, "UptimeRobot") 210 monitorService.Setup(*provider) 211 monitor := models.Monitor{Name: "google-test", URL: "https://google.com"} 212 monitorService.Add(monitor) 213 214 monitorRes, err := monitorService.GetByName("google-test") 215 if err != nil { 216 t.Error("Error: " + err.Error()) 217 } 218 219 service.AddMonitorToStatusPage(statusPage1, *monitorRes) 220 if err != nil { 221 t.Error("Error: " + err.Error()) 222 } 223 224 service.AddMonitorToStatusPage(statusPage2, *monitorRes) 225 if err != nil { 226 t.Error("Error: " + err.Error()) 227 } 228 229 statusPageIds, err := service.GetStatusPagesForMonitor(monitorRes.ID) 230 if err != nil { 231 t.Error("Error: " + err.Error()) 232 } 233 if !util.ContainsString(statusPageIds, statusPage1.ID) { 234 t.Error("The first status page does not contain the monitor, expected: " + statusPage1.ID + ", but was: " + strings.Join(statusPageIds, "-")) 235 } 236 if !util.ContainsString(statusPageIds, statusPage2.ID) { 237 t.Error("The second status page does not contain the monitor, expected: " + statusPage2.ID + ", but was: " + strings.Join(statusPageIds, "-")) 238 } 239 240 if util.ContainsString(statusPageIds, statusPage3.ID) { 241 t.Error("The third status page should not contain the monitor, but was: " + strings.Join(statusPageIds, "-")) 242 } 243 244 // Tidy up 245 monitorService.Remove(*monitorRes) 246 service.Remove(statusPage1) 247 service.Remove(statusPage2) 248 service.Remove(statusPage3) 249 } 250 251 func TestRemoveMonitorFromStatusPage(t *testing.T) { 252 config := config.GetControllerConfig() 253 service := UpTimeStatusPageService{} 254 provider := util.GetProviderWithName(config, "UptimeRobot") 255 service.Setup(*provider) 256 257 statusPage := UpTimeStatusPage{Name: "status-page-test"} 258 ID, err := service.Add(statusPage) 259 if err != nil { 260 t.Error("Error: " + err.Error()) 261 } 262 statusPage.ID = ID 263 264 monitorService := UpTimeMonitorService{} 265 provider = util.GetProviderWithName(config, "UptimeRobot") 266 monitorService.Setup(*provider) 267 monitor := models.Monitor{Name: "google-test", URL: "https://google.com"} 268 monitorService.Add(monitor) 269 270 monitorRes, err := monitorService.GetByName("google-test") 271 if err != nil { 272 t.Error("Error: " + err.Error()) 273 } 274 275 _, err = service.AddMonitorToStatusPage(statusPage, *monitorRes) 276 if err != nil { 277 t.Error("Error: " + err.Error()) 278 } 279 280 statusPageRes, err := service.Get(statusPage.ID) 281 if err != nil { 282 t.Error("Error: " + err.Error()) 283 } 284 if !util.ContainsString(statusPageRes.Monitors, monitorRes.ID) { 285 t.Error("The status page does not contain the monitor, expected: " + monitorRes.ID + ", but was: " + strings.Join(statusPageRes.Monitors, "-")) 286 } 287 288 _, err = service.RemoveMonitorFromStatusPage(statusPage, *monitorRes) 289 if err != nil { 290 t.Error("Error: " + err.Error()) 291 } 292 293 statusPageRes, err = service.Get(statusPage.ID) 294 if err != nil { 295 t.Error("Error: " + err.Error()) 296 } 297 if util.ContainsString(statusPageRes.Monitors, monitorRes.ID) { 298 t.Error("The status page still contains the monitor, but shouldn't, monitors: " + strings.Join(statusPageRes.Monitors, "-")) 299 } 300 301 // Tidy up 302 monitorService.Remove(*monitorRes) 303 service.Remove(statusPage) 304 }