1// +build integration 2 3package s3control_test 4 5import ( 6 "crypto/tls" 7 "flag" 8 "fmt" 9 "net/http" 10 "os" 11 "testing" 12 13 "github.com/aws/aws-sdk-go/aws" 14 "github.com/aws/aws-sdk-go/awstesting/integration" 15 "github.com/aws/aws-sdk-go/service/s3control" 16 "github.com/aws/aws-sdk-go/service/sts" 17) 18 19var ( 20 svc *s3control.S3Control 21 s3ControlEndpoint, stsEndpoint string 22 accountID string 23 insecureTLS, useDualstack bool 24) 25 26func init() { 27 flag.StringVar(&stsEndpoint, "sts-endpoint", "", 28 "The optional `URL` endpoint for the STS service.", 29 ) 30 flag.StringVar(&s3ControlEndpoint, "s3-control-endpoint", "", 31 "The optional `URL` endpoint for the S3 Control service.", 32 ) 33 flag.BoolVar(&insecureTLS, "insecure-tls", false, 34 "Disables TLS validation on request endpoints.", 35 ) 36 flag.BoolVar(&useDualstack, "dualstack", false, 37 "Enables usage of dualstack endpoints.", 38 ) 39 flag.StringVar(&accountID, "account", "", 40 "The AWS account `ID`.", 41 ) 42 flag.Parse() 43} 44 45func TestMain(m *testing.M) { 46 setup() 47 48 os.Exit(m.Run()) 49} 50 51// Create a bucket for testing 52func setup() { 53 tlsCfg := &tls.Config{} 54 if insecureTLS { 55 tlsCfg.InsecureSkipVerify = true 56 } 57 58 sess := integration.SessionWithDefaultRegion("us-west-2") 59 sess.Copy(&aws.Config{ 60 HTTPClient: &http.Client{ 61 Transport: &http.Transport{ 62 TLSClientConfig: tlsCfg, 63 }, 64 }, 65 UseDualStack: aws.Bool(useDualstack), 66 }) 67 68 if len(accountID) == 0 { 69 stsSvc := sts.New(sess, &aws.Config{ 70 Endpoint: &stsEndpoint, 71 }) 72 identity, err := stsSvc.GetCallerIdentity(&sts.GetCallerIdentityInput{}) 73 if err != nil { 74 panic(fmt.Sprintf("failed to get accountID, %v", err)) 75 } 76 accountID = aws.StringValue(identity.Account) 77 } 78 79 svc = s3control.New(sess, &aws.Config{ 80 Endpoint: &s3ControlEndpoint, 81 }) 82} 83