From 838a7f9ef9347360e17a60e8cfb9d7763def88a6 Mon Sep 17 00:00:00 2001 From: jonaustin09 Date: Fri, 28 Jul 2023 18:19:15 +0400 Subject: [PATCH] fix: Fixes #152. Changed CompleteMultiPartUpload invalid payload error to MalformedXML --- integration/tests.go | 13 +++++++++++++ s3api/controllers/base.go | 6 +++++- s3api/controllers/base_test.go | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/integration/tests.go b/integration/tests.go index 16cd71ab..86ff1b21 100644 --- a/integration/tests.go +++ b/integration/tests.go @@ -779,6 +779,19 @@ func TestIncorrectMultiParts(s *S3Conf) { badEtag := "bogusEtagValue" + // Empty multipart upload + ctx, cancel = context.WithTimeout(context.Background(), shortTimeout) + _, err = s3client.CompleteMultipartUpload(ctx, &s3.CompleteMultipartUploadInput{ + Bucket: &bucket, + Key: &obj, + UploadId: mpu.UploadId, + }) + cancel() + if err == nil { + failF("%v: complete multipart expected err", testname) + return + } + ctx, cancel = context.WithTimeout(context.Background(), shortTimeout) _, err = s3client.CompleteMultipartUpload(ctx, &s3.CompleteMultipartUploadInput{ Bucket: &bucket, diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index 94c29c2c..2cf51ab3 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -834,7 +834,11 @@ func (c S3ApiController) CreateActions(ctx *fiber.Ctx) error { }{} if err := xml.Unmarshal(ctx.Body(), &data); err != nil { - return SendXMLResponse(ctx, nil, err, &MetaOpts{Logger: c.logger, Action: "CompleteMultipartUpload", BucketOwner: parsedAcl.Owner}) + return SendXMLResponse(ctx, nil, s3err.GetAPIError(s3err.ErrMalformedXML), &MetaOpts{ + Logger: c.logger, + Action: "CompleteMultipartUpload", + BucketOwner: parsedAcl.Owner, + }) } if err := auth.VerifyACL(parsedAcl, bucket, access, "WRITE", isRoot); err != nil { diff --git a/s3api/controllers/base_test.go b/s3api/controllers/base_test.go index f8bb85fd..ca8d6c90 100644 --- a/s3api/controllers/base_test.go +++ b/s3api/controllers/base_test.go @@ -1343,7 +1343,7 @@ func TestS3ApiController_CreateActions(t *testing.T) { req: httptest.NewRequest(http.MethodPost, "/my-bucket/my-key?uploadId=23423", nil), }, wantErr: false, - statusCode: 500, + statusCode: 400, }, { name: "Complete-multipart-upload-success",