diff --git a/api/handler/put.go b/api/handler/put.go index 7ef524dd..b70b05ca 100644 --- a/api/handler/put.go +++ b/api/handler/put.go @@ -498,7 +498,8 @@ func (h *handler) PostObject(w http.ResponseWriter, r *http.Request) { policy, err := checkPostPolicy(r, reqInfo, metadata) if err != nil { - h.logAndSendError(ctx, w, "failed check policy", reqInfo, err) + h.logAndSendError(ctx, w, "failed check policy", reqInfo, + fmt.Errorf("%w: %v", apierr.GetAPIError(apierr.ErrInvalidArgument), err)) return } @@ -548,7 +549,8 @@ func (h *handler) PostObject(w http.ResponseWriter, r *http.Request) { if reqInfo.ObjectName == "" || strings.Contains(reqInfo.ObjectName, "${filename}") { _, head, err := r.FormFile("file") if err != nil { - h.logAndSendError(ctx, w, "could not parse file field", reqInfo, err) + h.logAndSendError(ctx, w, "could not parse file field", reqInfo, + fmt.Errorf("%w: %v", apierr.GetAPIError(apierr.ErrInvalidArgument), err)) return } filename = head.Filename @@ -557,7 +559,8 @@ func (h *handler) PostObject(w http.ResponseWriter, r *http.Request) { var head *multipart.FileHeader contentReader, head, err = r.FormFile("file") if err != nil { - h.logAndSendError(ctx, w, "could not parse file field", reqInfo, err) + h.logAndSendError(ctx, w, "could not parse file field", reqInfo, + fmt.Errorf("%w: %v", apierr.GetAPIError(apierr.ErrInvalidArgument), err)) return } size = uint64(head.Size) diff --git a/api/handler/put_test.go b/api/handler/put_test.go index 4067f6fc..66f4e429 100644 --- a/api/handler/put_test.go +++ b/api/handler/put_test.go @@ -159,6 +159,21 @@ func TestPostObject(t *testing.T) { objName: "user/user1/object", tagging: "EnvironmentProduction", }, + { + key: "user/user1/${filename}", + filename: "object", + content: "content", + objName: "user/user1/object", + tagging: "wrong tagging", + err: true, + }, + { + key: "user/user1/${filename}", + filename: "object", + content: "content", + objName: "user/user1/object", + tagging: "", + }, { key: "user/user1/${filename}", filename: "object", @@ -218,7 +233,7 @@ func TestPostObject(t *testing.T) { t.Run(tc.key+";"+tc.filename, func(t *testing.T) { w := postObjectBase(hc, ns, bktName, tc.key, tc.filename, tc.content, tc.tagging) if tc.err { - assertS3Error(hc.t, w, apierr.GetAPIError(apierr.ErrInternalError)) + assertStatus(hc.t, w, http.StatusBadRequest) return } assertStatus(hc.t, w, http.StatusNoContent)