|
5 | 5 | "errors"
|
6 | 6 | "fmt"
|
7 | 7 | "math/rand"
|
| 8 | + "net/http" |
8 | 9 | "os"
|
9 | 10 | "path"
|
10 | 11 | "reflect"
|
@@ -254,6 +255,59 @@ func TestWalkEmptySubDirectory(t *testing.T) {
|
254 | 255 | }
|
255 | 256 | }
|
256 | 257 |
|
| 258 | +func TestClientTransport(t *testing.T) { |
| 259 | + if skipS3() != "" { |
| 260 | + t.Skip(skipS3()) |
| 261 | + } |
| 262 | + |
| 263 | + testCases := []struct { |
| 264 | + skipverify bool |
| 265 | + }{ |
| 266 | + {true}, |
| 267 | + {false}, |
| 268 | + } |
| 269 | + |
| 270 | + for _, tc := range testCases { |
| 271 | + // NOTE(milosgajdos): we cannot simply reuse s3DriverConstructor |
| 272 | + // because s3DriverConstructor is initialized in init() using the process |
| 273 | + // env vars: we can not override S3_SKIP_VERIFY env var with t.Setenv |
| 274 | + params := map[string]interface{}{ |
| 275 | + "region": os.Getenv("AWS_REGION"), |
| 276 | + "bucket": os.Getenv("S3_BUCKET"), |
| 277 | + "skipverify": tc.skipverify, |
| 278 | + } |
| 279 | + t.Run(fmt.Sprintf("SkipVerify %v", tc.skipverify), func(t *testing.T) { |
| 280 | + drv, err := FromParameters(context.TODO(), params) |
| 281 | + if err != nil { |
| 282 | + t.Fatalf("failed to create driver: %v", err) |
| 283 | + } |
| 284 | + |
| 285 | + s3drv := drv.baseEmbed.Base.StorageDriver.(*driver) |
| 286 | + if tc.skipverify { |
| 287 | + tr, ok := s3drv.S3.Client.Config.HTTPClient.Transport.(*http.Transport) |
| 288 | + if !ok { |
| 289 | + t.Fatal("unexpected driver transport") |
| 290 | + } |
| 291 | + if !tr.TLSClientConfig.InsecureSkipVerify { |
| 292 | + t.Errorf("unexpected TLS Config. Expected InsecureSkipVerify: %v, got %v", |
| 293 | + tc.skipverify, |
| 294 | + tr.TLSClientConfig.InsecureSkipVerify) |
| 295 | + } |
| 296 | + // make sure the proxy is always set |
| 297 | + if tr.Proxy == nil { |
| 298 | + t.Fatal("missing HTTP transport proxy config") |
| 299 | + } |
| 300 | + return |
| 301 | + } |
| 302 | + // if tc.skipverify is false we do not override the driver |
| 303 | + // HTTP clien transport and leave it to the AWS SDK. |
| 304 | + if s3drv.S3.Client.Config.HTTPClient.Transport != nil { |
| 305 | + t.Errorf("unexpected S3 driver client transport") |
| 306 | + } |
| 307 | + }) |
| 308 | + } |
| 309 | +} |
| 310 | + |
257 | 311 | func TestStorageClass(t *testing.T) {
|
258 | 312 | if skipS3() != "" {
|
259 | 313 | t.Skip(skipS3())
|
|
0 commit comments