diff --git a/cmd/bucket-handlers_test.go b/cmd/bucket-handlers_test.go index 77898c22d..25afdb129 100644 --- a/cmd/bucket-handlers_test.go +++ b/cmd/bucket-handlers_test.go @@ -662,6 +662,9 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa var objectNames []string for i := 0; i < 10; i++ { objectName := "test-object-" + strconv.Itoa(i) + if i == 0 { + objectName += "/" + } // uploading the object. _, err = obj.PutObject(GlobalContext, bucketName, objectName, mustGetPutObjReader(t, bytes.NewReader(contentBytes), int64(len(contentBytes)), "", sha256sum), ObjectOptions{}) // if object upload fails stop the test. @@ -793,9 +796,9 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa expectedContent []byte expectedRespStatus int }{ - // Test case - 1. + // Test case - 0. // Delete objects with invalid access key. - { + 0: { bucket: bucketName, objects: successRequest0, accessKey: "Invalid-AccessID", @@ -803,9 +806,19 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa expectedContent: nil, expectedRespStatus: http.StatusForbidden, }, - // Test case - 2. + // Test case - 1. // Delete valid objects with quiet flag off. - { + 1: { + bucket: bucketName, + objects: successRequest0, + accessKey: credentials.AccessKey, + secretKey: credentials.SecretKey, + expectedContent: encodedSuccessResponse0, + expectedRespStatus: http.StatusOK, + }, + // Test case - 2. + // Delete deleted objects with quiet flag off. + 2: { bucket: bucketName, objects: successRequest0, accessKey: credentials.AccessKey, @@ -815,7 +828,7 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa }, // Test case - 3. // Delete valid objects with quiet flag on. - { + 3: { bucket: bucketName, objects: successRequest1, accessKey: credentials.AccessKey, @@ -825,7 +838,7 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa }, // Test case - 4. // Delete previously deleted objects. - { + 4: { bucket: bucketName, objects: successRequest1, accessKey: credentials.AccessKey, @@ -836,7 +849,7 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa // Test case - 5. // Anonymous user access denied response // Currently anonymous users cannot delete multiple objects in MinIO server - { + 5: { bucket: bucketName, objects: anonRequest, accessKey: "", @@ -847,7 +860,7 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa // Test case - 6. // Anonymous user has access to some public folder, issue removing with // another private object as well - { + 6: { bucket: bucketName, objects: anonRequestWithPartialPublicAccess, accessKey: "", @@ -881,19 +894,19 @@ func testAPIDeleteMultipleObjectsHandler(obj ObjectLayer, instanceType, bucketNa apiRouter.ServeHTTP(rec, req) // Assert the response code with the expected status. if rec.Code != testCase.expectedRespStatus { - t.Errorf("Test %d: MinIO %s: Expected the response status to be `%d`, but instead found `%d`", i+1, instanceType, testCase.expectedRespStatus, rec.Code) + t.Errorf("Test %d: MinIO %s: Expected the response status to be `%d`, but instead found `%d`", i, instanceType, testCase.expectedRespStatus, rec.Code) } // read the response body. actualContent, err = io.ReadAll(rec.Body) if err != nil { - t.Fatalf("Test %d : MinIO %s: Failed parsing response body: %v", i+1, instanceType, err) + t.Fatalf("Test %d : MinIO %s: Failed parsing response body: %v", i, instanceType, err) } // Verify whether the bucket obtained object is same as the one created. if testCase.expectedContent != nil && !bytes.Equal(testCase.expectedContent, actualContent) { t.Log(string(testCase.expectedContent), string(actualContent)) - t.Errorf("Test %d : MinIO %s: Object content differs from expected value.", i+1, instanceType) + t.Errorf("Test %d : MinIO %s: Object content differs from expected value.", i, instanceType) } } diff --git a/cmd/erasure-server-pool.go b/cmd/erasure-server-pool.go index 3aa7b24ee..63597169f 100644 --- a/cmd/erasure-server-pool.go +++ b/cmd/erasure-server-pool.go @@ -1066,7 +1066,7 @@ func (z *erasureServerPools) DeleteObjects(ctx context.Context, bucket string, o derrs[j] = err } dobjects[j] = DeletedObject{ - ObjectName: obj.ObjectName, + ObjectName: decodeDirObject(obj.ObjectName), VersionID: obj.VersionID, } return nil @@ -1078,7 +1078,7 @@ func (z *erasureServerPools) DeleteObjects(ctx context.Context, bucket string, o DeleteMarker: pinfo.ObjInfo.DeleteMarker, DeleteMarkerVersionID: pinfo.ObjInfo.VersionID, DeleteMarkerMTime: DeleteMarkerMTime{pinfo.ObjInfo.ModTime}, - ObjectName: pinfo.ObjInfo.Name, + ObjectName: decodeDirObject(pinfo.ObjInfo.Name), } return nil }