21225: Skip clipboard test in firefox
[arvados.git] / services / keep-web / s3aws_test.go
index 145d987bf6d924e0b435422c015a6ec5a2e081ed..f22b9c11b8b0edf7d33af05b13c3bb2d09f4e598 100644 (file)
@@ -7,14 +7,13 @@ package keepweb
 import (
        "bytes"
        "context"
+       "errors"
        "io/ioutil"
 
        "git.arvados.org/arvados.git/sdk/go/arvadostest"
        "github.com/aws/aws-sdk-go-v2/aws"
-       "github.com/aws/aws-sdk-go-v2/aws/defaults"
-       "github.com/aws/aws-sdk-go-v2/aws/ec2metadata"
-       "github.com/aws/aws-sdk-go-v2/aws/ec2rolecreds"
-       "github.com/aws/aws-sdk-go-v2/aws/endpoints"
+       "github.com/aws/aws-sdk-go-v2/config"
+       "github.com/aws/aws-sdk-go-v2/credentials"
        "github.com/aws/aws-sdk-go-v2/service/s3"
        check "gopkg.in/check.v1"
 )
@@ -23,29 +22,40 @@ func (s *IntegrationSuite) TestS3AWSSDK(c *check.C) {
        stage := s.s3setup(c)
        defer stage.teardown(c)
 
-       cfg := defaults.Config()
-       cfg.Credentials = aws.NewChainProvider([]aws.CredentialsProvider{
-               aws.NewStaticCredentialsProvider(arvadostest.ActiveTokenUUID, arvadostest.ActiveToken, ""),
-               ec2rolecreds.New(ec2metadata.New(cfg)),
-       })
-       cfg.EndpointResolver = aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {
-               if service == "s3" {
-                       return aws.Endpoint{
-                               URL:           s.testServer.URL,
-                               SigningRegion: "custom-signing-region",
-                       }, nil
-               }
-               return endpoints.NewDefaultResolver().ResolveEndpoint(service, region)
+       cfg, err := config.LoadDefaultConfig(context.TODO(),
+               func(o *config.LoadOptions) error {
+                       o.Credentials = credentials.StaticCredentialsProvider{
+                               Value: aws.Credentials{
+                                       AccessKeyID:     arvadostest.ActiveTokenUUID,
+                                       SecretAccessKey: arvadostest.ActiveToken,
+                                       Source:          "test suite configuration",
+                               },
+                       }
+                       o.EndpointResolverWithOptions = aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) {
+                               if service == "S3" {
+                                       return aws.Endpoint{
+                                               URL:               s.testServer.URL,
+                                               HostnameImmutable: true,
+                                               SigningRegion:     "test-region",
+                                               Source:            aws.EndpointSourceCustom,
+                                       }, nil
+                               }
+                               // else, use default
+                               return aws.Endpoint{}, &aws.EndpointNotFoundError{Err: errors.New("endpoint not overridden")}
+                       })
+                       return nil
+               })
+       c.Assert(err, check.IsNil)
+       client := s3.NewFromConfig(cfg, func(o *s3.Options) {
+               o.Region = "test-region"
+               o.UsePathStyle = true
        })
-       client := s3.New(cfg)
-       client.ForcePathStyle = true
-       listreq := client.ListObjectsV2Request(&s3.ListObjectsV2Input{
+       resp, err := client.ListObjectsV2(context.Background(), &s3.ListObjectsV2Input{
                Bucket:            aws.String(arvadostest.FooCollection),
-               MaxKeys:           aws.Int64(100),
+               MaxKeys:           aws.Int32(100),
                Prefix:            aws.String(""),
                ContinuationToken: nil,
        })
-       resp, err := listreq.Send(context.Background())
        c.Assert(err, check.IsNil)
        c.Check(resp.Contents, check.HasLen, 1)
        for _, key := range resp.Contents {
@@ -56,20 +66,18 @@ func (s *IntegrationSuite) TestS3AWSSDK(c *check.C) {
        for i := range p {
                p[i] = byte('a')
        }
-       putreq := client.PutObjectRequest(&s3.PutObjectInput{
+       _, err = client.PutObject(context.Background(), &s3.PutObjectInput{
                Body:        bytes.NewReader(p),
                Bucket:      aws.String(stage.collbucket.Name),
                ContentType: aws.String("application/octet-stream"),
                Key:         aws.String("aaaa"),
        })
-       _, err = putreq.Send(context.Background())
        c.Assert(err, check.IsNil)
 
-       getreq := client.GetObjectRequest(&s3.GetObjectInput{
+       getresp, err := client.GetObject(context.Background(), &s3.GetObjectInput{
                Bucket: aws.String(stage.collbucket.Name),
                Key:    aws.String("aaaa"),
        })
-       getresp, err := getreq.Send(context.Background())
        c.Assert(err, check.IsNil)
        getdata, err := ioutil.ReadAll(getresp.Body)
        c.Assert(err, check.IsNil)