github.com/akamai/AkamaiOPEN-edgegrid-golang@v1.2.2/configgtm-v1_5/geomap_test.go (about) 1 package configgtm 2 3 import ( 4 "testing" 5 6 "github.com/akamai/AkamaiOPEN-edgegrid-golang/jsonhooks-v1" 7 8 "github.com/stretchr/testify/assert" 9 "gopkg.in/h2non/gock.v1" 10 ) 11 12 var GtmTestGeoMap = "testGeoMap" 13 14 func instantiateGeoMap() *GeoMap { 15 16 geoMap := NewGeoMap(GtmTestGeoMap) 17 geoMapData := []byte(`{ 18 "assignments": [ { 19 "countries": [ "GB", "IE" ], 20 "datacenterId": 3133, 21 "nickname": "UK and Ireland users" 22 } ], 23 "defaultDatacenter": { 24 "datacenterId": 5400, 25 "nickname": "Default Mapping" 26 }, 27 "links": [ { 28 "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery", 29 "rel": "self" 30 } ], 31 "name": "testGeoMap" 32 }`) 33 jsonhooks.Unmarshal(geoMapData, geoMap) 34 35 return geoMap 36 37 } 38 39 // Verify ListGeoMap. Name hardcoded. Should pass, e.g. no API errors and resource returned 40 func TestListGeoMaps(t *testing.T) { 41 42 defer gock.Off() 43 44 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps") 45 mock. 46 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps"). 47 HeaderPresent("Authorization"). 48 Reply(200). 49 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 50 BodyString(`{ 51 "items" : [ { 52 "assignments": [ { 53 "countries": [ "GB", "IE" ], 54 "datacenterId": 3133, 55 "nickname": "UK and Ireland users" 56 } ], 57 "defaultDatacenter": { 58 "datacenterId": 5400, 59 "nickname": "Default Mapping" 60 }, 61 "links": [ { 62 "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery", 63 "rel": "self" 64 } ], 65 "name": "testGeoMap" 66 } ] 67 }`) 68 69 Init(config) 70 71 testGeoMap, err := ListGeoMaps(gtmTestDomain) 72 assert.NoError(t, err) 73 assert.IsType(t, &GeoMap{}, testGeoMap[0]) 74 assert.Equal(t, GtmTestGeoMap, testGeoMap[0].Name) 75 76 } 77 78 // Verify GetGeoMap. Name hardcoded. Should pass, e.g. no API errors and resource returned 79 func TestGetGeoMap(t *testing.T) { 80 81 defer gock.Off() 82 83 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap) 84 mock. 85 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap). 86 HeaderPresent("Authorization"). 87 Reply(200). 88 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 89 BodyString(`{ 90 "assignments": [ { 91 "countries": [ "GB", "IE" ], 92 "datacenterId": 3133, 93 "nickname": "UK and Ireland users" 94 } ], 95 "defaultDatacenter": { 96 "datacenterId": 5400, 97 "nickname": "Default Mapping" 98 }, 99 "links": [ { 100 "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery", 101 "rel": "self" 102 } ], 103 "name": "testGeoMap" 104 }`) 105 106 Init(config) 107 108 testGeoMap, err := GetGeoMap(GtmTestGeoMap, gtmTestDomain) 109 assert.NoError(t, err) 110 assert.IsType(t, &GeoMap{}, testGeoMap) 111 assert.Equal(t, GtmTestGeoMap, testGeoMap.Name) 112 113 } 114 115 // Verify failed case for GetGeoMap. Should pass, e.g. no API errors and domain not found 116 func TestGetBadGeoMap(t *testing.T) { 117 118 badName := "somebadname" 119 defer gock.Off() 120 121 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + badName) 122 mock. 123 Get("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+badName). 124 HeaderPresent("Authorization"). 125 Reply(404). 126 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 127 BodyString(`{ 128 }`) 129 130 Init(config) 131 132 _, err := GetGeoMap(badName, gtmTestDomain) 133 assert.Error(t, err) 134 135 } 136 137 // Test Create GeoMap. 138 func TestCreateGeoMap(t *testing.T) { 139 140 defer gock.Off() 141 142 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap) 143 mock. 144 Put("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap). 145 HeaderPresent("Authorization"). 146 Reply(200). 147 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 148 BodyString(`{ 149 "resource" : { 150 "assignments": [ { 151 "countries": [ "GB", "IE" ], 152 "datacenterId": 3133, 153 "nickname": "UK and Ireland users" 154 } ], 155 "defaultDatacenter": { 156 "datacenterId": 5400, 157 "nickname": "Default Mapping" 158 }, 159 "links": [ { 160 "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery", 161 "rel": "self" 162 } ], 163 "name": "testGeoMap" 164 }, 165 "status" : { 166 "changeId": "93a48b86-4fc3-4a5f-9ca2-036835034cc6", 167 "links": [ 168 { 169 "href": "/config-gtm/v1/domains/example.akadns.net/status/current", 170 "rel": "self" 171 } 172 ], 173 "message": "Change Pending", 174 "passingValidation": true, 175 "propagationStatus": "PENDING", 176 "propagationStatusDate": "2014-04-15T11:30:27.000+0000" 177 } 178 }`) 179 180 Init(config) 181 182 testGeoMap := instantiateGeoMap() 183 statresp, err := testGeoMap.Create(gtmTestDomain) 184 assert.NoError(t, err) 185 186 assert.IsType(t, &GeoMap{}, statresp.Resource) 187 assert.Equal(t, GtmTestGeoMap, statresp.Resource.Name) 188 189 } 190 191 func TestUpdateGeoMap(t *testing.T) { 192 193 defer gock.Off() 194 195 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap) 196 mock. 197 Put("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap). 198 HeaderPresent("Authorization"). 199 Reply(200). 200 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 201 BodyString(`{ 202 "resource" : { 203 "assignments": [ { 204 "countries": [ "GB", "IE" ], 205 "datacenterId": 3133, 206 "nickname": "UK and Ireland users" 207 } ], 208 "defaultDatacenter": { 209 "datacenterId": 5400, 210 "nickname": "Default Mapping" 211 }, 212 "links": [ { 213 "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery", 214 "rel": "self" 215 } ], 216 "name": "testGeoMap" 217 }, 218 "status" : { 219 "changeId": "93a48b86-4fc3-4a5f-9ca2-036835034cc6", 220 "links": [ 221 { 222 "href": "/config-gtm/v1/domains/example.akadns.net/status/current", 223 "rel": "self" 224 } 225 ], 226 "message": "Change Pending", 227 "passingValidation": true, 228 "propagationStatus": "PENDING", 229 "propagationStatusDate": "2014-04-15T11:30:27.000+0000" 230 } 231 }`) 232 233 Init(config) 234 235 testGeoMap := instantiateGeoMap() 236 _, err := testGeoMap.Update(gtmTestDomain) 237 assert.NoError(t, err) 238 239 } 240 241 func TestDeleteGeoMap(t *testing.T) { 242 243 defer gock.Off() 244 245 mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap) 246 mock. 247 Delete("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap). 248 HeaderPresent("Authorization"). 249 Reply(200). 250 SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8"). 251 BodyString(`{ 252 "resource" : { 253 }, 254 "status" : { 255 "changeId": "93a48b86-4fc3-4a5f-9ca2-036835034cc6", 256 "links": [ 257 { 258 "href": "/config-gtm/v1/domains/example.akadns.net/status/current", 259 "rel": "self" 260 } 261 ], 262 "message": "Change Pending", 263 "passingValidation": true, 264 "propagationStatus": "PENDING", 265 "propagationStatusDate": "2014-04-15T11:30:27.000+0000" 266 } 267 }`) 268 269 Init(config) 270 271 getGeoMap := instantiateGeoMap() 272 stat, err := getGeoMap.Delete(gtmTestDomain) 273 assert.NoError(t, err) 274 assert.Equal(t, "93a48b86-4fc3-4a5f-9ca2-036835034cc6", stat.ChangeId) 275 276 }