xl: Avoid removing a directory if it is not an object dir (#6395)

DeleteObject should not remove any directory unless the latter
is an empty directory.

Fixes #6394
This commit is contained in:
Anis Elleuch
2018-08-31 22:16:35 +02:00
committed by kannappanr
parent 4487f70f08
commit 85117d554f
2 changed files with 24 additions and 19 deletions

View File

@@ -71,11 +71,14 @@ func TestXLDeleteObjectBasic(t *testing.T) {
object string
expectedErr error
}{
{".test", "obj", BucketNameInvalid{Bucket: ".test"}},
{"----", "obj", BucketNameInvalid{Bucket: "----"}},
{".test", "dir/obj", BucketNameInvalid{Bucket: ".test"}},
{"----", "dir/obj", BucketNameInvalid{Bucket: "----"}},
{"bucket", "", ObjectNameInvalid{Bucket: "bucket", Object: ""}},
{"bucket", "doesnotexist", ObjectNotFound{Bucket: "bucket", Object: "doesnotexist"}},
{"bucket", "obj", nil},
{"bucket", "dir/doesnotexist", ObjectNotFound{Bucket: "bucket", Object: "dir/doesnotexist"}},
{"bucket", "dir", ObjectNotFound{Bucket: "bucket", Object: "dir"}},
{"bucket", "dir/", ObjectNotFound{Bucket: "bucket", Object: "dir/"}},
{"bucket", "dir/obj", nil},
}
// Create an instance of xl backend
@@ -84,14 +87,13 @@ func TestXLDeleteObjectBasic(t *testing.T) {
t.Fatal(err)
}
// Make bucket for Test 7 to pass
err = xl.MakeBucketWithLocation(context.Background(), "bucket", "")
if err != nil {
t.Fatal(err)
}
// Create object "obj" under bucket "bucket" for Test 7 to pass
_, err = xl.PutObject(context.Background(), "bucket", "obj", mustGetHashReader(t, bytes.NewReader([]byte("abcd")), int64(len("abcd")), "", ""), nil)
// Create object "dir/obj" under bucket "bucket" for Test 7 to pass
_, err = xl.PutObject(context.Background(), "bucket", "dir/obj", mustGetHashReader(t, bytes.NewReader([]byte("abcd")), int64(len("abcd")), "", ""), nil)
if err != nil {
t.Fatalf("XL Object upload failed: <ERROR> %s", err)
}