mirror of
https://github.com/versity/versitygw.git
synced 2026-08-21 14:46:19 +00:00
Merge pull request #1755 from versity/sis/missing-bucket-lock-err
fix: fixes missing bucket object lock config error
This commit is contained in:
@@ -746,6 +746,45 @@ func CopyObject_should_replace_meta_props(s *S3Conf) error {
|
||||
})
|
||||
}
|
||||
|
||||
func CopyObject_missing_bucket_lock(s *S3Conf) error {
|
||||
testName := "CopyObject_missing_bucket_lock"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
srcObj, dstObj := "source-object", "dst-object"
|
||||
_, err := putObjectWithData(10, &s3.PutObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: &srcObj,
|
||||
}, s3client)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// with retention
|
||||
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
|
||||
_, err = s3client.CopyObject(ctx, &s3.CopyObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: &dstObj,
|
||||
CopySource: getPtr(fmt.Sprintf("%s/%s", bucket, srcObj)),
|
||||
ObjectLockMode: types.ObjectLockModeGovernance,
|
||||
ObjectLockRetainUntilDate: getPtr(time.Now().AddDate(0, 1, 0)),
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfigurationNoSpaces)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// with legal hold
|
||||
ctx, cancel = context.WithTimeout(context.Background(), shortTimeout)
|
||||
_, err = s3client.CopyObject(ctx, &s3.CopyObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: &dstObj,
|
||||
CopySource: getPtr(fmt.Sprintf("%s/%s", bucket, srcObj)),
|
||||
ObjectLockLegalHoldStatus: types.ObjectLockLegalHoldStatusOn,
|
||||
})
|
||||
cancel()
|
||||
return checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfigurationNoSpaces))
|
||||
})
|
||||
}
|
||||
|
||||
func CopyObject_invalid_legal_hold(s *S3Conf) error {
|
||||
testName := "CopyObject_invalid_legal_hold"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
|
||||
@@ -209,18 +209,29 @@ func CreateMultipartUpload_with_object_lock_not_enabled(s *S3Conf) error {
|
||||
testName := "CreateMultipartUpload_with_object_lock_not_enabled"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
obj := "my-obj"
|
||||
|
||||
// with retention
|
||||
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
|
||||
_, err := s3client.CreateMultipartUpload(ctx, &s3.CreateMultipartUploadInput{
|
||||
Bucket: &bucket,
|
||||
Key: &obj,
|
||||
ObjectLockMode: types.ObjectLockModeGovernance,
|
||||
ObjectLockRetainUntilDate: getPtr(time.Now().AddDate(1, 0, 0)),
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfigurationNoSpaces)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// with legal hold
|
||||
ctx, cancel = context.WithTimeout(context.Background(), shortTimeout)
|
||||
_, err = s3client.CreateMultipartUpload(ctx, &s3.CreateMultipartUploadInput{
|
||||
Bucket: &bucket,
|
||||
Key: &obj,
|
||||
ObjectLockLegalHoldStatus: types.ObjectLockLegalHoldStatusOn,
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidBucketObjectLockConfiguration)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
return checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfigurationNoSpaces))
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ func GetObjectLegalHold_disabled_lock(s *S3Conf) error {
|
||||
Key: &key,
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidBucketObjectLockConfiguration)); err != nil {
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfiguration)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ func GetObjectRetention_disabled_lock(s *S3Conf) error {
|
||||
Key: &key,
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidBucketObjectLockConfiguration)); err != nil {
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfiguration)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -274,6 +274,30 @@ func PutObject_with_object_lock(s *S3Conf) error {
|
||||
}, withLock())
|
||||
}
|
||||
|
||||
func PutObject_missing_bucket_lock(s *S3Conf) error {
|
||||
testName := "PutObject_missing_bucket_lock"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
// with retention
|
||||
_, err := putObjectWithData(3, &s3.PutObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: getPtr("my-object"),
|
||||
ObjectLockMode: types.ObjectLockModeGovernance,
|
||||
ObjectLockRetainUntilDate: getPtr(time.Now().AddDate(0, 0, 2)),
|
||||
}, s3client)
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfigurationNoSpaces)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// with legal hold
|
||||
_, err = putObjectWithData(2, &s3.PutObjectInput{
|
||||
Bucket: &bucket,
|
||||
Key: getPtr("my-object"),
|
||||
ObjectLockLegalHoldStatus: types.ObjectLockLegalHoldStatusOn,
|
||||
}, s3client)
|
||||
return checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfigurationNoSpaces))
|
||||
})
|
||||
}
|
||||
|
||||
func PutObject_invalid_legal_hold(s *S3Conf) error {
|
||||
testName := "PutObject_invalid_legal_hold"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
|
||||
@@ -115,7 +115,7 @@ func PutObjectLegalHold_unset_bucket_object_lock_config(s *S3Conf) error {
|
||||
},
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidBucketObjectLockConfiguration)); err != nil {
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfiguration)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ func PutObjectRetention_unset_bucket_object_lock_config(s *S3Conf) error {
|
||||
},
|
||||
})
|
||||
cancel()
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidBucketObjectLockConfiguration)); err != nil {
|
||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrMissingObjectLockConfiguration)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -163,6 +163,7 @@ func TestPutObject(ts *TestState) {
|
||||
ts.Run(PutObject_tagging)
|
||||
ts.Run(PutObject_missing_object_lock_retention_config)
|
||||
ts.Run(PutObject_with_object_lock)
|
||||
ts.Run(PutObject_missing_bucket_lock)
|
||||
ts.Run(PutObject_invalid_legal_hold)
|
||||
ts.Run(PutObject_invalid_object_lock_mode)
|
||||
ts.Run(PutObject_past_retain_until_date)
|
||||
@@ -328,6 +329,7 @@ func TestCopyObject(ts *TestState) {
|
||||
ts.Run(CopyObject_non_existing_dir_object)
|
||||
ts.Run(CopyObject_should_copy_meta_props)
|
||||
ts.Run(CopyObject_should_replace_meta_props)
|
||||
ts.Run(CopyObject_missing_bucket_lock)
|
||||
ts.Run(CopyObject_invalid_legal_hold)
|
||||
ts.Run(CopyObject_invalid_object_lock_mode)
|
||||
ts.Run(CopyObject_with_legal_hold)
|
||||
@@ -1201,6 +1203,7 @@ func GetIntTests() IntTests {
|
||||
"PutObject_missing_object_lock_retention_config": PutObject_missing_object_lock_retention_config,
|
||||
"PutObject_name_too_long": PutObject_name_too_long,
|
||||
"PutObject_with_object_lock": PutObject_with_object_lock,
|
||||
"PutObject_missing_bucket_lock": PutObject_missing_bucket_lock,
|
||||
"PutObject_invalid_legal_hold": PutObject_invalid_legal_hold,
|
||||
"PutObject_invalid_object_lock_mode": PutObject_invalid_object_lock_mode,
|
||||
"PutObject_past_retain_until_date": PutObject_past_retain_until_date,
|
||||
@@ -1373,6 +1376,7 @@ func GetIntTests() IntTests {
|
||||
"CopyObject_non_existing_dir_object": CopyObject_non_existing_dir_object,
|
||||
"CopyObject_should_copy_meta_props": CopyObject_should_copy_meta_props,
|
||||
"CopyObject_should_replace_meta_props": CopyObject_should_replace_meta_props,
|
||||
"CopyObject_missing_bucket_lock": CopyObject_missing_bucket_lock,
|
||||
"CopyObject_invalid_legal_hold": CopyObject_invalid_legal_hold,
|
||||
"CopyObject_invalid_object_lock_mode": CopyObject_invalid_object_lock_mode,
|
||||
"CopyObject_with_legal_hold": CopyObject_with_legal_hold,
|
||||
|
||||
Reference in New Issue
Block a user