github.com/fastly/go-fastly/v5@v5.3.0/fastly/cloudfiles_test.go (about) 1 package fastly 2 3 import ( 4 "testing" 5 ) 6 7 func TestClient_Cloudfiles(t *testing.T) { 8 t.Parallel() 9 10 var err error 11 var tv *Version 12 record(t, "cloudfiles/version", func(c *Client) { 13 tv = testVersion(t, c) 14 }) 15 16 // Create 17 var cloudfilesCreateResp1, cloudfilesCreateResp2, cloudfilesCreateResp3 *Cloudfiles 18 record(t, "cloudfiles/create", func(c *Client) { 19 cloudfilesCreateResp1, err = c.CreateCloudfiles(&CreateCloudfilesInput{ 20 ServiceID: testServiceID, 21 ServiceVersion: tv.Number, 22 Name: "test-cloudfiles", 23 User: "user", 24 AccessKey: "secret-key", 25 BucketName: "bucket-name", 26 Path: "/path", 27 Region: "DFW", 28 Period: 12, 29 Format: "format", 30 FormatVersion: 1, 31 TimestampFormat: "%Y", 32 MessageType: "classic", 33 Placement: "waf_debug", 34 PublicKey: pgpPublicKey(), 35 CompressionCodec: "snappy", 36 }) 37 }) 38 if err != nil { 39 t.Fatal(err) 40 } 41 42 record(t, "cloudfiles/create2", func(c *Client) { 43 cloudfilesCreateResp2, err = c.CreateCloudfiles(&CreateCloudfilesInput{ 44 ServiceID: testServiceID, 45 ServiceVersion: tv.Number, 46 Name: "test-cloudfiles-2", 47 User: "user", 48 AccessKey: "secret-key", 49 BucketName: "bucket-name", 50 Path: "/path", 51 Region: "DFW", 52 Period: 12, 53 GzipLevel: 8, 54 Format: "format", 55 FormatVersion: 1, 56 TimestampFormat: "%Y", 57 MessageType: "classic", 58 Placement: "waf_debug", 59 PublicKey: pgpPublicKey(), 60 }) 61 }) 62 if err != nil { 63 t.Fatal(err) 64 } 65 66 record(t, "cloudfiles/create3", func(c *Client) { 67 cloudfilesCreateResp3, err = c.CreateCloudfiles(&CreateCloudfilesInput{ 68 ServiceID: testServiceID, 69 ServiceVersion: tv.Number, 70 Name: "test-cloudfiles-3", 71 User: "user", 72 AccessKey: "secret-key", 73 BucketName: "bucket-name", 74 Path: "/path", 75 Region: "DFW", 76 Period: 12, 77 Format: "format", 78 FormatVersion: 1, 79 TimestampFormat: "%Y", 80 MessageType: "classic", 81 Placement: "waf_debug", 82 PublicKey: pgpPublicKey(), 83 CompressionCodec: "snappy", 84 }) 85 }) 86 if err != nil { 87 t.Fatal(err) 88 } 89 90 // This case is expected to fail because both CompressionCodec and 91 // GzipLevel are present. 92 record(t, "cloudfiles/create4", func(c *Client) { 93 _, err = c.CreateCloudfiles(&CreateCloudfilesInput{ 94 ServiceID: testServiceID, 95 ServiceVersion: tv.Number, 96 Name: "test-cloudfiles-4", 97 User: "user", 98 AccessKey: "secret-key", 99 BucketName: "bucket-name", 100 Path: "/path", 101 Region: "DFW", 102 Period: 12, 103 GzipLevel: 8, 104 Format: "format", 105 FormatVersion: 1, 106 TimestampFormat: "%Y", 107 MessageType: "classic", 108 Placement: "waf_debug", 109 PublicKey: pgpPublicKey(), 110 CompressionCodec: "snappy", 111 }) 112 }) 113 if err == nil { 114 t.Fatal(err) 115 } 116 117 // Ensure deleted 118 defer func() { 119 record(t, "cloudfiles/cleanup", func(c *Client) { 120 c.DeleteCloudfiles(&DeleteCloudfilesInput{ 121 ServiceID: testServiceID, 122 ServiceVersion: tv.Number, 123 Name: "test-cloudfiles", 124 }) 125 126 c.DeleteCloudfiles(&DeleteCloudfilesInput{ 127 ServiceID: testServiceID, 128 ServiceVersion: tv.Number, 129 Name: "test-cloudfiles-2", 130 }) 131 132 c.DeleteCloudfiles(&DeleteCloudfilesInput{ 133 ServiceID: testServiceID, 134 ServiceVersion: tv.Number, 135 Name: "test-cloudfiles-3", 136 }) 137 138 c.DeleteCloudfiles(&DeleteCloudfilesInput{ 139 ServiceID: testServiceID, 140 ServiceVersion: tv.Number, 141 Name: "new-test-cloudfiles", 142 }) 143 }) 144 }() 145 146 if cloudfilesCreateResp1.Name != "test-cloudfiles" { 147 t.Errorf("bad name: %q", cloudfilesCreateResp1.Name) 148 } 149 if cloudfilesCreateResp1.User != "user" { 150 t.Errorf("bad user: %q", cloudfilesCreateResp1.User) 151 } 152 if cloudfilesCreateResp1.BucketName != "bucket-name" { 153 t.Errorf("bad bucket_name: %q", cloudfilesCreateResp1.BucketName) 154 } 155 if cloudfilesCreateResp1.AccessKey != "secret-key" { 156 t.Errorf("bad access_key: %q", cloudfilesCreateResp1.AccessKey) 157 } 158 if cloudfilesCreateResp1.Path != "/path" { 159 t.Errorf("bad path: %q", cloudfilesCreateResp1.Path) 160 } 161 if cloudfilesCreateResp1.Region != "DFW" { 162 t.Errorf("bad region: %q", cloudfilesCreateResp1.Region) 163 } 164 if cloudfilesCreateResp1.Period != 12 { 165 t.Errorf("bad period: %q", cloudfilesCreateResp1.Period) 166 } 167 if cloudfilesCreateResp1.GzipLevel != 0 { 168 t.Errorf("bad gzip_level: %q", cloudfilesCreateResp1.GzipLevel) 169 } 170 if cloudfilesCreateResp1.Format != "format" { 171 t.Errorf("bad format: %q", cloudfilesCreateResp1.Format) 172 } 173 if cloudfilesCreateResp1.FormatVersion != 1 { 174 t.Errorf("bad format_version: %q", cloudfilesCreateResp1.FormatVersion) 175 } 176 if cloudfilesCreateResp1.TimestampFormat != "%Y" { 177 t.Errorf("bad timestamp_format: %q", cloudfilesCreateResp1.TimestampFormat) 178 } 179 if cloudfilesCreateResp1.MessageType != "classic" { 180 t.Errorf("bad message_type: %q", cloudfilesCreateResp1.MessageType) 181 } 182 if cloudfilesCreateResp1.Placement != "waf_debug" { 183 t.Errorf("bad placement: %q", cloudfilesCreateResp1.Placement) 184 } 185 if cloudfilesCreateResp1.PublicKey != pgpPublicKey() { 186 t.Errorf("bad public_key: %q", cloudfilesCreateResp1.PublicKey) 187 } 188 189 if cloudfilesCreateResp2.CompressionCodec != "" { 190 t.Errorf("bad compression_codec: %q", cloudfilesCreateResp2.CompressionCodec) 191 } 192 if cloudfilesCreateResp2.GzipLevel != 8 { 193 t.Errorf("bad gzip_level: %q", cloudfilesCreateResp2.GzipLevel) 194 } 195 196 if cloudfilesCreateResp3.CompressionCodec != "snappy" { 197 t.Errorf("bad compression_codec: %q", cloudfilesCreateResp3.CompressionCodec) 198 } 199 if cloudfilesCreateResp3.GzipLevel != 0 { 200 t.Errorf("bad gzip_level: %q", cloudfilesCreateResp3.GzipLevel) 201 } 202 203 // List 204 var lc []*Cloudfiles 205 record(t, "cloudfiles/list", func(c *Client) { 206 lc, err = c.ListCloudfiles(&ListCloudfilesInput{ 207 ServiceID: testServiceID, 208 ServiceVersion: tv.Number, 209 }) 210 }) 211 if err != nil { 212 t.Fatal(err) 213 } 214 if len(lc) < 1 { 215 t.Errorf("bad cloudfiles: %v", lc) 216 } 217 218 // Get 219 var cloudfilesGetResp *Cloudfiles 220 record(t, "cloudfiles/get", func(c *Client) { 221 cloudfilesGetResp, err = c.GetCloudfiles(&GetCloudfilesInput{ 222 ServiceID: testServiceID, 223 ServiceVersion: tv.Number, 224 Name: "test-cloudfiles", 225 }) 226 }) 227 if err != nil { 228 t.Fatal(err) 229 } 230 if cloudfilesCreateResp1.Name != cloudfilesGetResp.Name { 231 t.Errorf("bad name: %q", cloudfilesCreateResp1.Name) 232 } 233 if cloudfilesCreateResp1.User != cloudfilesGetResp.User { 234 t.Errorf("bad user: %q", cloudfilesCreateResp1.User) 235 } 236 if cloudfilesCreateResp1.BucketName != cloudfilesGetResp.BucketName { 237 t.Errorf("bad bucket_name: %q", cloudfilesCreateResp1.BucketName) 238 } 239 if cloudfilesCreateResp1.AccessKey != cloudfilesGetResp.AccessKey { 240 t.Errorf("bad access_key: %q", cloudfilesCreateResp1.AccessKey) 241 } 242 if cloudfilesCreateResp1.Path != cloudfilesGetResp.Path { 243 t.Errorf("bad path: %q", cloudfilesCreateResp1.Path) 244 } 245 if cloudfilesCreateResp1.Region != cloudfilesGetResp.Region { 246 t.Errorf("bad region: %q", cloudfilesCreateResp1.Region) 247 } 248 if cloudfilesCreateResp1.Period != cloudfilesGetResp.Period { 249 t.Errorf("bad period: %q", cloudfilesCreateResp1.Period) 250 } 251 if cloudfilesCreateResp1.GzipLevel != cloudfilesGetResp.GzipLevel { 252 t.Errorf("bad gzip_level: %q", cloudfilesCreateResp1.GzipLevel) 253 } 254 if cloudfilesCreateResp1.Format != cloudfilesGetResp.Format { 255 t.Errorf("bad format: %q", cloudfilesCreateResp1.Format) 256 } 257 if cloudfilesCreateResp1.FormatVersion != cloudfilesGetResp.FormatVersion { 258 t.Errorf("bad format_version: %q", cloudfilesCreateResp1.FormatVersion) 259 } 260 if cloudfilesCreateResp1.TimestampFormat != cloudfilesGetResp.TimestampFormat { 261 t.Errorf("bad timestamp_format: %q", cloudfilesCreateResp1.TimestampFormat) 262 } 263 if cloudfilesCreateResp1.MessageType != cloudfilesGetResp.MessageType { 264 t.Errorf("bad message_type: %q", cloudfilesCreateResp1.MessageType) 265 } 266 if cloudfilesCreateResp1.Placement != cloudfilesGetResp.Placement { 267 t.Errorf("bad placement: %q", cloudfilesCreateResp1.Placement) 268 } 269 if cloudfilesCreateResp1.PublicKey != cloudfilesGetResp.PublicKey { 270 t.Errorf("bad public_key: %q", cloudfilesCreateResp1.PublicKey) 271 } 272 if cloudfilesCreateResp1.CompressionCodec != cloudfilesGetResp.CompressionCodec { 273 t.Errorf("bad compression_codec: %q", cloudfilesCreateResp1.CompressionCodec) 274 } 275 276 // Update 277 var cloudfilesUpdateResp1, cloudfilesUpdateResp2, cloudfilesUpdateResp3 *Cloudfiles 278 record(t, "cloudfiles/update", func(c *Client) { 279 cloudfilesUpdateResp1, err = c.UpdateCloudfiles(&UpdateCloudfilesInput{ 280 ServiceID: testServiceID, 281 ServiceVersion: tv.Number, 282 Name: "test-cloudfiles", 283 NewName: String("new-test-cloudfiles"), 284 User: String("new-user"), 285 Period: Uint(0), 286 FormatVersion: Uint(2), 287 CompressionCodec: String("zstd"), 288 }) 289 }) 290 if err != nil { 291 t.Fatal(err) 292 } 293 294 record(t, "cloudfiles/update2", func(c *Client) { 295 cloudfilesUpdateResp2, err = c.UpdateCloudfiles(&UpdateCloudfilesInput{ 296 ServiceID: testServiceID, 297 ServiceVersion: tv.Number, 298 Name: "test-cloudfiles-2", 299 CompressionCodec: String("zstd"), 300 }) 301 }) 302 if err != nil { 303 t.Fatal(err) 304 } 305 306 record(t, "cloudfiles/update3", func(c *Client) { 307 cloudfilesUpdateResp3, err = c.UpdateCloudfiles(&UpdateCloudfilesInput{ 308 ServiceID: testServiceID, 309 ServiceVersion: tv.Number, 310 Name: "test-cloudfiles-3", 311 GzipLevel: Uint(9), 312 }) 313 }) 314 if err != nil { 315 t.Fatal(err) 316 } 317 318 if cloudfilesUpdateResp1.Name != "new-test-cloudfiles" { 319 t.Errorf("bad name: %q", cloudfilesUpdateResp1.Name) 320 } 321 if cloudfilesUpdateResp1.User != "new-user" { 322 t.Errorf("bad user: %q", cloudfilesUpdateResp1.User) 323 } 324 if cloudfilesUpdateResp1.GzipLevel != 0 { 325 t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp1.GzipLevel) 326 } 327 if cloudfilesUpdateResp1.Period != 0 { 328 t.Errorf("bad period: %q", cloudfilesUpdateResp1.Period) 329 } 330 if cloudfilesUpdateResp1.FormatVersion != 2 { 331 t.Errorf("bad format_version: %q", cloudfilesUpdateResp1.FormatVersion) 332 } 333 if cloudfilesUpdateResp1.CompressionCodec != "zstd" { 334 t.Errorf("bad compression_codec: %q", cloudfilesUpdateResp1.CompressionCodec) 335 } 336 if cloudfilesUpdateResp1.GzipLevel != 0 { 337 t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp1.GzipLevel) 338 } 339 340 if cloudfilesUpdateResp2.CompressionCodec != "zstd" { 341 t.Errorf("bad compression_codec: %q", cloudfilesUpdateResp2.CompressionCodec) 342 } 343 if cloudfilesUpdateResp2.GzipLevel != 0 { 344 t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp2.GzipLevel) 345 } 346 347 if cloudfilesUpdateResp3.CompressionCodec != "" { 348 t.Errorf("bad compression_codec: %q", cloudfilesUpdateResp3.CompressionCodec) 349 } 350 if cloudfilesUpdateResp3.GzipLevel != 9 { 351 t.Errorf("bad gzip_level: %q", cloudfilesUpdateResp3.GzipLevel) 352 } 353 354 // Delete 355 record(t, "cloudfiles/delete", func(c *Client) { 356 err = c.DeleteCloudfiles(&DeleteCloudfilesInput{ 357 ServiceID: testServiceID, 358 ServiceVersion: tv.Number, 359 Name: "new-test-cloudfiles", 360 }) 361 }) 362 if err != nil { 363 t.Fatal(err) 364 } 365 } 366 367 func TestClient_ListCloudfiles_validation(t *testing.T) { 368 var err error 369 _, err = testClient.ListCloudfiles(&ListCloudfilesInput{ 370 ServiceID: "", 371 }) 372 if err != ErrMissingServiceID { 373 t.Errorf("bad error: %s", err) 374 } 375 376 _, err = testClient.ListCloudfiles(&ListCloudfilesInput{ 377 ServiceID: "foo", 378 ServiceVersion: 0, 379 }) 380 if err != ErrMissingServiceVersion { 381 t.Errorf("bad error: %s", err) 382 } 383 } 384 385 func TestClient_CreateCloudfiles_validation(t *testing.T) { 386 var err error 387 _, err = testClient.CreateCloudfiles(&CreateCloudfilesInput{ 388 ServiceID: "", 389 }) 390 if err != ErrMissingServiceID { 391 t.Errorf("bad error: %s", err) 392 } 393 394 _, err = testClient.CreateCloudfiles(&CreateCloudfilesInput{ 395 ServiceID: "foo", 396 ServiceVersion: 0, 397 }) 398 if err != ErrMissingServiceVersion { 399 t.Errorf("bad error: %s", err) 400 } 401 } 402 403 func TestClient_GetCloudfiles_validation(t *testing.T) { 404 var err error 405 _, err = testClient.GetCloudfiles(&GetCloudfilesInput{ 406 ServiceID: "", 407 }) 408 if err != ErrMissingServiceID { 409 t.Errorf("bad error: %s", err) 410 } 411 412 _, err = testClient.GetCloudfiles(&GetCloudfilesInput{ 413 ServiceID: "foo", 414 ServiceVersion: 0, 415 }) 416 if err != ErrMissingServiceVersion { 417 t.Errorf("bad error: %s", err) 418 } 419 420 _, err = testClient.GetCloudfiles(&GetCloudfilesInput{ 421 ServiceID: "foo", 422 ServiceVersion: 1, 423 Name: "", 424 }) 425 if err != ErrMissingName { 426 t.Errorf("bad error: %s", err) 427 } 428 } 429 430 func TestClient_UpdateCloudfiles_validation(t *testing.T) { 431 var err error 432 _, err = testClient.UpdateCloudfiles(&UpdateCloudfilesInput{ 433 ServiceID: "", 434 }) 435 if err != ErrMissingServiceID { 436 t.Errorf("bad error: %s", err) 437 } 438 439 _, err = testClient.UpdateCloudfiles(&UpdateCloudfilesInput{ 440 ServiceID: "foo", 441 ServiceVersion: 0, 442 }) 443 if err != ErrMissingServiceVersion { 444 t.Errorf("bad error: %s", err) 445 } 446 447 _, err = testClient.UpdateCloudfiles(&UpdateCloudfilesInput{ 448 ServiceID: "foo", 449 ServiceVersion: 1, 450 Name: "", 451 }) 452 if err != ErrMissingName { 453 t.Errorf("bad error: %s", err) 454 } 455 } 456 457 func TestClient_DeleteCloudfiles_validation(t *testing.T) { 458 var err error 459 err = testClient.DeleteCloudfiles(&DeleteCloudfilesInput{ 460 ServiceID: "", 461 }) 462 if err != ErrMissingServiceID { 463 t.Errorf("bad error: %s", err) 464 } 465 466 err = testClient.DeleteCloudfiles(&DeleteCloudfilesInput{ 467 ServiceID: "foo", 468 ServiceVersion: 0, 469 }) 470 if err != ErrMissingServiceVersion { 471 t.Errorf("bad error: %s", err) 472 } 473 474 err = testClient.DeleteCloudfiles(&DeleteCloudfilesInput{ 475 ServiceID: "foo", 476 ServiceVersion: 1, 477 Name: "", 478 }) 479 if err != ErrMissingName { 480 t.Errorf("bad error: %s", err) 481 } 482 }