github.com/gophercloud/gophercloud@v1.11.0/openstack/containerinfra/v1/clustertemplates/testing/fixtures_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 "time" 8 9 "github.com/gophercloud/gophercloud" 10 "github.com/gophercloud/gophercloud/openstack/containerinfra/v1/clustertemplates" 11 th "github.com/gophercloud/gophercloud/testhelper" 12 fake "github.com/gophercloud/gophercloud/testhelper/client" 13 ) 14 15 const ClusterTemplateResponse = ` 16 { 17 "apiserver_port": 8081, 18 "cluster_distro": "fedora-atomic", 19 "coe": "kubernetes", 20 "created_at": "2018-06-27T16:52:21+00:00", 21 "dns_nameserver": "8.8.8.8", 22 "docker_storage_driver": "devicemapper", 23 "docker_volume_size": 3, 24 "external_network_id": "public", 25 "fixed_network": null, 26 "fixed_subnet": null, 27 "flavor_id": "m1.small", 28 "floating_ip_enabled": true, 29 "http_proxy": "http://10.164.177.169:8080", 30 "https_proxy": "http://10.164.177.169:8080", 31 "image_id": "Fedora-Atomic-27-20180212.2.x86_64", 32 "insecure_registry": null, 33 "keypair_id": "kp", 34 "labels": null, 35 "links": [ 36 { 37 "href": "http://10.63.176.154:9511/v1/clustertemplates/79c0f9e5-93b8-4719-8fab-063afc67bffe", 38 "rel": "self" 39 }, 40 { 41 "href": "http://10.63.176.154:9511/clustertemplates/79c0f9e5-93b8-4719-8fab-063afc67bffe", 42 "rel": "bookmark" 43 } 44 ], 45 "master_flavor_id": null, 46 "master_lb_enabled": true, 47 "name": "kubernetes-dev", 48 "network_driver": "flannel", 49 "no_proxy": "10.0.0.0/8,172.0.0.0/8,192.0.0.0/8,localhost", 50 "project_id": "76bd201dbc1641729904ab190d3390c6", 51 "public": false, 52 "registry_enabled": false, 53 "server_type": "vm", 54 "tls_disabled": false, 55 "updated_at": null, 56 "user_id": "c48d66144e9c4a54ae2b164b85cfefe3", 57 "uuid": "79c0f9e5-93b8-4719-8fab-063afc67bffe", 58 "volume_driver": "cinder", 59 "hidden": false 60 }` 61 62 const ClusterTemplateResponse_EmptyTime = ` 63 { 64 "apiserver_port": null, 65 "cluster_distro": "fedora-atomic", 66 "coe": "kubernetes", 67 "created_at": null, 68 "dns_nameserver": "8.8.8.8", 69 "docker_storage_driver": null, 70 "docker_volume_size": 5, 71 "external_network_id": "public", 72 "fixed_network": null, 73 "fixed_subnet": null, 74 "flavor_id": "m1.small", 75 "http_proxy": null, 76 "https_proxy": null, 77 "image_id": "fedora-atomic-latest", 78 "insecure_registry": null, 79 "keypair_id": "testkey", 80 "labels": {}, 81 "links": [ 82 { 83 "href": "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 84 "rel": "bookmark" 85 }, 86 { 87 "href": "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 88 "rel": "self" 89 } 90 ], 91 "master_flavor_id": null, 92 "master_lb_enabled": false, 93 "name": "kubernetes-dev", 94 "network_driver": "flannel", 95 "no_proxy": null, 96 "public": false, 97 "registry_enabled": false, 98 "server_type": "vm", 99 "tls_disabled": false, 100 "updated_at": null, 101 "uuid": "472807c2-f175-4946-9765-149701a5aba7", 102 "volume_driver": null, 103 "hidden": false 104 }` 105 106 const ClusterTemplateListResponse = ` 107 { 108 "clustertemplates": [ 109 { 110 "apiserver_port": 8081, 111 "cluster_distro": "fedora-atomic", 112 "coe": "kubernetes", 113 "created_at": "2018-06-27T16:52:21+00:00", 114 "dns_nameserver": "8.8.8.8", 115 "docker_storage_driver": "devicemapper", 116 "docker_volume_size": 3, 117 "external_network_id": "public", 118 "fixed_network": null, 119 "fixed_subnet": null, 120 "flavor_id": "m1.small", 121 "floating_ip_enabled": true, 122 "http_proxy": "http://10.164.177.169:8080", 123 "https_proxy": "http://10.164.177.169:8080", 124 "image_id": "Fedora-Atomic-27-20180212.2.x86_64", 125 "insecure_registry": null, 126 "keypair_id": "kp", 127 "labels": null, 128 "links": [ 129 { 130 "href": "http://10.63.176.154:9511/v1/clustertemplates/79c0f9e5-93b8-4719-8fab-063afc67bffe", 131 "rel": "self" 132 }, 133 { 134 "href": "http://10.63.176.154:9511/clustertemplates/79c0f9e5-93b8-4719-8fab-063afc67bffe", 135 "rel": "bookmark" 136 } 137 ], 138 "master_flavor_id": null, 139 "master_lb_enabled": true, 140 "name": "kubernetes-dev", 141 "network_driver": "flannel", 142 "no_proxy": "10.0.0.0/8,172.0.0.0/8,192.0.0.0/8,localhost", 143 "project_id": "76bd201dbc1641729904ab190d3390c6", 144 "public": false, 145 "registry_enabled": false, 146 "server_type": "vm", 147 "tls_disabled": false, 148 "updated_at": null, 149 "user_id": "c48d66144e9c4a54ae2b164b85cfefe3", 150 "uuid": "79c0f9e5-93b8-4719-8fab-063afc67bffe", 151 "volume_driver": "cinder", 152 "hidden": false 153 }, 154 { 155 "apiserver_port": null, 156 "cluster_distro": "fedora-atomic", 157 "coe": "kubernetes", 158 "created_at": null, 159 "dns_nameserver": "8.8.8.8", 160 "docker_storage_driver": null, 161 "docker_volume_size": 5, 162 "external_network_id": "public", 163 "fixed_network": null, 164 "fixed_subnet": null, 165 "flavor_id": "m1.small", 166 "http_proxy": null, 167 "https_proxy": null, 168 "image_id": "fedora-atomic-latest", 169 "insecure_registry": null, 170 "keypair_id": "testkey", 171 "labels": {}, 172 "links": [ 173 { 174 "href": "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 175 "rel": "bookmark" 176 }, 177 { 178 "href": "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 179 "rel": "self" 180 } 181 ], 182 "master_flavor_id": null, 183 "master_lb_enabled": false, 184 "name": "kubernetes-dev", 185 "network_driver": "flannel", 186 "no_proxy": null, 187 "public": false, 188 "registry_enabled": false, 189 "server_type": "vm", 190 "tls_disabled": false, 191 "updated_at": null, 192 "uuid": "472807c2-f175-4946-9765-149701a5aba7", 193 "volume_driver": null, 194 "hidden": false 195 } 196 ] 197 }` 198 199 var ExpectedClusterTemplate = clustertemplates.ClusterTemplate{ 200 APIServerPort: 8081, 201 COE: "kubernetes", 202 ClusterDistro: "fedora-atomic", 203 CreatedAt: time.Date(2018, 6, 27, 16, 52, 21, 0, time.UTC), 204 DNSNameServer: "8.8.8.8", 205 DockerStorageDriver: "devicemapper", 206 DockerVolumeSize: 3, 207 ExternalNetworkID: "public", 208 FixedNetwork: "", 209 FixedSubnet: "", 210 FlavorID: "m1.small", 211 FloatingIPEnabled: true, 212 HTTPProxy: "http://10.164.177.169:8080", 213 HTTPSProxy: "http://10.164.177.169:8080", 214 ImageID: "Fedora-Atomic-27-20180212.2.x86_64", 215 InsecureRegistry: "", 216 KeyPairID: "kp", 217 Labels: map[string]string(nil), 218 Links: []gophercloud.Link{ 219 {Href: "http://10.63.176.154:9511/v1/clustertemplates/79c0f9e5-93b8-4719-8fab-063afc67bffe", Rel: "self"}, 220 {Href: "http://10.63.176.154:9511/clustertemplates/79c0f9e5-93b8-4719-8fab-063afc67bffe", Rel: "bookmark"}, 221 }, 222 MasterFlavorID: "", 223 MasterLBEnabled: true, 224 Name: "kubernetes-dev", 225 NetworkDriver: "flannel", 226 NoProxy: "10.0.0.0/8,172.0.0.0/8,192.0.0.0/8,localhost", 227 ProjectID: "76bd201dbc1641729904ab190d3390c6", 228 Public: false, 229 RegistryEnabled: false, 230 ServerType: "vm", 231 TLSDisabled: false, 232 UUID: "79c0f9e5-93b8-4719-8fab-063afc67bffe", 233 UpdatedAt: time.Time{}, 234 UserID: "c48d66144e9c4a54ae2b164b85cfefe3", 235 VolumeDriver: "cinder", 236 Hidden: false, 237 } 238 239 var ExpectedClusterTemplate_EmptyTime = clustertemplates.ClusterTemplate{ 240 COE: "kubernetes", 241 ClusterDistro: "fedora-atomic", 242 CreatedAt: time.Time{}, 243 DNSNameServer: "8.8.8.8", 244 DockerStorageDriver: "", 245 DockerVolumeSize: 5, 246 ExternalNetworkID: "public", 247 FixedNetwork: "", 248 FixedSubnet: "", 249 FlavorID: "m1.small", 250 HTTPProxy: "", 251 HTTPSProxy: "", 252 ImageID: "fedora-atomic-latest", 253 InsecureRegistry: "", 254 KeyPairID: "testkey", 255 Labels: map[string]string{}, 256 Links: []gophercloud.Link{ 257 {Href: "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", Rel: "bookmark"}, 258 {Href: "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", Rel: "self"}, 259 }, 260 MasterFlavorID: "", 261 MasterLBEnabled: false, 262 Name: "kubernetes-dev", 263 NetworkDriver: "flannel", 264 NoProxy: "", 265 Public: false, 266 RegistryEnabled: false, 267 ServerType: "vm", 268 TLSDisabled: false, 269 UUID: "472807c2-f175-4946-9765-149701a5aba7", 270 UpdatedAt: time.Time{}, 271 VolumeDriver: "", 272 Hidden: false, 273 } 274 275 var ExpectedClusterTemplates = []clustertemplates.ClusterTemplate{ExpectedClusterTemplate, ExpectedClusterTemplate_EmptyTime} 276 277 func HandleCreateClusterTemplateSuccessfully(t *testing.T) { 278 th.Mux.HandleFunc("/v1/clustertemplates", func(w http.ResponseWriter, r *http.Request) { 279 th.TestMethod(t, r, "POST") 280 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 281 282 w.Header().Add("Content-Type", "application/json") 283 w.Header().Add("OpenStack-API-Minimum-Version", "container-infra 1.1") 284 w.Header().Add("OpenStack-API-Maximum-Version", "container-infra 1.6") 285 w.Header().Add("OpenStack-API-Version", "container-infra 1.1") 286 w.Header().Add("X-OpenStack-Request-Id", "req-781e9bdc-4163-46eb-91c9-786c53188bbb") 287 w.WriteHeader(http.StatusCreated) 288 289 fmt.Fprint(w, ClusterTemplateResponse) 290 }) 291 } 292 293 func HandleDeleteClusterSuccessfully(t *testing.T) { 294 th.Mux.HandleFunc("/v1/clustertemplates/6dc6d336e3fc4c0a951b5698cd1236ee", func(w http.ResponseWriter, r *http.Request) { 295 th.TestMethod(t, r, "DELETE") 296 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 297 298 w.Header().Add("Content-Type", "application/json") 299 w.Header().Add("OpenStack-API-Minimum-Version", "container-infra 1.1") 300 w.Header().Add("OpenStack-API-Maximum-Version", "container-infra 1.6") 301 w.Header().Add("OpenStack-API-Version", "container-infra 1.1") 302 w.Header().Add("X-OpenStack-Request-Id", "req-781e9bdc-4163-46eb-91c9-786c53188bbb") 303 w.WriteHeader(http.StatusNoContent) 304 }) 305 } 306 307 func HandleListClusterTemplateSuccessfully(t *testing.T) { 308 th.Mux.HandleFunc("/v1/clustertemplates", func(w http.ResponseWriter, r *http.Request) { 309 th.TestMethod(t, r, "GET") 310 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 311 312 w.Header().Add("Content-Type", "application/json") 313 w.WriteHeader(http.StatusOK) 314 315 fmt.Fprint(w, ClusterTemplateListResponse) 316 }) 317 } 318 319 func HandleGetClusterTemplateSuccessfully(t *testing.T) { 320 th.Mux.HandleFunc("/v1/clustertemplates/7d85f602-a948-4a30-afd4-e84f47471c15", func(w http.ResponseWriter, r *http.Request) { 321 th.TestMethod(t, r, "GET") 322 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 323 324 w.Header().Add("Content-Type", "application/json") 325 w.WriteHeader(http.StatusOK) 326 327 fmt.Fprint(w, ClusterTemplateResponse) 328 }) 329 } 330 331 func HandleGetClusterTemplateEmptyTimeSuccessfully(t *testing.T) { 332 th.Mux.HandleFunc("/v1/clustertemplates/7d85f602-a948-4a30-afd4-e84f47471c15", func(w http.ResponseWriter, r *http.Request) { 333 th.TestMethod(t, r, "GET") 334 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 335 336 w.Header().Add("Content-Type", "application/json") 337 w.WriteHeader(http.StatusOK) 338 339 fmt.Fprint(w, ClusterTemplateResponse_EmptyTime) 340 }) 341 } 342 343 const UpdateResponse = ` 344 { 345 "apiserver_port": null, 346 "cluster_distro": "fedora-atomic", 347 "coe": "kubernetes", 348 "created_at": "2016-08-10T13:47:01+00:00", 349 "dns_nameserver": "8.8.8.8", 350 "docker_storage_driver": null, 351 "docker_volume_size": 5, 352 "external_network_id": "public", 353 "fixed_network": null, 354 "fixed_subnet": null, 355 "flavor_id": "m1.small", 356 "http_proxy": null, 357 "https_proxy": null, 358 "image_id": "fedora-atomic-latest", 359 "insecure_registry": null, 360 "keypair_id": "testkey", 361 "labels": {}, 362 "links": [ 363 { 364 "href": "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 365 "rel": "self" 366 }, 367 { 368 "href": "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 369 "rel": "bookmark" 370 } 371 ], 372 "master_flavor_id": null, 373 "master_lb_enabled": false, 374 "name": "kubernetes-dev", 375 "network_driver": "flannel", 376 "no_proxy": null, 377 "public": false, 378 "registry_enabled": false, 379 "server_type": "vm", 380 "tls_disabled": false, 381 "updated_at": null, 382 "uuid": "472807c2-f175-4946-9765-149701a5aba7", 383 "volume_driver": null, 384 "hidden": false 385 }` 386 387 const UpdateResponse_EmptyTime = ` 388 { 389 "apiserver_port": null, 390 "cluster_distro": "fedora-atomic", 391 "coe": "kubernetes", 392 "created_at": null, 393 "dns_nameserver": "8.8.8.8", 394 "docker_storage_driver": null, 395 "docker_volume_size": 5, 396 "external_network_id": "public", 397 "fixed_network": null, 398 "fixed_subnet": null, 399 "flavor_id": "m1.small", 400 "http_proxy": null, 401 "https_proxy": null, 402 "image_id": "fedora-atomic-latest", 403 "insecure_registry": null, 404 "keypair_id": "testkey", 405 "labels": {}, 406 "links": [ 407 { 408 "href": "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 409 "rel": "self" 410 }, 411 { 412 "href": "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", 413 "rel": "bookmark" 414 } 415 ], 416 "master_flavor_id": null, 417 "master_lb_enabled": false, 418 "name": "kubernetes-dev", 419 "network_driver": "flannel", 420 "no_proxy": null, 421 "public": false, 422 "registry_enabled": false, 423 "server_type": "vm", 424 "tls_disabled": false, 425 "updated_at": null, 426 "uuid": "472807c2-f175-4946-9765-149701a5aba7", 427 "volume_driver": null, 428 "hidden": false 429 }` 430 431 const UpdateResponse_InvalidUpdate = ` 432 { 433 "errors": [{\"status\": 400, \"code\": \"client\", \"links\": [], \"title\": \"'add' and 'replace' operations needs value\", \"detail\": \"'add' and 'replace' operations needs value\", \"request_id\": \"\"}] 434 }` 435 436 var ExpectedUpdateClusterTemplate = clustertemplates.ClusterTemplate{ 437 COE: "kubernetes", 438 ClusterDistro: "fedora-atomic", 439 CreatedAt: time.Date(2016, 8, 10, 13, 47, 01, 0, time.UTC), 440 DNSNameServer: "8.8.8.8", 441 DockerStorageDriver: "", 442 DockerVolumeSize: 5, 443 ExternalNetworkID: "public", 444 FixedNetwork: "", 445 FixedSubnet: "", 446 FlavorID: "m1.small", 447 HTTPProxy: "", 448 HTTPSProxy: "", 449 ImageID: "fedora-atomic-latest", 450 InsecureRegistry: "", 451 KeyPairID: "testkey", 452 Labels: map[string]string{}, 453 Links: []gophercloud.Link{ 454 {Href: "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", Rel: "self"}, 455 {Href: "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", Rel: "bookmark"}, 456 }, 457 MasterFlavorID: "", 458 MasterLBEnabled: false, 459 Name: "kubernetes-dev", 460 NetworkDriver: "flannel", 461 NoProxy: "", 462 Public: false, 463 RegistryEnabled: false, 464 ServerType: "vm", 465 TLSDisabled: false, 466 UUID: "472807c2-f175-4946-9765-149701a5aba7", 467 UpdatedAt: time.Time{}, 468 VolumeDriver: "", 469 Hidden: false, 470 } 471 472 var ExpectedUpdateClusterTemplate_EmptyTime = clustertemplates.ClusterTemplate{ 473 COE: "kubernetes", 474 ClusterDistro: "fedora-atomic", 475 CreatedAt: time.Time{}, 476 DNSNameServer: "8.8.8.8", 477 DockerStorageDriver: "", 478 DockerVolumeSize: 5, 479 ExternalNetworkID: "public", 480 FixedNetwork: "", 481 FixedSubnet: "", 482 FlavorID: "m1.small", 483 HTTPProxy: "", 484 HTTPSProxy: "", 485 ImageID: "fedora-atomic-latest", 486 InsecureRegistry: "", 487 KeyPairID: "testkey", 488 Labels: map[string]string{}, 489 Links: []gophercloud.Link{ 490 {Href: "http://65.61.151.130:9511/v1/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", Rel: "self"}, 491 {Href: "http://65.61.151.130:9511/clustertemplates/472807c2-f175-4946-9765-149701a5aba7", Rel: "bookmark"}, 492 }, 493 MasterFlavorID: "", 494 MasterLBEnabled: false, 495 Name: "kubernetes-dev", 496 NetworkDriver: "flannel", 497 NoProxy: "", 498 Public: false, 499 RegistryEnabled: false, 500 ServerType: "vm", 501 TLSDisabled: false, 502 UUID: "472807c2-f175-4946-9765-149701a5aba7", 503 UpdatedAt: time.Time{}, 504 VolumeDriver: "", 505 Hidden: false, 506 } 507 508 func HandleUpdateClusterTemplateSuccessfully(t *testing.T) { 509 th.Mux.HandleFunc("/v1/clustertemplates/7d85f602-a948-4a30-afd4-e84f47471c15", func(w http.ResponseWriter, r *http.Request) { 510 th.TestMethod(t, r, "PATCH") 511 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 512 513 w.Header().Add("Content-Type", "application/json") 514 w.WriteHeader(http.StatusOK) 515 516 fmt.Fprint(w, UpdateResponse) 517 }) 518 } 519 520 func HandleUpdateClusterTemplateEmptyTimeSuccessfully(t *testing.T) { 521 th.Mux.HandleFunc("/v1/clustertemplates/7d85f602-a948-4a30-afd4-e84f47471c15", func(w http.ResponseWriter, r *http.Request) { 522 th.TestMethod(t, r, "PATCH") 523 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 524 525 w.Header().Add("Content-Type", "application/json") 526 w.WriteHeader(http.StatusOK) 527 528 fmt.Fprint(w, UpdateResponse_EmptyTime) 529 }) 530 } 531 532 func HandleUpdateClusterTemplateInvalidUpdate(t *testing.T) { 533 th.Mux.HandleFunc("/v1/clustertemplates/7d85f602-a948-4a30-afd4-e84f47471c15", func(w http.ResponseWriter, r *http.Request) { 534 th.TestMethod(t, r, "PATCH") 535 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 536 537 w.Header().Add("Content-Type", "application/json") 538 w.WriteHeader(http.StatusBadRequest) 539 540 fmt.Fprint(w, UpdateResponse_EmptyTime) 541 }) 542 }