Skip to content

Commit

Permalink
Merge pull request #776 from versity/copy-object-with-starting-slash
Browse files Browse the repository at this point in the history
feat: Added an integration test to cover the case to CopyObject with …
  • Loading branch information
benmcclelland authored Aug 29, 2024
2 parents cdb5187 + 9be4f27 commit 9cfc2c7
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
2 changes: 2 additions & 0 deletions tests/integration/group-tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -499,6 +499,7 @@ func TestAccessControl(s *S3Conf) {
AccessControl_bucket_ownership_to_user(s)
AccessControl_root_PutBucketAcl(s)
AccessControl_user_PutBucketAcl_with_policy_access(s)
AccessControl_copy_object_with_starting_slash_for_user(s)
}

type IntTests map[string]func(s *S3Conf) error
Expand Down Expand Up @@ -808,5 +809,6 @@ func GetIntTests() IntTests {
"AccessControl_bucket_ownership_to_user": AccessControl_bucket_ownership_to_user,
"AccessControl_root_PutBucketAcl": AccessControl_root_PutBucketAcl,
"AccessControl_user_PutBucketAcl_with_policy_access": AccessControl_user_PutBucketAcl_with_policy_access,
"AccessControl_copy_object_with_starting_slash_for_user": AccessControl_copy_object_with_starting_slash_for_user,
}
}
41 changes: 41 additions & 0 deletions tests/integration/tests.go
Original file line number Diff line number Diff line change
Expand Up @@ -9876,6 +9876,47 @@ func AccessControl_user_PutBucketAcl_with_policy_access(s *S3Conf) error {
}, withOwnership(types.ObjectOwnershipBucketOwnerPreferred))
}

func AccessControl_copy_object_with_starting_slash_for_user(s *S3Conf) error {
testName := "AccessControl_copy_object_with_starting_slash_for_user"
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
obj := "my-obj"
if err := putObjects(s3client, []string{obj}, bucket); err != nil {
return err
}

usr := user{
access: "grt1",
secret: "grt1secret",
role: "user",
}

if err := changeBucketsOwner(s, []string{bucket}, usr.access); err != nil {
return err
}

copySource := fmt.Sprintf("/%v/%v", bucket, obj)
meta := map[string]string{
"key1": "val1",
}

userClient := getUserS3Client(usr, s)
ctx, cancel := context.WithTimeout(context.Background(), shortTimeout)
_, err := userClient.CopyObject(ctx, &s3.CopyObjectInput{
Bucket: &bucket,
Key: &obj,
CopySource: &copySource,
Metadata: meta,
MetadataDirective: types.MetadataDirectiveReplace,
})
cancel()
if err != nil {
return err
}

return nil
})
}

// IAM related tests
// multi-user iam tests
func IAM_user_access_denied(s *S3Conf) error {
Expand Down

0 comments on commit 9cfc2c7

Please sign in to comment.