github.com/gophercloud/gophercloud@v1.11.0/openstack/cdn/v1/services/testing/fixtures_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 th "github.com/gophercloud/gophercloud/testhelper" 9 fake "github.com/gophercloud/gophercloud/testhelper/client" 10 ) 11 12 // HandleListCDNServiceSuccessfully creates an HTTP handler at `/services` on the test handler mux 13 // that responds with a `List` response. 14 func HandleListCDNServiceSuccessfully(t *testing.T) { 15 th.Mux.HandleFunc("/services", func(w http.ResponseWriter, r *http.Request) { 16 th.TestMethod(t, r, "GET") 17 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 18 19 w.Header().Set("Content-Type", "application/json") 20 w.WriteHeader(http.StatusOK) 21 22 r.ParseForm() 23 marker := r.Form.Get("marker") 24 switch marker { 25 case "": 26 fmt.Fprintf(w, ` 27 { 28 "links": [ 29 { 30 "rel": "next", 31 "href": "https://www.poppycdn.io/v1.0/services?marker=96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0&limit=20" 32 } 33 ], 34 "services": [ 35 { 36 "id": "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", 37 "name": "mywebsite.com", 38 "domains": [ 39 { 40 "domain": "www.mywebsite.com" 41 } 42 ], 43 "origins": [ 44 { 45 "origin": "mywebsite.com", 46 "port": 80, 47 "ssl": false 48 } 49 ], 50 "caching": [ 51 { 52 "name": "default", 53 "ttl": 3600 54 }, 55 { 56 "name": "home", 57 "ttl": 17200, 58 "rules": [ 59 { 60 "name": "index", 61 "request_url": "/index.htm" 62 } 63 ] 64 }, 65 { 66 "name": "images", 67 "ttl": 12800, 68 "rules": [ 69 { 70 "name": "images", 71 "request_url": "*.png" 72 } 73 ] 74 } 75 ], 76 "restrictions": [ 77 { 78 "name": "website only", 79 "rules": [ 80 { 81 "name": "mywebsite.com", 82 "referrer": "www.mywebsite.com" 83 } 84 ] 85 } 86 ], 87 "flavor_id": "asia", 88 "status": "deployed", 89 "errors" : [], 90 "links": [ 91 { 92 "href": "https://www.poppycdn.io/v1.0/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", 93 "rel": "self" 94 }, 95 { 96 "href": "mywebsite.com.cdn123.poppycdn.net", 97 "rel": "access_url" 98 }, 99 { 100 "href": "https://www.poppycdn.io/v1.0/flavors/asia", 101 "rel": "flavor" 102 } 103 ] 104 }, 105 { 106 "id": "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f1", 107 "name": "myothersite.com", 108 "domains": [ 109 { 110 "domain": "www.myothersite.com" 111 } 112 ], 113 "origins": [ 114 { 115 "origin": "44.33.22.11", 116 "port": 80, 117 "ssl": false 118 }, 119 { 120 "origin": "77.66.55.44", 121 "port": 80, 122 "ssl": false, 123 "rules": [ 124 { 125 "name": "videos", 126 "request_url": "^/videos/*.m3u" 127 } 128 ] 129 } 130 ], 131 "caching": [ 132 { 133 "name": "default", 134 "ttl": 3600 135 } 136 ], 137 "restrictions": [ 138 {} 139 ], 140 "flavor_id": "europe", 141 "status": "deployed", 142 "links": [ 143 { 144 "href": "https://www.poppycdn.io/v1.0/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f1", 145 "rel": "self" 146 }, 147 { 148 "href": "myothersite.com.poppycdn.net", 149 "rel": "access_url" 150 }, 151 { 152 "href": "https://www.poppycdn.io/v1.0/flavors/europe", 153 "rel": "flavor" 154 } 155 ] 156 } 157 ] 158 } 159 `) 160 case "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f1": 161 fmt.Fprintf(w, `{ 162 "services": [] 163 }`) 164 default: 165 t.Fatalf("Unexpected marker: [%s]", marker) 166 } 167 }) 168 } 169 170 // HandleCreateCDNServiceSuccessfully creates an HTTP handler at `/services` on the test handler mux 171 // that responds with a `Create` response. 172 func HandleCreateCDNServiceSuccessfully(t *testing.T) { 173 th.Mux.HandleFunc("/services", func(w http.ResponseWriter, r *http.Request) { 174 th.TestMethod(t, r, "POST") 175 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 176 th.TestJSONRequest(t, r, ` 177 { 178 "name": "mywebsite.com", 179 "domains": [ 180 { 181 "domain": "www.mywebsite.com" 182 }, 183 { 184 "domain": "blog.mywebsite.com" 185 } 186 ], 187 "origins": [ 188 { 189 "origin": "mywebsite.com", 190 "port": 80, 191 "ssl": false 192 } 193 ], 194 "restrictions": [ 195 { 196 "name": "website only", 197 "rules": [ 198 { 199 "name": "mywebsite.com", 200 "referrer": "www.mywebsite.com" 201 } 202 ] 203 } 204 ], 205 "caching": [ 206 { 207 "name": "default", 208 "ttl": 3600 209 } 210 ], 211 212 "flavor_id": "cdn" 213 } 214 `) 215 w.Header().Add("Location", "https://global.cdn.api.rackspacecloud.com/v1.0/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0") 216 w.WriteHeader(http.StatusAccepted) 217 }) 218 } 219 220 // HandleGetCDNServiceSuccessfully creates an HTTP handler at `/services/{id}` on the test handler mux 221 // that responds with a `Get` response. 222 func HandleGetCDNServiceSuccessfully(t *testing.T) { 223 th.Mux.HandleFunc("/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", func(w http.ResponseWriter, r *http.Request) { 224 th.TestMethod(t, r, "GET") 225 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 226 227 w.Header().Set("Content-Type", "application/json") 228 w.WriteHeader(http.StatusOK) 229 fmt.Fprintf(w, ` 230 { 231 "id": "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", 232 "name": "mywebsite.com", 233 "domains": [ 234 { 235 "domain": "www.mywebsite.com", 236 "protocol": "http" 237 } 238 ], 239 "origins": [ 240 { 241 "origin": "mywebsite.com", 242 "port": 80, 243 "ssl": false 244 } 245 ], 246 "caching": [ 247 { 248 "name": "default", 249 "ttl": 3600 250 }, 251 { 252 "name": "home", 253 "ttl": 17200, 254 "rules": [ 255 { 256 "name": "index", 257 "request_url": "/index.htm" 258 } 259 ] 260 }, 261 { 262 "name": "images", 263 "ttl": 12800, 264 "rules": [ 265 { 266 "name": "images", 267 "request_url": "*.png" 268 } 269 ] 270 } 271 ], 272 "restrictions": [ 273 { 274 "name": "website only", 275 "rules": [ 276 { 277 "name": "mywebsite.com", 278 "referrer": "www.mywebsite.com" 279 } 280 ] 281 } 282 ], 283 "flavor_id": "cdn", 284 "status": "deployed", 285 "errors" : [], 286 "links": [ 287 { 288 "href": "https://global.cdn.api.rackspacecloud.com/v1.0/110011/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", 289 "rel": "self" 290 }, 291 { 292 "href": "blog.mywebsite.com.cdn1.raxcdn.com", 293 "rel": "access_url" 294 }, 295 { 296 "href": "https://global.cdn.api.rackspacecloud.com/v1.0/110011/flavors/cdn", 297 "rel": "flavor" 298 } 299 ] 300 } 301 `) 302 }) 303 } 304 305 // HandleUpdateCDNServiceSuccessfully creates an HTTP handler at `/services/{id}` on the test handler mux 306 // that responds with a `Update` response. 307 func HandleUpdateCDNServiceSuccessfully(t *testing.T) { 308 th.Mux.HandleFunc("/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", func(w http.ResponseWriter, r *http.Request) { 309 th.TestMethod(t, r, "PATCH") 310 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 311 th.TestJSONRequest(t, r, ` 312 [ 313 { 314 "op": "add", 315 "path": "/domains/-", 316 "value": {"domain": "appended.mocksite4.com"} 317 }, 318 { 319 "op": "add", 320 "path": "/domains/4", 321 "value": {"domain": "inserted.mocksite4.com"} 322 }, 323 { 324 "op": "add", 325 "path": "/domains", 326 "value": [ 327 {"domain": "bulkadded1.mocksite4.com"}, 328 {"domain": "bulkadded2.mocksite4.com"} 329 ] 330 }, 331 { 332 "op": "replace", 333 "path": "/origins/2", 334 "value": {"origin": "44.33.22.11", "port": 80, "ssl": false} 335 }, 336 { 337 "op": "replace", 338 "path": "/origins", 339 "value": [ 340 {"origin": "44.33.22.11", "port": 80, "ssl": false}, 341 {"origin": "55.44.33.22", "port": 443, "ssl": true} 342 ] 343 }, 344 { 345 "op": "remove", 346 "path": "/caching/8" 347 }, 348 { 349 "op": "remove", 350 "path": "/caching" 351 }, 352 { 353 "op": "replace", 354 "path": "/name", 355 "value": "differentServiceName" 356 } 357 ] 358 `) 359 w.Header().Add("Location", "https://www.poppycdn.io/v1.0/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0") 360 w.WriteHeader(http.StatusAccepted) 361 }) 362 } 363 364 // HandleDeleteCDNServiceSuccessfully creates an HTTP handler at `/services/{id}` on the test handler mux 365 // that responds with a `Delete` response. 366 func HandleDeleteCDNServiceSuccessfully(t *testing.T) { 367 th.Mux.HandleFunc("/services/96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", func(w http.ResponseWriter, r *http.Request) { 368 th.TestMethod(t, r, "DELETE") 369 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 370 w.WriteHeader(http.StatusAccepted) 371 }) 372 }