From 72ab84db7eef67577b15fe4beb681a10a4f4b277 Mon Sep 17 00:00:00 2001 From: Evgenii Baidakov Date: Mon, 30 Oct 2023 16:56:34 +0400 Subject: [PATCH] api: Return correct error on lock configuration check Closes #869. Signed-off-by: Evgenii Baidakov --- api/handler/locking.go | 10 +++++----- api/handler/locking_test.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/handler/locking.go b/api/handler/locking.go index 94718d63..afa2a041 100644 --- a/api/handler/locking.go +++ b/api/handler/locking.go @@ -278,7 +278,7 @@ func (h *handler) GetObjectRetentionHandler(w http.ResponseWriter, r *http.Reque func checkLockConfiguration(conf *data.ObjectLockConfiguration) error { if conf.ObjectLockEnabled != "" && conf.ObjectLockEnabled != enabledValue { - return fmt.Errorf("invalid ObjectLockEnabled value: %s", conf.ObjectLockEnabled) + return s3errors.GetAPIError(s3errors.ErrMalformedXML) } if conf.Rule == nil || conf.Rule.DefaultRetention == nil { @@ -287,15 +287,15 @@ func checkLockConfiguration(conf *data.ObjectLockConfiguration) error { retention := conf.Rule.DefaultRetention if retention.Mode != governanceMode && retention.Mode != complianceMode { - return fmt.Errorf("invalid Mode value: %s", retention.Mode) + return s3errors.GetAPIError(s3errors.ErrMalformedXML) } - if retention.Days == 0 && retention.Years == 0 { - return fmt.Errorf("you must specify Days or Years") + if retention.Days <= 0 && retention.Years <= 0 { + return s3errors.GetAPIError(s3errors.ErrInvalidArgument) } if retention.Days != 0 && retention.Years != 0 { - return fmt.Errorf("you cannot specify Days and Years at the same time") + return s3errors.GetAPIError(s3errors.ErrInvalidArgument) } return nil diff --git a/api/handler/locking_test.go b/api/handler/locking_test.go index 2bf94782..b28099f4 100644 --- a/api/handler/locking_test.go +++ b/api/handler/locking_test.go @@ -284,7 +284,7 @@ func TestPutBucketLockConfigurationHandler(t *testing.T) { { name: "invalid configuration", bucket: bktLockEnabled, - expectedError: s3errors.GetAPIError(s3errors.ErrInternalError), + expectedError: s3errors.GetAPIError(s3errors.ErrMalformedXML), configuration: &data.ObjectLockConfiguration{ObjectLockEnabled: "dummy"}, }, {