diff --git a/s3api/controllers/base.go b/s3api/controllers/base.go index 55a23de..9a496fb 100644 --- a/s3api/controllers/base.go +++ b/s3api/controllers/base.go @@ -2013,7 +2013,7 @@ func (c S3ApiController) PutActions(ctx *fiber.Ctx) error { if c.debug { log.Printf("invalid part number: %d", partNumber) } - return SendResponse(ctx, s3err.GetAPIError(s3err.ErrInvalidPart), + return SendResponse(ctx, s3err.GetAPIError(s3err.ErrInvalidPartNumber), &MetaOpts{ Logger: c.logger, MetricsMng: c.mm, diff --git a/tests/integration/tests.go b/tests/integration/tests.go index 136b5da..729c7dc 100644 --- a/tests/integration/tests.go +++ b/tests/integration/tests.go @@ -6872,19 +6872,26 @@ func UploadPart_non_existing_bucket(s *S3Conf) error { func UploadPart_invalid_part_number(s *S3Conf) error { testName := "UploadPart_invalid_part_number" - partNumber := int32(-10) return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error { - ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) - _, err := s3client.UploadPart(ctx, &s3.UploadPartInput{ - Bucket: &bucket, - Key: getPtr("my-obj"), - UploadId: getPtr("uploadId"), - PartNumber: &partNumber, - }) - cancel() - if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidPart)); err != nil { + key := "my-obj" + mp, err := createMp(s3client, bucket, key) + if err != nil { return err } + for _, el := range []int32{0, -1, 10001, 2300000} { + ctx, cancel := context.WithTimeout(context.Background(), shortTimeout) + _, err := s3client.UploadPart(ctx, &s3.UploadPartInput{ + Bucket: &bucket, + Key: &key, + UploadId: mp.UploadId, + PartNumber: &el, + }) + cancel() + if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidPartNumber)); err != nil { + return err + } + } + return nil }) }