X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/397981dadc145225c691c8643b10527c9710f1fb..6de5c3aae92b2a19a55052e69ff9762b78954dd2:/services/keep-web/s3aws_test.go diff --git a/services/keep-web/s3aws_test.go b/services/keep-web/s3aws_test.go index d528dbaf79..f22b9c11b8 100644 --- a/services/keep-web/s3aws_test.go +++ b/services/keep-web/s3aws_test.go @@ -2,19 +2,18 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +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: "http://" + s.testServer.Addr, - 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)