fix: adds validation for bucket canned ACL

Fixes #1379

Adds validation for bucket canned ACLs in `CreateBucket` and `PutBucketAcl`. The gateway supports three values: `private`, `public-read`, and `public-read-write`. All other values (including `authenticated-read`, which is not supported) are considered invalid and result in an `InvalidArgument` error with an empty error message.
This commit is contained in:
niksis02
2025-11-03 22:59:06 +04:00
parent 4345420e12
commit 7744dacced
7 changed files with 100 additions and 13 deletions
+13
View File
@@ -490,3 +490,16 @@ func CreateBucket_tag_count_limit(s *S3Conf) error {
return checkApiErr(err, s3err.GetAPIError(s3err.ErrBucketTaggingLimited))
})
}
func CreateBucket_invalid_canned_acl(s *S3Conf) error {
testName := "CreateBucket_invalid_canned_acl"
return actionHandlerNoSetup(s, testName, func(s3client *s3.Client, bucket string) error {
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
_, err := s3client.CreateBucket(ctx, &s3.CreateBucketInput{
Bucket: &bucket,
ACL: types.BucketCannedACL("invalid_acl"),
})
cancel()
return checkSdkApiErr(err, "InvalidArgument")
})
}
+15
View File
@@ -71,6 +71,21 @@ func PutBucketAcl_none_of_the_options_specified(s *S3Conf) error {
}, withOwnership(types.ObjectOwnershipBucketOwnerPreferred))
}
func PutBucketAcl_invalid_canned_acl(s *S3Conf) error {
testName := "PutBucketAcl_invalid_canned_acl"
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
_, err := s3client.PutBucketAcl(ctx, &s3.PutBucketAclInput{
Bucket: &bucket,
ACL: types.BucketCannedACL("invalid_acl"),
})
cancel()
// the expected error message is empty for this case
// only check the error Code
return checkSdkApiErr(err, "InvalidArgument")
}, withOwnership(types.ObjectOwnershipBucketOwnerPreferred))
}
func PutBucketAcl_invalid_acl_canned_and_acp(s *S3Conf) error {
testName := "PutBucketAcl_invalid_acl_canned_and_acp"
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
+4
View File
@@ -85,6 +85,7 @@ func TestCreateBucket(ts *TestState) {
ts.Run(CreateBucket_invalid_tags)
ts.Run(CreateBucket_duplicate_keys)
ts.Run(CreateBucket_tag_count_limit)
ts.Run(CreateBucket_invalid_canned_acl)
}
func TestHeadBucket(ts *TestState) {
@@ -509,6 +510,7 @@ func TestPutBucketAcl(ts *TestState) {
ts.Run(PutBucketAcl_non_existing_bucket)
ts.Run(PutBucketAcl_disabled)
ts.Run(PutBucketAcl_none_of_the_options_specified)
ts.Run(PutBucketAcl_invalid_canned_acl)
ts.Run(PutBucketAcl_invalid_acl_canned_and_acp)
ts.Run(PutBucketAcl_invalid_acl_canned_and_grants)
ts.Run(PutBucketAcl_invalid_acl_acp_and_grants)
@@ -1145,6 +1147,7 @@ func GetIntTests() IntTests {
"CreateBucket_invalid_tags": CreateBucket_invalid_tags,
"CreateBucket_duplicate_keys": CreateBucket_duplicate_keys,
"CreateBucket_tag_count_limit": CreateBucket_tag_count_limit,
"CreateBucket_invalid_canned_acl": CreateBucket_invalid_canned_acl,
"HeadBucket_non_existing_bucket": HeadBucket_non_existing_bucket,
"HeadBucket_success": HeadBucket_success,
"ListBuckets_as_user": ListBuckets_as_user,
@@ -1410,6 +1413,7 @@ func GetIntTests() IntTests {
"PutBucketAcl_non_existing_bucket": PutBucketAcl_non_existing_bucket,
"PutBucketAcl_disabled": PutBucketAcl_disabled,
"PutBucketAcl_none_of_the_options_specified": PutBucketAcl_none_of_the_options_specified,
"PutBucketAcl_invalid_canned_acl": PutBucketAcl_invalid_canned_acl,
"PutBucketAcl_invalid_acl_canned_and_acp": PutBucketAcl_invalid_acl_canned_and_acp,
"PutBucketAcl_invalid_acl_canned_and_grants": PutBucketAcl_invalid_acl_canned_and_grants,
"PutBucketAcl_invalid_acl_acp_and_grants": PutBucketAcl_invalid_acl_acp_and_grants,