github.com/akamai/AkamaiOPEN-edgegrid-golang@v1.2.2/configgtm-v1_5/datacenter_test.go (about) 1 package configgtm 2 3 import ( 4 "testing" 5 6 "github.com/akamai/AkamaiOPEN-edgegrid-golang/jsonhooks-v1" 7 //edge "github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid" 8 "github.com/stretchr/testify/assert" 9 "gopkg.in/h2non/gock.v1" 10 11 "fmt" 12 ) 13 14 var GtmTestDC1 = "testDC1" 15 var GtmTestDC2 = "testDC2" 16 var dcMap = map[string]string{"GtmTestDC1": GtmTestDC1, "GtmTestDC2": GtmTestDC2} 17 18 func instantiateDatacenter() *Datacenter { 19 20 dc := NewDatacenter() 21 dcData := []byte(`{ 22 "datacenterId" : 3131, 23 "nickname" : "testDC1", 24 "scorePenalty" : 0, 25 "city" : null, 26 "stateOrProvince" : null, 27 "country" : null, 28 "latitude" : null, 29 "longitude" : null, 30 "cloneOf" : null, 31 "virtual" : true, 32 "defaultLoadObject" : null, 33 "continent" : null, 34 "servermonitorPool" : null, 35 "servermonitorLivenessCount" : null, 36 "servermonitorLoadCount" : null, 37 "pingInterval" : null, 38 "pingPacketSize" : null, 39 "cloudServerTargeting" : false, 40 "cloudServerHostHeaderOverride" : false 41 }`) 42 jsonhooks.Unmarshal(dcData, dc) 43 44 return dc 45 46 } 47 48 // Verify ListDatacenters. Should pass, e.g. no API errors and non nil list. 49 func TestListDatacenters(t *testing.T) { 50 51 defer gock.Off() 52 53 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters") 54 mock. 55 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters"). 56 HeaderPresent("Authorization"). 57 Reply(200). 58 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 59 BodyString(`{ 60 "items" : [ { 61 "datacenterId" : 3131, 62 "nickname" : "testDC1", 63 "scorePenalty" : 0, 64 "city" : null, 65 "stateOrProvince" : null, 66 "country" : null, 67 "latitude" : null, 68 "longitude" : null, 69 "cloneOf" : null, 70 "virtual" : true, 71 "defaultLoadObject" : null, 72 "continent" : null, 73 "servermonitorPool" : null, 74 "servermonitorLivenessCount" : null, 75 "servermonitorLoadCount" : null, 76 "pingInterval" : null, 77 "pingPacketSize" : null, 78 "cloudServerTargeting" : false, 79 "cloudServerHostHeaderOverride" : false, 80 "links" : [ { 81 "rel" : "self", 82 "href" : "https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131" 83 } ] 84 } ] 85 }`) 86 87 Init(config) 88 89 dcList, err := ListDatacenters(gtmTestDomain) 90 assert.NoError(t, err) 91 assert.NotEqual(t, dcList, nil) 92 93 if len(dcList) > 0 { 94 firstDC := dcList[0] 95 assert.Equal(t, firstDC.Nickname, GtmTestDC1) 96 } else { 97 assert.Equal(t, 0, 1, "ListDatacenters: empty list") 98 fmt.Println("ListDatacenters: empty list") 99 } 100 101 } 102 103 // Verify GetDatacenter. Name hardcoded. Should pass, e.g. no API errors and property returned 104 // Depends on CreateDatacenter 105 func TestGetDatacenter(t *testing.T) { 106 107 defer gock.Off() 108 109 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/3131") 110 mock. 111 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/3131"). 112 HeaderPresent("Authorization"). 113 Reply(200). 114 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 115 BodyString(`{ 116 "datacenterId" : 3131, 117 "nickname" : "testDC1", 118 "scorePenalty" : 0, 119 "city" : null, 120 "stateOrProvince" : null, 121 "country" : null, 122 "latitude" : null, 123 "longitude" : null, 124 "cloneOf" : null, 125 "virtual" : true, 126 "defaultLoadObject" : null, 127 "continent" : null, 128 "servermonitorPool" : null, 129 "servermonitorLivenessCount" : null, 130 "servermonitorLoadCount" : null, 131 "pingInterval" : null, 132 "pingPacketSize" : null, 133 "cloudServerTargeting" : false, 134 "cloudServerHostHeaderOverride" : false, 135 "links" : [ { 136 "rel" : "self", 137 "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131" 138 } ] 139 }`) 140 141 Init(config) 142 143 testDC, err := GetDatacenter(3131, gtmTestDomain) 144 assert.NoError(t, err) 145 assert.Equal(t, 3131, testDC.DatacenterId) 146 147 } 148 149 // Verify failed case for GetDatacenter. Should pass, e.g. no API errors and domain not found 150 func TestGetBadDatacenter(t *testing.T) { 151 152 defer gock.Off() 153 154 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/9999") 155 mock. 156 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/9999"). 157 HeaderPresent("Authorization"). 158 Reply(404). 159 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 160 BodyString(`{ 161 }`) 162 163 Init(config) 164 165 _, err := GetDatacenter(9999, gtmTestDomain) 166 assert.Error(t, err) 167 168 } 169 170 // Test Create datacenter. 171 func TestCreateDatacenter(t *testing.T) { 172 173 defer gock.Off() 174 175 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters") 176 mock. 177 Post("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters"). 178 HeaderPresent("Authorization"). 179 Reply(201). 180 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 181 BodyString(`{ 182 "resource" : { 183 "datacenterId" : 3131, 184 "nickname" : "testDC1", 185 "scorePenalty" : 0, 186 "city" : null, 187 "stateOrProvince" : null, 188 "country" : null, 189 "latitude" : null, 190 "longitude" : null, 191 "cloneOf" : null, 192 "virtual" : true, 193 "defaultLoadObject" : null, 194 "continent" : null, 195 "servermonitorPool" : null, 196 "servermonitorLivenessCount" : null, 197 "servermonitorLoadCount" : null, 198 "pingInterval" : null, 199 "pingPacketSize" : null, 200 "cloudServerTargeting" : false, 201 "cloudServerHostHeaderOverride" : false, 202 "links" : [ { 203 "rel" : "self", 204 "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131" 205 } ] 206 }, 207 "status" : { 208 "message" : "Change Pending", 209 "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69", 210 "propagationStatus" : "PENDING", 211 "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00", 212 "passingValidation" : true, 213 "links" : [ { 214 "rel" : "self", 215 "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current" 216 } ] 217 } 218 }`) 219 220 testDC := NewDatacenter() 221 testDC.Nickname = GtmTestDC1 222 statresp, err := testDC.Create(gtmTestDomain) 223 assert.NoError(t, err) 224 assert.Equal(t, GtmTestDC1, statresp.Resource.Nickname) 225 226 } 227 228 func TestUpdateDatacenter(t *testing.T) { 229 230 defer gock.Off() 231 232 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/3131") 233 mock. 234 Put("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/3131"). 235 HeaderPresent("Authorization"). 236 Reply(200). 237 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 238 BodyString(`{ 239 "resource" : { 240 "datacenterId" : 3131, 241 "nickname" : "testDC1", 242 "scorePenalty" : 0, 243 "city" : null, 244 "stateOrProvince" : null, 245 "country" : null, 246 "latitude" : null, 247 "longitude" : null, 248 "cloneOf" : null, 249 "virtual" : true, 250 "defaultLoadObject" : null, 251 "continent" : null, 252 "servermonitorPool" : null, 253 "servermonitorLivenessCount" : null, 254 "servermonitorLoadCount" : null, 255 "pingInterval" : null, 256 "pingPacketSize" : null, 257 "cloudServerTargeting" : false, 258 "cloudServerHostHeaderOverride" : false, 259 "links" : [ { 260 "rel" : "self", 261 "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131" 262 } ] 263 }, 264 "status" : { 265 "message" : "Change Pending", 266 "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69", 267 "propagationStatus" : "PENDING", 268 "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00", 269 "passingValidation" : true, 270 "links" : [ { 271 "rel" : "self", 272 "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current" 273 } ] 274 } 275 }`) 276 277 Init(config) 278 279 testDC := instantiateDatacenter() 280 stat, err := testDC.Update(gtmTestDomain) 281 assert.NoError(t, err) 282 assert.Equal(t, stat.ChangeId, "4c7e6466-84e1-4895-bdf5-e3608d708d69") 283 284 } 285 286 func TestDeleteDatacenter(t *testing.T) { 287 288 defer gock.Off() 289 290 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/3131") 291 mock. 292 Delete("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/3131"). 293 HeaderPresent("Authorization"). 294 Reply(200). 295 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 296 BodyString(`{ 297 "resource" : { 298 }, 299 "status" : { 300 "message" : "Change Pending", 301 "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69", 302 "propagationStatus" : "PENDING", 303 "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00", 304 "passingValidation" : true, 305 "links" : [ { 306 "rel" : "self", 307 "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current" 308 } ] 309 } 310 }`) 311 312 Init(config) 313 314 testDC := instantiateDatacenter() 315 _, err := testDC.Delete(gtmTestDomain) 316 assert.NoError(t, err) 317 318 } 319 320 func TestCreateMapsDefaultDatacenter(t *testing.T) { 321 322 defer gock.Off() 323 324 mock1 := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/5400") 325 mock1. 326 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/5400"). 327 HeaderPresent("Authorization"). 328 Reply(404). 329 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8") 330 331 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/default-datacenter-for-maps") 332 mock. 333 Post("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/default-datacenter-for-maps"). 334 HeaderPresent("Authorization"). 335 Reply(200). 336 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 337 BodyString(`{ 338 "resource" : { 339 "datacenterId" : 5400, 340 "nickname" : "Default Datacenter", 341 "scorePenalty" : 0, 342 "city" : null, 343 "stateOrProvince" : null, 344 "country" : null, 345 "latitude" : null, 346 "longitude" : null, 347 "cloneOf" : null, 348 "virtual" : true, 349 "defaultLoadObject" : null, 350 "continent" : null, 351 "servermonitorPool" : null, 352 "servermonitorLivenessCount" : null, 353 "servermonitorLoadCount" : null, 354 "pingInterval" : null, 355 "pingPacketSize" : null, 356 "cloudServerTargeting" : false, 357 "cloudServerHostHeaderOverride" : false, 358 "links" : [ { 359 "rel" : "self", 360 "href" : "https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/5400" 361 } ] 362 }, 363 "status" : { 364 "message" : "Change Pending", 365 "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69", 366 "propagationStatus" : "PENDING", 367 "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00", 368 "passingValidation" : true, 369 "links" : [ { 370 "rel" : "self", 371 "href" : "https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current" 372 } ] 373 } 374 }`) 375 376 Init(config) 377 defDC, err := CreateMapsDefaultDatacenter(gtmTestDomain) 378 assert.NoError(t, err) 379 assert.Equal(t, defDC.DatacenterId, 5400) 380 381 }