diff --git a/object-common.go b/object-common.go index d28b7d3bb..278eb2211 100644 --- a/object-common.go +++ b/object-common.go @@ -96,7 +96,7 @@ func deleteBucket(storage StorageAPI, bucket string) error { return BucketNameInvalid{Bucket: bucket} } if err := storage.DeleteVol(bucket); err != nil { - return toObjectErr(err) + return toObjectErr(err, bucket) } return nil } diff --git a/object-errors.go b/object-errors.go index 368fad118..f74ece6b3 100644 --- a/object-errors.go +++ b/object-errors.go @@ -30,6 +30,10 @@ func toObjectErr(err error, params ...string) error { if len(params) >= 1 { return BucketNotFound{Bucket: params[0]} } + case errVolumeNotEmpty: + if len(params) >= 1 { + return BucketNotEmpty{Bucket: params[0]} + } case errVolumeExists: if len(params) >= 1 { return BucketExists{Bucket: params[0]} diff --git a/server_test.go b/server_test.go index 29c9ff557..ea8acc715 100644 --- a/server_test.go +++ b/server_test.go @@ -379,6 +379,32 @@ func (s *MyAPISuite) TestDeleteBucket(c *C) { c.Assert(response.StatusCode, Equals, http.StatusNoContent) } +func (s *MyAPISuite) TestDeleteBucketNotEmpty(c *C) { + request, err := s.newRequest("PUT", testAPIFSCacheServer.URL+"/deletebucket-notempty", 0, nil) + c.Assert(err, IsNil) + + client := http.Client{} + response, err := client.Do(request) + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusOK) + + request, err = s.newRequest("PUT", testAPIFSCacheServer.URL+"/deletebucket-notempty/myobject", 0, nil) + c.Assert(err, IsNil) + + client = http.Client{} + response, err = client.Do(request) + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusOK) + + request, err = s.newRequest("DELETE", testAPIFSCacheServer.URL+"/deletebucket-notempty", 0, nil) + c.Assert(err, IsNil) + + client = http.Client{} + response, err = client.Do(request) + c.Assert(err, IsNil) + c.Assert(response.StatusCode, Equals, http.StatusConflict) +} + func (s *MyAPISuite) TestDeleteObject(c *C) { request, err := s.newRequest("PUT", testAPIFSCacheServer.URL+"/deletebucketobject", 0, nil) c.Assert(err, IsNil)