api: DeleteObject should always return 204. (#1645)

Fixes #1643
This commit is contained in:
Harshavardhana 2016-05-14 15:47:19 -07:00
parent e03ebfd13b
commit 5b29cefd40
2 changed files with 13 additions and 5 deletions

View File

@ -936,10 +936,9 @@ func (api objectAPIHandlers) DeleteObjectHandler(w http.ResponseWriter, r *http.
return
}
}
if err := api.ObjectAPI.DeleteObject(bucket, object); err != nil {
errorIf(err, "DeleteObject failed.", nil)
writeErrorResponse(w, r, toAPIErrorCode(err), r.URL.Path)
return
}
/// http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html
/// Ignore delete object errors, since we are suppposed to reply
/// only 204.
api.ObjectAPI.DeleteObject(bucket, object)
writeSuccessNoContent(w)
}

View File

@ -351,6 +351,7 @@ func (s *MyAPISuite) TestDeleteBucketNotEmpty(c *C) {
c.Assert(response.StatusCode, Equals, http.StatusConflict)
}
// Tests delete object responses and success.
func (s *MyAPISuite) TestDeleteObject(c *C) {
request, err := s.newRequest("PUT", testAPIFSCacheServer.URL+"/deletebucketobject", 0, nil)
c.Assert(err, IsNil)
@ -374,6 +375,14 @@ func (s *MyAPISuite) TestDeleteObject(c *C) {
response, err = client.Do(request)
c.Assert(err, IsNil)
c.Assert(response.StatusCode, Equals, http.StatusNoContent)
// Delete non existant object should return http.StatusNoContent.
request, err = s.newRequest("DELETE", testAPIFSCacheServer.URL+"/deletebucketobject/myobject1", 0, nil)
c.Assert(err, IsNil)
client = http.Client{}
response, err = client.Do(request)
c.Assert(err, IsNil)
c.Assert(response.StatusCode, Equals, http.StatusNoContent)
}
func (s *MyAPISuite) TestNonExistantBucket(c *C) {