diff --git a/.gitignore b/.gitignore index a15f58d6..c07c17f3 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,9 @@ go.work # ignore IntelliJ directories .idea +# ignore VS code directories +.vscode + # auto generated VERSION file VERSION diff --git a/cmd/versitygw/test.go b/cmd/versitygw/test.go index c1c52178..822612c9 100644 --- a/cmd/versitygw/test.go +++ b/cmd/versitygw/test.go @@ -268,9 +268,11 @@ func getAction(tf testFunc) func(*cli.Context) error { func extractIntTests() (commands []*cli.Command) { tests := integration.GetIntTests() for key, val := range tests { + testKey := key + testFunc := val commands = append(commands, &cli.Command{ - Name: key, - Usage: fmt.Sprintf("Runs %v integration test", key), + Name: testKey, + Usage: fmt.Sprintf("Runs %v integration test", testKey), Action: func(ctx *cli.Context) error { opts := []integration.Option{ integration.WithAccess(awsID), @@ -283,7 +285,7 @@ func extractIntTests() (commands []*cli.Command) { } s := integration.NewS3Conf(opts...) - err := val(s) + err := testFunc(s) return err }, }) diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index d7275c5a..f158d287 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -63,7 +63,7 @@ func (c S3ApiController) GetActions(ctx *fiber.Ctx) error { key := ctx.Params("key") keyEnd := ctx.Params("*1") uploadId := ctx.Query("uploadId") - maxParts := int32(ctx.QueryInt("max-parts", 0)) + maxParts := int32(ctx.QueryInt("max-parts", -1)) partNumberMarker := ctx.Query("part-number-marker") acceptRange := ctx.Get("Range") acct := ctx.Locals("account").(auth.Account) @@ -92,7 +92,7 @@ func (c S3ApiController) GetActions(ctx *fiber.Ctx) error { } if uploadId != "" { - if maxParts < 0 || (maxParts == 0 && ctx.Query("max-parts") != "") { + if maxParts < 0 && ctx.Request().URI().QueryArgs().Has("max-parts") { return SendResponse(ctx, s3err.GetAPIError(s3err.ErrInvalidMaxParts), &MetaOpts{Logger: c.logger, Action: "ListParts", BucketOwner: parsedAcl.Owner}) } if partNumberMarker != "" { @@ -105,13 +105,17 @@ func (c S3ApiController) GetActions(ctx *fiber.Ctx) error { if err := auth.VerifyACL(parsedAcl, acct.Access, "READ", isRoot); err != nil { return SendXMLResponse(ctx, nil, err, &MetaOpts{Logger: c.logger, Action: "ListParts", BucketOwner: parsedAcl.Owner}) } + var mxParts *int32 + if ctx.Request().URI().QueryArgs().Has("max-parts") { + mxParts = &maxParts + } res, err := c.be.ListParts(ctx.Context(), &s3.ListPartsInput{ Bucket: &bucket, Key: &key, UploadId: &uploadId, PartNumberMarker: &partNumberMarker, - MaxParts: &maxParts, + MaxParts: mxParts, }) return SendXMLResponse(ctx, res, err, &MetaOpts{Logger: c.logger, Action: "ListParts", BucketOwner: parsedAcl.Owner}) }