Upstream versity/versitygw state of the touched files before 44dc2e71ec
This commit is contained in:
1 parent
86ff18f8c1
commit
485130eb9f
6 files changed
+78
-97
No files matched your search
@@ -21,9 +21,7 @@ import (
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
"github.com/gofiber/fiber/v3"
|
||||
"github.com/versity/versitygw/auth"
|
||||
"github.com/versity/versitygw/debuglogger"
|
||||
"github.com/versity/versitygw/s3api/utils"
|
||||
"github.com/versity/versitygw/s3err"
|
||||
"github.com/versity/versitygw/s3response"
|
||||
)
|
||||
|
||||
@@ -633,17 +631,6 @@ func (c S3ApiController) ListObjects(ctx fiber.Ctx) (*Response, error) {
|
||||
}, err
|
||||
}
|
||||
|
||||
// start-after belongs to list-type=2 only; S3 rejects it here instead of
|
||||
// ignoring it
|
||||
if ctx.Request().URI().QueryArgs().Has("start-after") {
|
||||
debuglogger.Logf("start-after is not supported in ListObjects V1")
|
||||
return &Response{
|
||||
MetaOpts: &MetaOptions{
|
||||
BucketOwner: parsedAcl.Owner,
|
||||
},
|
||||
}, s3err.GetInvalidArgumentErr(s3err.InvalidArgStartAfter, "")
|
||||
}
|
||||
|
||||
maxkeys, err := utils.ParseMaxLimiter(maxkeysStr, utils.LimiterTypeMaxKeys)
|
||||
if err != nil {
|
||||
return &Response{
|
||||
|
||||
@@ -1212,24 +1212,6 @@ func TestS3ApiController_ListObjects(t *testing.T) {
|
||||
err: s3err.GetInvalidArgMaxLimiter(string(utils.LimiterTypeMaxKeys), "bla"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "start-after is not supported",
|
||||
input: testInput{
|
||||
locals: defaultLocals,
|
||||
beRes: listResult,
|
||||
queries: map[string]string{
|
||||
"start-after": "my-key",
|
||||
},
|
||||
},
|
||||
output: testOutput{
|
||||
response: &Response{
|
||||
MetaOpts: &MetaOptions{
|
||||
BucketOwner: "root",
|
||||
},
|
||||
},
|
||||
err: s3err.GetInvalidArgumentErr(s3err.InvalidArgStartAfter, ""),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "backend returns error",
|
||||
input: testInput{
|
||||
|
||||
@@ -123,7 +123,7 @@ var invalidArgErrResponses = map[InvalidArgErrorCode]InvalidArgumentError{
|
||||
ArgumentName: "x-amz-tagging",
|
||||
},
|
||||
InvalidArgAuthHeader: {
|
||||
Description: "Authorization header is invalid -- one and only one ' ' (space) required.",
|
||||
Description: "Authorization header is invalid -- one and only one ' ' (space) required",
|
||||
ArgumentName: "Authorization",
|
||||
},
|
||||
InvalidArgAuthorizationType: {
|
||||
@@ -401,13 +401,3 @@ func GetInvalidArgBucketRegion(value string) InvalidArgumentError {
|
||||
Description: description,
|
||||
}
|
||||
}
|
||||
|
||||
// GetInvalidArgResponseOverride is returned for a response-* query parameter
|
||||
// that isn't one of the response headers GetObject and HeadObject can override.
|
||||
func GetInvalidArgResponseOverride(name, value string) InvalidArgumentError {
|
||||
return InvalidArgumentError{
|
||||
ArgumentName: name,
|
||||
ArgumentValue: value,
|
||||
Description: fmt.Sprintf("%s is not in the set of overridable response headers. Please refer to the S3 API documentation for a complete list of overridable response headers.", name),
|
||||
}
|
||||
}
|
||||
@@ -17,8 +17,6 @@ package integration
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3"
|
||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||
@@ -340,33 +338,6 @@ func ListObjects_marker_not_from_obj_list(s *S3Conf) error {
|
||||
})
|
||||
}
|
||||
|
||||
// ListObjects_start_after_not_supported sends start-after without
|
||||
// list-type=2. S3 rejects it with InvalidArgument instead of ignoring it.
|
||||
func ListObjects_start_after_not_supported(s *S3Conf) error {
|
||||
testName := "ListObjects_start_after_not_supported"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
_, err := putObjects(s3client, []string{"bar", "foo"}, bucket)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// ListObjectsInput has no StartAfter field, so send the query directly
|
||||
req, err := createSignedReq(http.MethodGet, s.endpoint,
|
||||
fmt.Sprintf("%v?start-after=bar", bucket),
|
||||
s.awsID, s.awsSecret, "s3", s.awsRegion, "", nil, time.Now(), nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
resp, err := s.httpClient.Do(req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return checkHTTPResponseApiErr(resp, s3err.GetInvalidArgumentErr(s3err.InvalidArgStartAfter, ""))
|
||||
})
|
||||
}
|
||||
|
||||
func ListObjects_with_checksum(s *S3Conf) error {
|
||||
testName := "ListObjects_with_checksum"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
|
||||
@@ -149,6 +149,8 @@ func TestPutBucketTagging(ts *TestState) {
|
||||
ts.Run(PutBucketTagging_invalid_tags)
|
||||
ts.Run(PutBucketTagging_duplicate_keys)
|
||||
ts.Run(PutBucketTagging_tag_count_limit)
|
||||
ts.Run(PutBucketTagging_invalid_tag_error_fields)
|
||||
ts.Run(PutBucketTagging_multibyte_tags)
|
||||
ts.Run(PutBucketTagging_success)
|
||||
ts.Run(PutBucketTagging_success_status)
|
||||
}
|
||||
@@ -179,6 +181,7 @@ func TestPutObject(ts *TestState) {
|
||||
ts.Run(PutObject_plain_stores_aws_chunked_content_encoding)
|
||||
ts.Run(PutObject_unsigned_payload_with_aws_chunked_content_encoding)
|
||||
ts.Run(PutObject_tagging)
|
||||
ts.Run(PutObject_tagging_invalid_argument_value)
|
||||
ts.Run(PutObject_missing_object_lock_retention_config)
|
||||
ts.Run(PutObject_with_object_lock)
|
||||
ts.Run(PutObject_missing_bucket_lock)
|
||||
@@ -187,6 +190,7 @@ func TestPutObject(ts *TestState) {
|
||||
ts.Run(PutObject_object_lock_checksum_required)
|
||||
ts.Run(PutObject_default_retention_checksum_required)
|
||||
ts.Run(PutObject_past_retain_until_date)
|
||||
ts.Run(PutObject_object_lock_headers_validation)
|
||||
ts.Run(PutObject_invalid_retain_until_date)
|
||||
ts.Run(PutObject_conditional_writes)
|
||||
ts.Run(PutObject_should_combine_metadata)
|
||||
@@ -246,7 +250,6 @@ func TestHeadObject(ts *TestState) {
|
||||
ts.Run(HeadObject_overrides_success)
|
||||
ts.Run(HeadObject_overrides_presign_success)
|
||||
ts.Run(HeadObject_overrides_fail_public)
|
||||
ts.Run(HeadObject_overrides_fail_invalid_header)
|
||||
ts.Run(HeadObject_range_and_part_number)
|
||||
ts.Run(HeadObject_mp_part_number_exceeds_parts_count)
|
||||
ts.Run(HeadObject_mp_part_number_success)
|
||||
@@ -295,7 +298,6 @@ func TestGetObject(ts *TestState) {
|
||||
ts.Run(GetObject_overrides_success)
|
||||
ts.Run(GetObject_overrides_presign_success)
|
||||
ts.Run(GetObject_overrides_fail_public)
|
||||
ts.Run(GetObject_overrides_fail_invalid_header)
|
||||
ts.Run(GetObject_invalid_part_number)
|
||||
ts.Run(GetObject_range_and_part_number)
|
||||
ts.Run(GetObject_mp_part_number_exceeds_parts_count)
|
||||
@@ -336,6 +338,7 @@ func TestListObjectsV2(ts *TestState) {
|
||||
ts.Run(ListObjectsV2_both_start_after_and_continuation_token)
|
||||
ts.Run(ListObjectsV2_start_after_not_in_list)
|
||||
ts.Run(ListObjectsV2_start_after_empty_result)
|
||||
ts.Run(ListObjectsV2_start_after_continuation_token)
|
||||
ts.Run(ListObjectsV2_both_delimiter_and_prefix)
|
||||
ts.Run(ListObjectsV2_single_dir_object_with_delim_and_prefix)
|
||||
ts.Run(ListObjectsV2_truncated_common_prefixes)
|
||||
@@ -437,6 +440,7 @@ func TestPutObjectTagging(ts *TestState) {
|
||||
ts.Run(PutObjectTagging_duplicate_keys)
|
||||
ts.Run(PutObjectTagging_tag_count_limit)
|
||||
ts.Run(PutObjectTagging_invalid_tags)
|
||||
ts.Run(PutObjectTagging_invalid_tag_error_fields)
|
||||
ts.Run(PutObjectTagging_success)
|
||||
ts.Run(PutObjectTagging_empty_version_id)
|
||||
}
|
||||
@@ -559,6 +563,7 @@ func TestListMultipartUploads(ts *TestState) {
|
||||
ts.Run(ListMultipartUploads_keyMarker_not_from_list)
|
||||
ts.Run(ListMultipartUploads_upload_id_marker_with_key_marker)
|
||||
ts.Run(ListMultipartUploads_delimiter_truncated)
|
||||
ts.Run(ListMultipartUploads_upload_id_marker_truncated)
|
||||
ts.Run(ListMultipartUploads_prefix)
|
||||
ts.Run(ListMultipartUploads_both_delimiter_and_prefix)
|
||||
ts.Run(ListMultipartUploads_delimiter_no_matches)
|
||||
@@ -587,6 +592,7 @@ func TestCompleteMultipartUpload(ts *TestState) {
|
||||
ts.Run(CompleteMultipartUpload_default_content_type)
|
||||
ts.Run(CompleteMultipartUpload_overwrite_resets_attributes)
|
||||
ts.Run(CompleteMultipartUpload_invalid_ETag)
|
||||
ts.Run(CompleteMultipartUpload_invalid_ETag_error_fields)
|
||||
ts.Run(CompleteMultipartUpload_small_upload_size)
|
||||
ts.Run(CompleteMultipartUpload_empty_parts)
|
||||
ts.Run(CompleteMultipartUpload_missing_part_fields)
|
||||
@@ -616,6 +622,15 @@ func TestCompleteMultipartUpload(ts *TestState) {
|
||||
}
|
||||
ts.Run(CompleteMultipartUpload_success)
|
||||
ts.Run(CompleteMultipartUpload_already_completed)
|
||||
ts.Run(CompleteMultipartUpload_upload_of_another_bucket)
|
||||
ts.Run(CompleteMultipartUpload_upload_of_another_key)
|
||||
ts.Run(CompleteMultipartUpload_non_existing_upload_existing_key)
|
||||
ts.Run(CompleteMultipartUpload_aborted_upload_existing_key)
|
||||
ts.Run(CompleteMultipartUpload_already_completed_overwritten)
|
||||
// azure keeps no ETag of the completed parts to compare a retry with
|
||||
if !ts.conf.azureTests {
|
||||
ts.Run(CompleteMultipartUpload_already_completed_different_parts)
|
||||
}
|
||||
if !(ts.conf.azureTests || ts.conf.sidecarTests) {
|
||||
ts.Run(CompleteMultipartUpload_racey_success)
|
||||
ts.Run(CompleteMultipartUpload_racey_data_integrity)
|
||||
@@ -805,6 +820,8 @@ func TestPutObjectLockConfiguration(ts *TestState) {
|
||||
ts.Run(PutObjectLockConfiguration_invalid_mode)
|
||||
ts.Run(PutObjectLockConfiguration_both_years_and_days)
|
||||
ts.Run(PutObjectLockConfiguration_invalid_years_days)
|
||||
ts.Run(PutObjectLockConfiguration_default_retention_missing_period)
|
||||
ts.Run(PutObjectLockConfiguration_rule_without_default_retention)
|
||||
ts.Run(PutObjectLockConfiguration_success)
|
||||
}
|
||||
|
||||
@@ -840,6 +857,7 @@ func TestGetObjectRetention(ts *TestState) {
|
||||
ts.Run(GetObjectRetention_disabled_lock)
|
||||
ts.Run(GetObjectRetention_unset_config)
|
||||
ts.Run(GetObjectRetention_success)
|
||||
ts.Run(GetObjectRetention_retain_until_date_format)
|
||||
ts.Run(GetObjectRetention_empty_version_id)
|
||||
}
|
||||
|
||||
@@ -939,7 +957,6 @@ func TestSSECTransport(ts *TestState) {
|
||||
}
|
||||
|
||||
func TestWORMProtection(ts *TestState) {
|
||||
ts.Run(WORMProtection_bucket_object_lock_configuration_compliance_mode)
|
||||
ts.Run(WORMProtection_bucket_object_lock_configuration_governance_mode)
|
||||
ts.Run(WORMProtection_bucket_object_lock_governance_bypass_delete)
|
||||
ts.Run(WORMProtection_bucket_object_lock_governance_bypass_delete_multiple)
|
||||
@@ -958,6 +975,11 @@ func TestWORMProtection(ts *TestState) {
|
||||
ts.Run(WORMProtection_object_lock_retention_governance_bypass_delete_mul)
|
||||
ts.Run(WORMProtection_object_lock_legal_hold_locked)
|
||||
ts.Run(WORMProtection_root_bypass_governance_retention_delete_object)
|
||||
ts.Run(WORMProtection_default_retention_applies_to_new_objects)
|
||||
ts.Run(WORMProtection_default_retention_survives_rule_change)
|
||||
ts.Run(WORMProtection_default_retention_explicit_lock_settings)
|
||||
ts.Run(WORMProtection_default_retention_set_at_create_multipart_upload)
|
||||
ts.Run(WORMProtection_legal_hold_outlives_expired_retention)
|
||||
}
|
||||
|
||||
func TestFullFlow(ts *TestState) {
|
||||
@@ -1809,6 +1831,7 @@ func TestS3IAMAccessControl(ts *TestState) {
|
||||
ts.Run(S3IAMAccessControl_identity_policy_bucket_vs_object_arn)
|
||||
ts.Run(S3IAMAccessControl_post_object_identity_policy_resource_scoping)
|
||||
ts.Run(S3IAMAccessControl_post_object_tagging_identity_policy)
|
||||
ts.Run(S3IAMAccessControl_post_object_lock_identity_policy)
|
||||
ts.Run(S3IAMAccessControl_identity_policy_not_action_and_not_resource)
|
||||
ts.Run(S3IAMAccessControl_identity_policy_explicit_deny_wins)
|
||||
ts.Run(S3IAMAccessControl_multiple_inline_policies_combine)
|
||||
@@ -1989,6 +2012,10 @@ func TestAccessControl(ts *TestState) {
|
||||
ts.Run(AccessControl_bucket_policy_condition_if_match_value)
|
||||
ts.Run(AccessControl_bucket_policy_condition_if_match_delete_object)
|
||||
ts.Run(AccessControl_bucket_policy_condition_if_match_versioned_delete)
|
||||
ts.Run(AccessControl_owner_deny_only_policy_keeps_access)
|
||||
ts.Run(AccessControl_owner_policy_lockout_protection)
|
||||
ts.Run(AccessControl_acl_grant_with_bucket_policy)
|
||||
ts.Run(AccessControl_acl_grant_excludes_bucket_configuration)
|
||||
}
|
||||
|
||||
func TestPublicBuckets(ts *TestState) {
|
||||
@@ -2015,6 +2042,7 @@ func TestPublicBuckets(ts *TestState) {
|
||||
ts.Run(PublicBucket_put_object_default_retention)
|
||||
ts.Run(PublicBucket_upload_part_object_lock)
|
||||
ts.Run(PublicBucket_post_object_tagging)
|
||||
ts.Run(PublicBucket_post_object_lock)
|
||||
if ts.conf.versioningEnabled {
|
||||
ts.Run(PublicBucket_object_version_actions)
|
||||
ts.Run(PublicBucket_object_version_actions_public_acl)
|
||||
@@ -2033,7 +2061,7 @@ func TestVersioning(ts *TestState) {
|
||||
ts.Run(GetBucketVersioning_success)
|
||||
ts.Run(GetBucketVersioning_non_owner_access_denied)
|
||||
ts.Run(GetBucketVersioning_with_policy_access)
|
||||
ts.Run(GetBucketVersioning_with_acl_access)
|
||||
ts.Run(GetBucketVersioning_acl_grant_access_denied)
|
||||
// DeleteBucket action
|
||||
ts.Run(Versioning_DeleteBucket_not_empty)
|
||||
// PutObject action
|
||||
@@ -2136,6 +2164,7 @@ func TestVersioning(ts *TestState) {
|
||||
ts.Run(Versioning_Multipart_Upload_suspended_overwrite_versioned_object)
|
||||
ts.Run(Versioning_Multipart_Upload_overwrite_keeps_previous_version_metadata)
|
||||
ts.Run(Versioning_Multipart_Upload_conditional_writes_over_delete_marker)
|
||||
ts.Run(Versioning_Multipart_Upload_already_completed)
|
||||
ts.Run(Versioning_UploadPartCopy_invalid_versionId)
|
||||
ts.Run(Versioning_UploadPartCopy_encoded_versionid_separator_invalid_versionId)
|
||||
ts.Run(Versioning_UploadPartCopy_non_existing_versionId)
|
||||
@@ -2246,6 +2275,10 @@ func TestPostObject(ts *TestState) {
|
||||
ts.Run(PostObject_invalid_tagging)
|
||||
ts.Run(PostObject_success_with_tagging)
|
||||
ts.Run(PostObject_success_double_dash_boundary)
|
||||
ts.Run(PostObject_object_lock_success)
|
||||
ts.Run(PostObject_object_lock_invalid_fields)
|
||||
ts.Run(PostObject_object_lock_missing_bucket_config)
|
||||
ts.Run(PostObject_object_lock_default_retention)
|
||||
if !ts.conf.azureTests {
|
||||
ts.Run(PostObject_invalid_checksum_value)
|
||||
ts.Run(PostObject_invalid_checksum_algorithm)
|
||||
@@ -2359,6 +2392,7 @@ func GetIntTests() IntTests {
|
||||
"S3IAMAccessControl_identity_policy_bucket_vs_object_arn": S3IAMAccessControl_identity_policy_bucket_vs_object_arn,
|
||||
"S3IAMAccessControl_post_object_identity_policy_resource_scoping": S3IAMAccessControl_post_object_identity_policy_resource_scoping,
|
||||
"S3IAMAccessControl_post_object_tagging_identity_policy": S3IAMAccessControl_post_object_tagging_identity_policy,
|
||||
"S3IAMAccessControl_post_object_lock_identity_policy": S3IAMAccessControl_post_object_lock_identity_policy,
|
||||
"S3IAMAccessControl_identity_policy_not_action_and_not_resource": S3IAMAccessControl_identity_policy_not_action_and_not_resource,
|
||||
"S3IAMAccessControl_identity_policy_explicit_deny_wins": S3IAMAccessControl_identity_policy_explicit_deny_wins,
|
||||
"S3IAMAccessControl_multiple_inline_policies_combine": S3IAMAccessControl_multiple_inline_policies_combine,
|
||||
@@ -2951,6 +2985,7 @@ func GetIntTests() IntTests {
|
||||
"PutObject_default_retention_checksum_required": PutObject_default_retention_checksum_required,
|
||||
"PutObject_past_retain_until_date": PutObject_past_retain_until_date,
|
||||
"PutObject_invalid_retain_until_date": PutObject_invalid_retain_until_date,
|
||||
"PutObject_object_lock_headers_validation": PutObject_object_lock_headers_validation,
|
||||
"PutObject_conditional_writes": PutObject_conditional_writes,
|
||||
"PutObject_should_combine_metadata": PutObject_should_combine_metadata,
|
||||
"PutObject_md5": PutObject_md5,
|
||||
@@ -3019,6 +3054,8 @@ func GetIntTests() IntTests {
|
||||
"PutBucketTagging_invalid_tags": PutBucketTagging_invalid_tags,
|
||||
"PutBucketTagging_duplicate_keys": PutBucketTagging_duplicate_keys,
|
||||
"PutBucketTagging_tag_count_limit": PutBucketTagging_tag_count_limit,
|
||||
"PutBucketTagging_invalid_tag_error_fields": PutBucketTagging_invalid_tag_error_fields,
|
||||
"PutBucketTagging_multibyte_tags": PutBucketTagging_multibyte_tags,
|
||||
"PutBucketTagging_success": PutBucketTagging_success,
|
||||
"PutBucketTagging_success_status": PutBucketTagging_success_status,
|
||||
"GetBucketTagging_non_existing_bucket": GetBucketTagging_non_existing_bucket,
|
||||
@@ -3038,6 +3075,7 @@ func GetIntTests() IntTests {
|
||||
"PutObject_plain_stores_aws_chunked_content_encoding": PutObject_plain_stores_aws_chunked_content_encoding,
|
||||
"PutObject_unsigned_payload_with_aws_chunked_content_encoding": PutObject_unsigned_payload_with_aws_chunked_content_encoding,
|
||||
"PutObject_tagging": PutObject_tagging,
|
||||
"PutObject_tagging_invalid_argument_value": PutObject_tagging_invalid_argument_value,
|
||||
"PutObject_success": PutObject_success,
|
||||
"PutObject_default_content_type": PutObject_default_content_type,
|
||||
"PutObject_overwrite_resets_attributes": PutObject_overwrite_resets_attributes,
|
||||
@@ -3066,7 +3104,6 @@ func GetIntTests() IntTests {
|
||||
"HeadObject_overrides_success": HeadObject_overrides_success,
|
||||
"HeadObject_overrides_presign_success": HeadObject_overrides_presign_success,
|
||||
"HeadObject_overrides_fail_public": HeadObject_overrides_fail_public,
|
||||
"HeadObject_overrides_fail_invalid_header": HeadObject_overrides_fail_invalid_header,
|
||||
"HeadObject_range_and_part_number": HeadObject_range_and_part_number,
|
||||
"HeadObject_mp_part_number_exceeds_parts_count": HeadObject_mp_part_number_exceeds_parts_count,
|
||||
"HeadObject_mp_part_number_success": HeadObject_mp_part_number_success,
|
||||
@@ -3103,7 +3140,6 @@ func GetIntTests() IntTests {
|
||||
"GetObject_overrides_success": GetObject_overrides_success,
|
||||
"GetObject_overrides_presign_success": GetObject_overrides_presign_success,
|
||||
"GetObject_overrides_fail_public": GetObject_overrides_fail_public,
|
||||
"GetObject_overrides_fail_invalid_header": GetObject_overrides_fail_invalid_header,
|
||||
"GetObject_invalid_part_number": GetObject_invalid_part_number,
|
||||
"GetObject_range_and_part_number": GetObject_range_and_part_number,
|
||||
"GetObject_mp_part_number_exceeds_parts_count": GetObject_mp_part_number_exceeds_parts_count,
|
||||
@@ -3140,6 +3176,7 @@ func GetIntTests() IntTests {
|
||||
"ListObjectsV2_both_start_after_and_continuation_token": ListObjectsV2_both_start_after_and_continuation_token,
|
||||
"ListObjectsV2_start_after_not_in_list": ListObjectsV2_start_after_not_in_list,
|
||||
"ListObjectsV2_start_after_empty_result": ListObjectsV2_start_after_empty_result,
|
||||
"ListObjectsV2_start_after_continuation_token": ListObjectsV2_start_after_continuation_token,
|
||||
"ListObjectsV2_both_delimiter_and_prefix": ListObjectsV2_both_delimiter_and_prefix,
|
||||
"ListObjectsV2_single_dir_object_with_delim_and_prefix": ListObjectsV2_single_dir_object_with_delim_and_prefix,
|
||||
"ListObjectsV2_truncated_common_prefixes": ListObjectsV2_truncated_common_prefixes,
|
||||
@@ -3220,6 +3257,7 @@ func GetIntTests() IntTests {
|
||||
"PutObjectTagging_duplicate_keys": PutObjectTagging_duplicate_keys,
|
||||
"PutObjectTagging_tag_count_limit": PutObjectTagging_tag_count_limit,
|
||||
"PutObjectTagging_invalid_tags": PutObjectTagging_invalid_tags,
|
||||
"PutObjectTagging_invalid_tag_error_fields": PutObjectTagging_invalid_tag_error_fields,
|
||||
"PutObjectTagging_success": PutObjectTagging_success,
|
||||
"PutObjectTagging_empty_version_id": PutObjectTagging_empty_version_id,
|
||||
"GetObjectTagging_non_existing_object": GetObjectTagging_non_existing_object,
|
||||
@@ -3309,6 +3347,7 @@ func GetIntTests() IntTests {
|
||||
"ListMultipartUploads_keyMarker_not_from_list": ListMultipartUploads_keyMarker_not_from_list,
|
||||
"ListMultipartUploads_upload_id_marker_with_key_marker": ListMultipartUploads_upload_id_marker_with_key_marker,
|
||||
"ListMultipartUploads_delimiter_truncated": ListMultipartUploads_delimiter_truncated,
|
||||
"ListMultipartUploads_upload_id_marker_truncated": ListMultipartUploads_upload_id_marker_truncated,
|
||||
"ListMultipartUploads_prefix": ListMultipartUploads_prefix,
|
||||
"ListMultipartUploads_both_delimiter_and_prefix": ListMultipartUploads_both_delimiter_and_prefix,
|
||||
"ListMultipartUploads_with_upload_id": ListMultipartUploads_with_upload_id,
|
||||
@@ -3326,6 +3365,7 @@ func GetIntTests() IntTests {
|
||||
"CompleteMultipartUpload_default_content_type": CompleteMultipartUpload_default_content_type,
|
||||
"CompleteMultipartUpload_overwrite_resets_attributes": CompleteMultipartUpload_overwrite_resets_attributes,
|
||||
"CompleteMultipartUpload_invalid_ETag": CompleteMultipartUpload_invalid_ETag,
|
||||
"CompleteMultipartUpload_invalid_ETag_error_fields": CompleteMultipartUpload_invalid_ETag_error_fields,
|
||||
"CompleteMultipartUpload_small_upload_size": CompleteMultipartUpload_small_upload_size,
|
||||
"CompleteMultipartUpload_empty_parts": CompleteMultipartUpload_empty_parts,
|
||||
"CompleteMultipartUpload_missing_part_fields": CompleteMultipartUpload_missing_part_fields,
|
||||
@@ -3353,6 +3393,12 @@ func GetIntTests() IntTests {
|
||||
"CompleteMultipartUpload_success": CompleteMultipartUpload_success,
|
||||
"CompleteMultipartUpload_data_integrity_etag": CompleteMultipartUpload_data_integrity_etag,
|
||||
"CompleteMultipartUpload_already_completed": CompleteMultipartUpload_already_completed,
|
||||
"CompleteMultipartUpload_upload_of_another_bucket": CompleteMultipartUpload_upload_of_another_bucket,
|
||||
"CompleteMultipartUpload_upload_of_another_key": CompleteMultipartUpload_upload_of_another_key,
|
||||
"CompleteMultipartUpload_non_existing_upload_existing_key": CompleteMultipartUpload_non_existing_upload_existing_key,
|
||||
"CompleteMultipartUpload_aborted_upload_existing_key": CompleteMultipartUpload_aborted_upload_existing_key,
|
||||
"CompleteMultipartUpload_already_completed_different_parts": CompleteMultipartUpload_already_completed_different_parts,
|
||||
"CompleteMultipartUpload_already_completed_overwritten": CompleteMultipartUpload_already_completed_overwritten,
|
||||
"CompleteMultipartUpload_racey_success": CompleteMultipartUpload_racey_success,
|
||||
"CompleteMultipartUpload_racey_data_integrity": CompleteMultipartUpload_racey_data_integrity,
|
||||
"PutBucketAcl_non_existing_bucket": PutBucketAcl_non_existing_bucket,
|
||||
@@ -3490,6 +3536,8 @@ func GetIntTests() IntTests {
|
||||
"PutObjectLockConfiguration_invalid_mode": PutObjectLockConfiguration_invalid_mode,
|
||||
"PutObjectLockConfiguration_both_years_and_days": PutObjectLockConfiguration_both_years_and_days,
|
||||
"PutObjectLockConfiguration_invalid_years_days": PutObjectLockConfiguration_invalid_years_days,
|
||||
"PutObjectLockConfiguration_default_retention_missing_period": PutObjectLockConfiguration_default_retention_missing_period,
|
||||
"PutObjectLockConfiguration_rule_without_default_retention": PutObjectLockConfiguration_rule_without_default_retention,
|
||||
"PutObjectLockConfiguration_success": PutObjectLockConfiguration_success,
|
||||
"GetObjectLockConfiguration_non_existing_bucket": GetObjectLockConfiguration_non_existing_bucket,
|
||||
"GetObjectLockConfiguration_unset_config": GetObjectLockConfiguration_unset_config,
|
||||
@@ -3516,6 +3564,7 @@ func GetIntTests() IntTests {
|
||||
"GetObjectRetention_disabled_lock": GetObjectRetention_disabled_lock,
|
||||
"GetObjectRetention_unset_config": GetObjectRetention_unset_config,
|
||||
"GetObjectRetention_success": GetObjectRetention_success,
|
||||
"GetObjectRetention_retain_until_date_format": GetObjectRetention_retain_until_date_format,
|
||||
"GetObjectRetention_empty_version_id": GetObjectRetention_empty_version_id,
|
||||
"PutObjectLegalHold_non_existing_bucket": PutObjectLegalHold_non_existing_bucket,
|
||||
"PutObjectLegalHold_non_existing_object": PutObjectLegalHold_non_existing_object,
|
||||
@@ -3568,7 +3617,6 @@ func GetIntTests() IntTests {
|
||||
"GetBucketAccelerateConfiguration_not_implemented": GetBucketAccelerateConfiguration_not_implemented,
|
||||
"PutObjectAcl_not_implemented": PutObjectAcl_not_implemented,
|
||||
"GetObjectAcl_not_implemented": GetObjectAcl_not_implemented,
|
||||
"WORMProtection_bucket_object_lock_configuration_compliance_mode": WORMProtection_bucket_object_lock_configuration_compliance_mode,
|
||||
"WORMProtection_bucket_object_lock_configuration_governance_mode": WORMProtection_bucket_object_lock_configuration_governance_mode,
|
||||
"WORMProtection_bucket_object_lock_governance_bypass_delete": WORMProtection_bucket_object_lock_governance_bypass_delete,
|
||||
"WORMProtection_bucket_object_lock_governance_bypass_delete_multiple": WORMProtection_bucket_object_lock_governance_bypass_delete_multiple,
|
||||
@@ -3587,6 +3635,11 @@ func GetIntTests() IntTests {
|
||||
"WORMProtection_object_lock_retention_governance_bypass_delete_mul": WORMProtection_object_lock_retention_governance_bypass_delete_mul,
|
||||
"WORMProtection_object_lock_legal_hold_locked": WORMProtection_object_lock_legal_hold_locked,
|
||||
"WORMProtection_root_bypass_governance_retention_delete_object": WORMProtection_root_bypass_governance_retention_delete_object,
|
||||
"WORMProtection_default_retention_applies_to_new_objects": WORMProtection_default_retention_applies_to_new_objects,
|
||||
"WORMProtection_default_retention_survives_rule_change": WORMProtection_default_retention_survives_rule_change,
|
||||
"WORMProtection_default_retention_explicit_lock_settings": WORMProtection_default_retention_explicit_lock_settings,
|
||||
"WORMProtection_default_retention_set_at_create_multipart_upload": WORMProtection_default_retention_set_at_create_multipart_upload,
|
||||
"WORMProtection_legal_hold_outlives_expired_retention": WORMProtection_legal_hold_outlives_expired_retention,
|
||||
"PutObject_overwrite_dir_obj": PutObject_overwrite_dir_obj,
|
||||
"PutObject_overwrite_file_obj": PutObject_overwrite_file_obj,
|
||||
"PutObject_overwrite_file_obj_with_nested_obj": PutObject_overwrite_file_obj_with_nested_obj,
|
||||
@@ -3657,6 +3710,10 @@ func GetIntTests() IntTests {
|
||||
"AccessControl_bucket_policy_condition_if_match_value": AccessControl_bucket_policy_condition_if_match_value,
|
||||
"AccessControl_bucket_policy_condition_if_match_delete_object": AccessControl_bucket_policy_condition_if_match_delete_object,
|
||||
"AccessControl_bucket_policy_condition_if_match_versioned_delete": AccessControl_bucket_policy_condition_if_match_versioned_delete,
|
||||
"AccessControl_owner_deny_only_policy_keeps_access": AccessControl_owner_deny_only_policy_keeps_access,
|
||||
"AccessControl_owner_policy_lockout_protection": AccessControl_owner_policy_lockout_protection,
|
||||
"AccessControl_acl_grant_with_bucket_policy": AccessControl_acl_grant_with_bucket_policy,
|
||||
"AccessControl_acl_grant_excludes_bucket_configuration": AccessControl_acl_grant_excludes_bucket_configuration,
|
||||
"PublicBucket_default_private_bucket": PublicBucket_default_private_bucket,
|
||||
"PublicBucket_public_bucket_policy": PublicBucket_public_bucket_policy,
|
||||
"PublicBucket_public_object_policy": PublicBucket_public_object_policy,
|
||||
@@ -3673,6 +3730,7 @@ func GetIntTests() IntTests {
|
||||
"PublicBucket_put_object_default_retention": PublicBucket_put_object_default_retention,
|
||||
"PublicBucket_upload_part_object_lock": PublicBucket_upload_part_object_lock,
|
||||
"PublicBucket_post_object_tagging": PublicBucket_post_object_tagging,
|
||||
"PublicBucket_post_object_lock": PublicBucket_post_object_lock,
|
||||
"PublicBucket_object_version_actions": PublicBucket_object_version_actions,
|
||||
"PublicBucket_object_version_actions_public_acl": PublicBucket_object_version_actions_public_acl,
|
||||
"PutBucketVersioning_non_existing_bucket": PutBucketVersioning_non_existing_bucket,
|
||||
@@ -3684,7 +3742,7 @@ func GetIntTests() IntTests {
|
||||
"GetBucketVersioning_success": GetBucketVersioning_success,
|
||||
"GetBucketVersioning_non_owner_access_denied": GetBucketVersioning_non_owner_access_denied,
|
||||
"GetBucketVersioning_with_policy_access": GetBucketVersioning_with_policy_access,
|
||||
"GetBucketVersioning_with_acl_access": GetBucketVersioning_with_acl_access,
|
||||
"GetBucketVersioning_acl_grant_access_denied": GetBucketVersioning_acl_grant_access_denied,
|
||||
"Versioning_DeleteBucket_not_empty": Versioning_DeleteBucket_not_empty,
|
||||
"Versioning_PutObject_suspended_null_versionId_obj": Versioning_PutObject_suspended_null_versionId_obj,
|
||||
"Versioning_PutObject_null_versionId_obj": Versioning_PutObject_null_versionId_obj,
|
||||
@@ -3771,6 +3829,7 @@ func GetIntTests() IntTests {
|
||||
"Versioning_Multipart_Upload_suspended_overwrite_versioned_object": Versioning_Multipart_Upload_suspended_overwrite_versioned_object,
|
||||
"Versioning_Multipart_Upload_overwrite_keeps_previous_version_metadata": Versioning_Multipart_Upload_overwrite_keeps_previous_version_metadata,
|
||||
"Versioning_Multipart_Upload_conditional_writes_over_delete_marker": Versioning_Multipart_Upload_conditional_writes_over_delete_marker,
|
||||
"Versioning_Multipart_Upload_already_completed": Versioning_Multipart_Upload_already_completed,
|
||||
"Versioning_UploadPartCopy_invalid_versionId": Versioning_UploadPartCopy_invalid_versionId,
|
||||
"Versioning_UploadPartCopy_encoded_versionid_separator_invalid_versionId": Versioning_UploadPartCopy_encoded_versionid_separator_invalid_versionId,
|
||||
"Versioning_UploadPartCopy_non_existing_versionId": Versioning_UploadPartCopy_non_existing_versionId,
|
||||
@@ -3895,5 +3954,9 @@ func GetIntTests() IntTests {
|
||||
"PostObject_multiple_checksum_headers": PostObject_multiple_checksum_headers,
|
||||
"PostObject_checksums_success": PostObject_checksums_success,
|
||||
"PostObject_success_double_dash_boundary": PostObject_success_double_dash_boundary,
|
||||
"PostObject_object_lock_success": PostObject_object_lock_success,
|
||||
"PostObject_object_lock_invalid_fields": PostObject_object_lock_invalid_fields,
|
||||
"PostObject_object_lock_missing_bucket_config": PostObject_object_lock_missing_bucket_config,
|
||||
"PostObject_object_lock_default_retention": PostObject_object_lock_default_retention,
|
||||
}
|
||||
}
|
||||
@@ -88,23 +88,11 @@ source ./tests/drivers/objects_and_versions.sh
|
||||
|
||||
# tags: curl,ListObjectsV2,bucket-region,x-amz-bucket-region
|
||||
@test "REST - ListObjectsV2 - includes bucket header" {
|
||||
if [ "$DIRECT" != "true" ]; then
|
||||
skip "https://github.com/versity/versitygw/issues/1814"
|
||||
fi
|
||||
run get_bucket_name "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name="$output"
|
||||
local bucket_name test_file test_file_two
|
||||
|
||||
run get_file_name
|
||||
assert_success
|
||||
test_file="$output"
|
||||
|
||||
run get_file_name
|
||||
assert_success
|
||||
test_file_two="$output"
|
||||
|
||||
run setup_bucket_and_add_files "$bucket_name" "$test_file" "$test_file_two"
|
||||
run setup_bucket_and_add_files_v3 "$BUCKET_ONE_NAME" 2
|
||||
assert_success
|
||||
read -r bucket_name test_file test_file_two <<< "$output"
|
||||
|
||||
run send_rest_go_command_check_header_key_and_value "200" "x-amz-bucket-region" "$AWS_REGION" "-method" "GET" \
|
||||
"-bucketName" "$bucket_name" "-query" "list-type=2"
|
||||
@@ -260,6 +248,9 @@ source ./tests/drivers/objects_and_versions.sh
|
||||
|
||||
# tags: curl,ListObjects,start-after,invalid-query
|
||||
@test "ListObjectsV1 - start-after - error" {
|
||||
if [ "$DIRECT" != "true" ]; then
|
||||
skip "https://github.com/versity/versitygw/issues/2004"
|
||||
fi
|
||||
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 2
|
||||
assert_success
|
||||
read -r bucket_name file_one file_two <<< "$output"
|
||||
@@ -276,9 +267,6 @@ source ./tests/drivers/objects_and_versions.sh
|
||||
|
||||
# tags: curl,ListObjectsV2,start-after,continuation-token
|
||||
@test "ListObjectsV1 - start-after - doesn't include continuation token" {
|
||||
if [ "$DIRECT" != "true" ]; then
|
||||
skip "https://github.com/versity/versitygw/issues/2007"
|
||||
fi
|
||||
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 2
|
||||
assert_success
|
||||
read -r bucket_name file_one file_two <<< "$output"
|
||||
|
||||
Reference in new issue
Block a user