github.com/fastly/go-fastly@v1.18.0/fastly/blobstorage_test.go (about) 1 package fastly 2 3 import "testing" 4 5 func TestClient_BlobStorages(t *testing.T) { 6 t.Parallel() 7 8 var err error 9 var tv *Version 10 record(t, "blobstorages/version", func(c *Client) { 11 tv = testVersion(t, c) 12 }) 13 14 // Create 15 var bs *BlobStorage 16 record(t, "blobstorages/create", func(c *Client) { 17 bs, err = c.CreateBlobStorage(&CreateBlobStorageInput{ 18 Service: testServiceID, 19 Version: tv.Number, 20 Name: "test-blobstorage", 21 Path: "/logs", 22 AccountName: "test", 23 Container: "fastly", 24 SASToken: "sv=2015-04-05&ss=b&srt=sco&sp=rw&se=2019-07-21T18%3A00%3A00Z&sig=3ABdLOJZosCp0o491T%2BqZGKIhafF1nlM3MzESDDD3Gg%3D", 25 Period: 12, 26 TimestampFormat: "%Y-%m-%dT%H:%M:%S.000", 27 GzipLevel: 9, 28 PublicKey: "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQENBFyUD8sBCACyFnB39AuuTygseek+eA4fo0cgwva6/FSjnWq7riouQee8GgQ/\nibXTRyv4iVlwI12GswvMTIy7zNvs1R54i0qvsLr+IZ4GVGJqs6ZJnvQcqe3xPoR4\n8AnBfw90o32r/LuHf6QCJXi+AEu35koNlNAvLJ2B+KACaNB7N0EeWmqpV/1V2k9p\nlDYk+th7LcCuaFNGqKS/PrMnnMqR6VDLCjHhNx4KR79b0Twm/2qp6an3hyNRu8Gn\ndwxpf1/BUu3JWf+LqkN4Y3mbOmSUL3MaJNvyQguUzTfS0P0uGuBDHrJCVkMZCzDB\n89ag55jCPHyGeHBTd02gHMWzsg3WMBWvCsrzABEBAAG0JXRlcnJhZm9ybSAodGVz\ndCkgPHRlc3RAdGVycmFmb3JtLmNvbT6JAU4EEwEIADgWIQSHYyc6Kj9l6HzQsau6\nvFFc9jxV/wUCXJQPywIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRC6vFFc\n9jxV/815CAClb32OxV7wG01yF97TzlyTl8TnvjMtoG29Mw4nSyg+mjM3b8N7iXm9\nOLX59fbDAWtBSldSZE22RXd3CvlFOG/EnKBXSjBtEqfyxYSnyOPkMPBYWGL/ApkX\nSvPYJ4LKdvipYToKFh3y9kk2gk1DcDBDyaaHvR+3rv1u3aoy7/s2EltAfDS3ZQIq\n7/cWTLJml/lleeB/Y6rPj8xqeCYhE5ahw9gsV/Mdqatl24V9Tks30iijx0Hhw+Gx\nkATUikMGr2GDVqoIRga5kXI7CzYff4rkc0Twn47fMHHHe/KY9M2yVnMHUXmAZwbG\nM1cMI/NH1DjevCKdGBLcRJlhuLPKF/anuQENBFyUD8sBCADIpd7r7GuPd6n/Ikxe\nu6h7umV6IIPoAm88xCYpTbSZiaK30Svh6Ywra9jfE2KlU9o6Y/art8ip0VJ3m07L\n4RSfSpnzqgSwdjSq5hNour2Fo/BzYhK7yaz2AzVSbe33R0+RYhb4b/6N+bKbjwGF\nftCsqVFMH+PyvYkLbvxyQrHlA9woAZaNThI1ztO5rGSnGUR8xt84eup28WIFKg0K\nUEGUcTzz+8QGAwAra+0ewPXo/AkO+8BvZjDidP417u6gpBHOJ9qYIcO9FxHeqFyu\nYrjlrxowEgXn5wO8xuNz6Vu1vhHGDHGDsRbZF8pv1d5O+0F1G7ttZ2GRRgVBZPwi\nkiyRABEBAAGJATYEGAEIACAWIQSHYyc6Kj9l6HzQsau6vFFc9jxV/wUCXJQPywIb\nDAAKCRC6vFFc9jxV/9YOCACe8qmOSnKQpQfW+PqYOqo3dt7JyweTs3FkD6NT8Zml\ndYy/vkstbTjPpX6aTvUZjkb46BVi7AOneVHpD5GBqvRsZ9iVgDYHaehmLCdKiG5L\n3Tp90NN+QY5WDbsGmsyk6+6ZMYejb4qYfweQeduOj27aavCJdLkCYMoRKfcFYI8c\nFaNmEfKKy/r1PO20NXEG6t9t05K/frHy6ZG8bCNYdpagfFVot47r9JaQqWlTNtIR\n5+zkkSq/eG9BEtRij3a6cTdQbktdBzx2KBeI0PYc1vlZR0LpuFKZqY9vlE6vTGLR\nwMfrTEOvx0NxUM3rpaCgEmuWbB1G1Hu371oyr4srrr+N\n=28dr\n-----END PGP PUBLIC KEY BLOCK-----\n", 29 Format: "%h %l %u %{now}V %{req.method}V %{req.url}V %>s %{resp.http.Content-Length}V", 30 FormatVersion: 2, 31 MessageType: "classic", 32 Placement: "waf_debug", 33 }) 34 }) 35 if err != nil { 36 t.Fatal(err) 37 } 38 39 // Ensure deleted 40 defer func() { 41 record(t, "blobstorages/cleanup", func(c *Client) { 42 c.DeleteBlobStorage(&DeleteBlobStorageInput{ 43 Service: testServiceID, 44 Version: tv.Number, 45 Name: "test-blobstorage", 46 }) 47 48 c.DeleteBlobStorage(&DeleteBlobStorageInput{ 49 Service: testServiceID, 50 Version: tv.Number, 51 Name: "new-test-blobstorage", 52 }) 53 }) 54 }() 55 56 if bs.Name != "test-blobstorage" { 57 t.Errorf("bad name: %q", bs.Name) 58 } 59 if bs.Path != "/logs" { 60 t.Errorf("bad path: %q", bs.Path) 61 } 62 if bs.AccountName != "test" { 63 t.Errorf("bad account_name: %q", bs.AccountName) 64 } 65 if bs.Container != "fastly" { 66 t.Errorf("bad container: %q", bs.Container) 67 } 68 if bs.SASToken != "sv=2015-04-05&ss=b&srt=sco&sp=rw&se=2019-07-21T18%3A00%3A00Z&sig=3ABdLOJZosCp0o491T%2BqZGKIhafF1nlM3MzESDDD3Gg%3D" { 69 t.Errorf("bad sas_token: %q", bs.SASToken) 70 } 71 if bs.Period != 12 { 72 t.Errorf("bad period: %q", bs.Period) 73 } 74 if bs.TimestampFormat != "%Y-%m-%dT%H:%M:%S.000" { 75 t.Errorf("bad timestamp_format: %q", bs.TimestampFormat) 76 } 77 if bs.GzipLevel != 9 { 78 t.Errorf("bad gzip_level: %q", bs.GzipLevel) 79 } 80 if bs.PublicKey != "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQENBFyUD8sBCACyFnB39AuuTygseek+eA4fo0cgwva6/FSjnWq7riouQee8GgQ/\nibXTRyv4iVlwI12GswvMTIy7zNvs1R54i0qvsLr+IZ4GVGJqs6ZJnvQcqe3xPoR4\n8AnBfw90o32r/LuHf6QCJXi+AEu35koNlNAvLJ2B+KACaNB7N0EeWmqpV/1V2k9p\nlDYk+th7LcCuaFNGqKS/PrMnnMqR6VDLCjHhNx4KR79b0Twm/2qp6an3hyNRu8Gn\ndwxpf1/BUu3JWf+LqkN4Y3mbOmSUL3MaJNvyQguUzTfS0P0uGuBDHrJCVkMZCzDB\n89ag55jCPHyGeHBTd02gHMWzsg3WMBWvCsrzABEBAAG0JXRlcnJhZm9ybSAodGVz\ndCkgPHRlc3RAdGVycmFmb3JtLmNvbT6JAU4EEwEIADgWIQSHYyc6Kj9l6HzQsau6\nvFFc9jxV/wUCXJQPywIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRC6vFFc\n9jxV/815CAClb32OxV7wG01yF97TzlyTl8TnvjMtoG29Mw4nSyg+mjM3b8N7iXm9\nOLX59fbDAWtBSldSZE22RXd3CvlFOG/EnKBXSjBtEqfyxYSnyOPkMPBYWGL/ApkX\nSvPYJ4LKdvipYToKFh3y9kk2gk1DcDBDyaaHvR+3rv1u3aoy7/s2EltAfDS3ZQIq\n7/cWTLJml/lleeB/Y6rPj8xqeCYhE5ahw9gsV/Mdqatl24V9Tks30iijx0Hhw+Gx\nkATUikMGr2GDVqoIRga5kXI7CzYff4rkc0Twn47fMHHHe/KY9M2yVnMHUXmAZwbG\nM1cMI/NH1DjevCKdGBLcRJlhuLPKF/anuQENBFyUD8sBCADIpd7r7GuPd6n/Ikxe\nu6h7umV6IIPoAm88xCYpTbSZiaK30Svh6Ywra9jfE2KlU9o6Y/art8ip0VJ3m07L\n4RSfSpnzqgSwdjSq5hNour2Fo/BzYhK7yaz2AzVSbe33R0+RYhb4b/6N+bKbjwGF\nftCsqVFMH+PyvYkLbvxyQrHlA9woAZaNThI1ztO5rGSnGUR8xt84eup28WIFKg0K\nUEGUcTzz+8QGAwAra+0ewPXo/AkO+8BvZjDidP417u6gpBHOJ9qYIcO9FxHeqFyu\nYrjlrxowEgXn5wO8xuNz6Vu1vhHGDHGDsRbZF8pv1d5O+0F1G7ttZ2GRRgVBZPwi\nkiyRABEBAAGJATYEGAEIACAWIQSHYyc6Kj9l6HzQsau6vFFc9jxV/wUCXJQPywIb\nDAAKCRC6vFFc9jxV/9YOCACe8qmOSnKQpQfW+PqYOqo3dt7JyweTs3FkD6NT8Zml\ndYy/vkstbTjPpX6aTvUZjkb46BVi7AOneVHpD5GBqvRsZ9iVgDYHaehmLCdKiG5L\n3Tp90NN+QY5WDbsGmsyk6+6ZMYejb4qYfweQeduOj27aavCJdLkCYMoRKfcFYI8c\nFaNmEfKKy/r1PO20NXEG6t9t05K/frHy6ZG8bCNYdpagfFVot47r9JaQqWlTNtIR\n5+zkkSq/eG9BEtRij3a6cTdQbktdBzx2KBeI0PYc1vlZR0LpuFKZqY9vlE6vTGLR\nwMfrTEOvx0NxUM3rpaCgEmuWbB1G1Hu371oyr4srrr+N\n=28dr\n-----END PGP PUBLIC KEY BLOCK-----\n" { 81 t.Errorf("bad public_key: %q", bs.PublicKey) 82 } 83 if bs.Format != "%h %l %u %{now}V %{req.method}V %{req.url}V %>s %{resp.http.Content-Length}V" { 84 t.Errorf("bad format: %q", bs.Format) 85 } 86 if bs.FormatVersion != 2 { 87 t.Errorf("bad format_version: %q", bs.FormatVersion) 88 } 89 if bs.MessageType != "classic" { 90 t.Errorf("bad message_type: %q", bs.MessageType) 91 } 92 if bs.Placement != "waf_debug" { 93 t.Errorf("bad placement: %q", bs.Placement) 94 } 95 96 // List 97 var bsl []*BlobStorage 98 record(t, "blobstorages/list", func(c *Client) { 99 bsl, err = c.ListBlobStorages(&ListBlobStoragesInput{ 100 Service: testServiceID, 101 Version: tv.Number, 102 }) 103 }) 104 if err != nil { 105 t.Fatal(err) 106 } 107 if len(bsl) < 1 { 108 t.Errorf("bad blob storages: %v", bsl) 109 } 110 111 // Get 112 var nbs *BlobStorage 113 record(t, "blobstorages/get", func(c *Client) { 114 nbs, err = c.GetBlobStorage(&GetBlobStorageInput{ 115 Service: testServiceID, 116 Version: tv.Number, 117 Name: "test-blobstorage", 118 }) 119 }) 120 if err != nil { 121 t.Fatal(err) 122 } 123 if bs.Name != nbs.Name { 124 t.Errorf("bad name: %q", bs.Name) 125 } 126 if bs.Path != nbs.Path { 127 t.Errorf("bad path: %q", bs.Path) 128 } 129 if bs.AccountName != nbs.AccountName { 130 t.Errorf("bad account_name: %q", bs.AccountName) 131 } 132 if bs.Container != nbs.Container { 133 t.Errorf("bad container: %q", bs.Container) 134 } 135 if bs.SASToken != nbs.SASToken { 136 t.Errorf("bad sas_token: %q", bs.SASToken) 137 } 138 if bs.Period != nbs.Period { 139 t.Errorf("bad period: %q", bs.Period) 140 } 141 if bs.TimestampFormat != nbs.TimestampFormat { 142 t.Errorf("bad timestamp_format: %q", bs.TimestampFormat) 143 } 144 if bs.GzipLevel != nbs.GzipLevel { 145 t.Errorf("bad gzip_level: %q", bs.GzipLevel) 146 } 147 if bs.PublicKey != nbs.PublicKey { 148 t.Errorf("bad public_key: %q", bs.PublicKey) 149 } 150 if bs.Format != nbs.Format { 151 t.Errorf("bad format: %q", bs.Format) 152 } 153 if bs.FormatVersion != nbs.FormatVersion { 154 t.Errorf("bad format_version: %q", bs.FormatVersion) 155 } 156 if bs.MessageType != nbs.MessageType { 157 t.Errorf("bad message_type: %q", bs.MessageType) 158 } 159 if bs.Placement != nbs.Placement { 160 t.Errorf("bad placement: %q", bs.Placement) 161 } 162 163 // Update 164 var ubs *BlobStorage 165 record(t, "blobstorages/update", func(c *Client) { 166 ubs, err = c.UpdateBlobStorage(&UpdateBlobStorageInput{ 167 Service: testServiceID, 168 Version: tv.Number, 169 Name: "test-blobstorage", 170 NewName: "new-test-blobstorage", 171 }) 172 }) 173 if err != nil { 174 t.Fatal(err) 175 } 176 if ubs.Name != "new-test-blobstorage" { 177 t.Errorf("bad name: %q", ubs.Name) 178 } 179 180 // Delete 181 record(t, "blobstorages/delete", func(c *Client) { 182 err = c.DeleteBlobStorage(&DeleteBlobStorageInput{ 183 Service: testServiceID, 184 Version: tv.Number, 185 Name: "new-test-blobstorage", 186 }) 187 }) 188 if err != nil { 189 t.Fatal(err) 190 } 191 } 192 193 func TestClient_ListBlobStorages_validation(t *testing.T) { 194 var err error 195 _, err = testClient.ListBlobStorages(&ListBlobStoragesInput{ 196 Service: "", 197 }) 198 if err != ErrMissingService { 199 t.Errorf("bad error: %s", err) 200 } 201 202 _, err = testClient.ListBlobStorages(&ListBlobStoragesInput{ 203 Service: "foo", 204 Version: 0, 205 }) 206 if err != ErrMissingVersion { 207 t.Errorf("bad error: %s", err) 208 } 209 } 210 211 func TestClient_CreateBlobStorage_validation(t *testing.T) { 212 var err error 213 _, err = testClient.CreateBlobStorage(&CreateBlobStorageInput{ 214 Service: "", 215 }) 216 if err != ErrMissingService { 217 t.Errorf("bad error: %s", err) 218 } 219 220 _, err = testClient.CreateBlobStorage(&CreateBlobStorageInput{ 221 Service: "foo", 222 Version: 0, 223 }) 224 if err != ErrMissingVersion { 225 t.Errorf("bad error: %s", err) 226 } 227 } 228 229 func TestClient_GetBlobStorage_validation(t *testing.T) { 230 var err error 231 _, err = testClient.GetBlobStorage(&GetBlobStorageInput{ 232 Service: "", 233 }) 234 if err != ErrMissingService { 235 t.Errorf("bad error: %s", err) 236 } 237 238 _, err = testClient.GetBlobStorage(&GetBlobStorageInput{ 239 Service: "foo", 240 Version: 0, 241 }) 242 if err != ErrMissingVersion { 243 t.Errorf("bad error: %s", err) 244 } 245 246 _, err = testClient.GetBlobStorage(&GetBlobStorageInput{ 247 Service: "foo", 248 Version: 1, 249 Name: "", 250 }) 251 if err != ErrMissingName { 252 t.Errorf("bad error: %s", err) 253 } 254 } 255 256 func TestClient_UpdateBlobStorage_validation(t *testing.T) { 257 var err error 258 _, err = testClient.UpdateBlobStorage(&UpdateBlobStorageInput{ 259 Service: "", 260 }) 261 if err != ErrMissingService { 262 t.Errorf("bad error: %s", err) 263 } 264 265 _, err = testClient.UpdateBlobStorage(&UpdateBlobStorageInput{ 266 Service: "foo", 267 Version: 0, 268 }) 269 if err != ErrMissingVersion { 270 t.Errorf("bad error: %s", err) 271 } 272 273 _, err = testClient.UpdateBlobStorage(&UpdateBlobStorageInput{ 274 Service: "foo", 275 Version: 1, 276 Name: "", 277 }) 278 if err != ErrMissingName { 279 t.Errorf("bad error: %s", err) 280 } 281 } 282 283 func TestClient_DeleteBlobStorage_validation(t *testing.T) { 284 var err error 285 err = testClient.DeleteBlobStorage(&DeleteBlobStorageInput{ 286 Service: "", 287 }) 288 if err != ErrMissingService { 289 t.Errorf("bad error: %s", err) 290 } 291 292 err = testClient.DeleteBlobStorage(&DeleteBlobStorageInput{ 293 Service: "foo", 294 Version: 0, 295 }) 296 if err != ErrMissingVersion { 297 t.Errorf("bad error: %s", err) 298 } 299 300 err = testClient.DeleteBlobStorage(&DeleteBlobStorageInput{ 301 Service: "foo", 302 Version: 1, 303 Name: "", 304 }) 305 if err != ErrMissingName { 306 t.Errorf("bad error: %s", err) 307 } 308 }