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)