diff --git a/weed/util/http/http_global_client_util.go b/weed/util/http/http_global_client_util.go index a8adddb10..dc778b56e 100644 --- a/weed/util/http/http_global_client_util.go +++ b/weed/util/http/http_global_client_util.go @@ -172,7 +172,7 @@ func Delete(url string, jwt string) error { return err } switch resp.StatusCode { - case http.StatusNotFound, http.StatusAccepted, http.StatusOK: + case http.StatusNotFound, http.StatusNoContent, http.StatusAccepted, http.StatusOK: return nil } m := make(map[string]interface{}) diff --git a/weed/util/http/http_global_client_util_test.go b/weed/util/http/http_global_client_util_test.go index 487d23768..74b103559 100644 --- a/weed/util/http/http_global_client_util_test.go +++ b/weed/util/http/http_global_client_util_test.go @@ -103,6 +103,24 @@ func TestDeleteReturnsInvalidRequestErrorBeforeAddingAuth(t *testing.T) { } } +func TestDeleteTreatsNoContentAsSuccess(t *testing.T) { + InitGlobalHttpClient() + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodDelete { + t.Errorf("expected DELETE, got %s", r.Method) + w.WriteHeader(http.StatusBadRequest) + return + } + w.WriteHeader(http.StatusNoContent) + })) + defer server.Close() + + if err := Delete(server.URL, ""); err != nil { + t.Fatalf("expected 204 DELETE to succeed, got %v", err) + } +} + func TestDeleteProxiedReturnsInvalidRequestErrorBeforeAddingAuth(t *testing.T) { defer func() { if r := recover(); r != nil {