// Copyright 2023 Versity Software // This file is licensed under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. package integration func TestAuthentication(ts *TestState) { ts.Run(Authentication_invalid_auth_header) ts.Run(Authentication_unsupported_signature_version) ts.Run(Authentication_missing_components) ts.Run(Authentication_malformed_component) ts.Run(Authentication_missing_credentials) ts.Run(Authentication_missing_signedheaders) ts.Run(Authentication_missing_signature) ts.Run(Authentication_malformed_credential) ts.Run(Authentication_credentials_invalid_terminal) ts.Run(Authentication_credentials_incorrect_service) ts.Run(Authentication_credentials_incorrect_region) ts.Run(Authentication_credentials_invalid_date) ts.Run(Authentication_credentials_future_date) ts.Run(Authentication_credentials_past_date) ts.Run(Authentication_credentials_non_existing_access_key) //TODO: handle the case with signed headers ts.Run(Authentication_missing_date_header) ts.Run(Authentication_invalid_date_header) ts.Run(Authentication_date_mismatch) ts.Run(Authentication_incorrect_payload_hash) ts.Run(Authentication_invalid_sha256_payload_hash) ts.Run(Authentication_md5) ts.Run(Authentication_signature_error_incorrect_secret_key) } func TestPresignedAuthentication(ts *TestState) { ts.Run(PresignedAuth_security_token_not_supported) ts.Run(PresignedAuth_unsupported_algorithm) ts.Run(PresignedAuth_ECDSA_not_supported) ts.Run(PresignedAuth_missing_signature_query_param) ts.Run(PresignedAuth_missing_credentials_query_param) ts.Run(PresignedAuth_malformed_creds_invalid_parts) ts.Run(PresignedAuth_creds_invalid_terminal) ts.Run(PresignedAuth_creds_incorrect_service) ts.Run(PresignedAuth_creds_incorrect_region) ts.Run(PresignedAuth_creds_invalid_date) ts.Run(PresignedAuth_missing_date_query) ts.Run(PresignedAuth_dates_mismatch) ts.Run(PresignedAuth_non_existing_access_key_id) ts.Run(PresignedAuth_missing_signed_headers_query_param) ts.Run(PresignedAuth_missing_expiration_query_param) ts.Run(PresignedAuth_invalid_expiration_query_param) ts.Run(PresignedAuth_negative_expiration_query_param) ts.Run(PresignedAuth_exceeding_expiration_query_param) ts.Run(PresignedAuth_expired_request) ts.Run(PresignedAuth_incorrect_secret_key) ts.Run(PresignedAuth_PutObject_success) ts.Run(PresignedAuth_Put_GetObject_with_data) if !ts.conf.azureTests { ts.Run(PresignedAuth_Put_GetObject_with_UTF8_chars) } ts.Run(PresignedAuth_UploadPart) } func TestCreateBucket(ts *TestState) { ts.Run(CreateBucket_invalid_bucket_name) ts.Run(CreateBucket_existing_bucket) ts.Run(CreateBucket_owned_by_you) ts.Run(CreateBucket_invalid_ownership) ts.Run(CreateBucket_ownership_with_acl) ts.Run(CreateBucket_as_user) ts.Run(CreateBucket_default_acl) ts.Run(CreateBucket_non_default_acl) ts.Run(CreateDeleteBucket_success) ts.Run(CreateBucket_default_object_lock) ts.Run(CreateBucket_invalid_location_constraint) ts.Run(CreateBucket_long_tags) 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) { ts.Run(HeadBucket_non_existing_bucket) ts.Run(HeadBucket_success) } func TestListBuckets(ts *TestState) { ts.Sync(ListBuckets_as_user) ts.Sync(ListBuckets_as_admin) ts.Sync(ListBuckets_with_prefix) ts.Sync(ListBuckets_invalid_max_buckets) ts.Sync(ListBuckets_truncated) ts.Sync(ListBuckets_success) ts.Sync(ListBuckets_empty_success) } func TestDeleteBucket(ts *TestState) { ts.Run(DeleteBucket_non_existing_bucket) ts.Run(DeleteBucket_non_empty_bucket) ts.Run(DeleteBucket_success_status_code) ts.Run(DeleteBucket_incorrect_expected_bucket_owner) } func TestPutBucketOwnershipControls(ts *TestState) { ts.Run(PutBucketOwnershipControls_non_existing_bucket) ts.Run(PutBucketOwnershipControls_multiple_rules) ts.Run(PutBucketOwnershipControls_invalid_ownership) ts.Run(PutBucketOwnershipControls_success) } func TestGetBucketOwnershipControls(ts *TestState) { ts.Run(GetBucketOwnershipControls_non_existing_bucket) ts.Run(GetBucketOwnershipControls_default_ownership) ts.Run(GetBucketOwnershipControls_success) } func TestDeleteBucketOwnershipControls(ts *TestState) { ts.Run(DeleteBucketOwnershipControls_non_existing_bucket) ts.Run(DeleteBucketOwnershipControls_success) } func TestPutBucketTagging(ts *TestState) { ts.Run(PutBucketTagging_non_existing_bucket) ts.Run(PutBucketTagging_long_tags) ts.Run(PutBucketTagging_invalid_tags) ts.Run(PutBucketTagging_duplicate_keys) ts.Run(PutBucketTagging_tag_count_limit) ts.Run(PutBucketTagging_success) ts.Run(PutBucketTagging_success_status) } func TestGetBucketTagging(ts *TestState) { ts.Run(GetBucketTagging_non_existing_bucket) ts.Run(GetBucketTagging_unset_tags) ts.Run(GetBucketTagging_success) } func TestDeleteBucketTagging(ts *TestState) { ts.Run(DeleteBucketTagging_non_existing_object) ts.Run(DeleteBucketTagging_success_status) ts.Run(DeleteBucketTagging_success) } func TestGetBucketLocation(ts *TestState) { ts.Run(GetBucketLocation_success) ts.Run(GetBucketLocation_non_exist) ts.Run(GetBucketLocation_no_access) } func TestPutObject(ts *TestState) { ts.Run(PutObject_non_existing_bucket) ts.Run(PutObject_special_chars) ts.Run(PutObject_tagging) ts.Run(PutObject_missing_object_lock_retention_config) ts.Run(PutObject_with_object_lock) ts.Run(PutObject_invalid_legal_hold) ts.Run(PutObject_invalid_object_lock_mode) ts.Run(PutObject_conditional_writes) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(PutObject_checksum_algorithm_and_header_mismatch) ts.Run(PutObject_multiple_checksum_headers) ts.Run(PutObject_invalid_checksum_header) ts.Run(PutObject_incorrect_checksums) ts.Run(PutObject_default_checksum) ts.Run(PutObject_checksums_success) // azure applies some encoding mechanisms. ts.Run(PutObject_false_negative_object_names) // azure doesn't support these metadata characters ts.Run(PutObject_with_metadata) } ts.Run(PutObject_success) if !ts.conf.versioningEnabled { ts.Run(PutObject_racey_success) } ts.Run(PutObject_invalid_credentials) ts.Run(PutObject_invalid_object_names) } func TestHeadObject(ts *TestState) { ts.Run(HeadObject_non_existing_object) ts.Run(HeadObject_invalid_part_number) ts.Run(HeadObject_part_number_not_supported) ts.Run(HeadObject_directory_object_noslash) ts.Run(HeadObject_non_existing_dir_object) ts.Run(HeadObject_invalid_parent_dir) ts.Run(HeadObject_with_range) ts.Run(HeadObject_zero_len_with_range) ts.Run(HeadObject_dir_with_range) ts.Run(HeadObject_conditional_reads) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(HeadObject_not_enabled_checksum_mode) ts.Run(HeadObject_checksums) } ts.Run(HeadObject_success) } func TestGetObjectAttributes(ts *TestState) { ts.Run(GetObjectAttributes_non_existing_bucket) ts.Run(GetObjectAttributes_non_existing_object) ts.Run(GetObjectAttributes_invalid_attrs) ts.Run(GetObjectAttributes_invalid_parent) ts.Run(GetObjectAttributes_invalid_single_attribute) ts.Run(GetObjectAttributes_empty_attrs) ts.Run(GetObjectAttributes_existing_object) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(GetObjectAttributes_checksums) } } func TestGetObject(ts *TestState) { ts.Run(GetObject_non_existing_key) ts.Run(GetObject_directory_object_noslash) ts.Run(GetObject_with_range) ts.Run(GetObject_zero_len_with_range) ts.Run(GetObject_dir_with_range) ts.Run(GetObject_invalid_parent) ts.Sync(GetObject_large_object) ts.Run(GetObject_conditional_reads) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(GetObject_checksums) } ts.Run(GetObject_success) ts.Run(GetObject_directory_success) ts.Run(GetObject_by_range_resp_status) ts.Run(GetObject_non_existing_dir_object) ts.Run(GetObject_overrides_success) ts.Run(GetObject_overrides_presign_success) ts.Run(GetObject_overrides_fail_public) ts.Run(GetObject_invalid_part_number) ts.Run(GetObject_part_number_not_supported) } func TestListObjects(ts *TestState) { ts.Run(ListObjects_non_existing_bucket) ts.Run(ListObjects_with_prefix) ts.Run(ListObjects_truncated) ts.Run(ListObjects_paginated) ts.Run(ListObjects_invalid_max_keys) ts.Run(ListObjects_max_keys_0) ts.Run(ListObjects_exceeding_max_keys) ts.Run(ListObjects_delimiter) ts.Run(ListObjects_max_keys_none) ts.Run(ListObjects_marker_not_from_obj_list) ts.Run(ListObjects_list_all_objs) ts.Run(ListObjects_nested_dir_file_objs) ts.Run(ListObjects_check_owner) ts.Run(ListObjects_non_truncated_common_prefixes) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(ListObjects_with_checksum) } } func TestListObjectsV2(ts *TestState) { ts.Run(ListObjectsV2_start_after) // posix continuation token not compatible with azure if !ts.conf.azureTests { 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_both_delimiter_and_prefix) ts.Run(ListObjectsV2_single_dir_object_with_delim_and_prefix) ts.Run(ListObjectsV2_truncated_common_prefixes) ts.Run(ListObjectsV2_all_objs_max_keys) ts.Run(ListObjectsV2_exceeding_max_keys) ts.Run(ListObjectsV2_list_all_objs) ts.Run(ListObjectsV2_with_owner) ts.Run(ListObjectsV2_non_truncated_common_prefixes) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(ListObjectsV2_with_checksum) } ts.Run(ListObjectsV2_invalid_parent_prefix) } // VD stands for Versioning Disabled func TestListObjectVersions_VD(ts *TestState) { ts.Run(ListObjectVersions_VD_success) } func TestDeleteObject(ts *TestState) { ts.Run(DeleteObject_non_existing_object) ts.Run(DeleteObject_directory_object_noslash) ts.Run(DeleteObject_non_existing_dir_object) ts.Run(DeleteObject_directory_object) ts.Run(DeleteObject_non_empty_dir_obj) ts.Run(DeleteObject_conditional_writes) ts.Run(DeleteObject_success) ts.Run(DeleteObject_success_status_code) ts.Run(DeleteObject_incorrect_expected_bucket_owner) ts.Run(DeleteObject_expected_bucket_owner) } func TestDeleteObjects(ts *TestState) { ts.Run(DeleteObjects_empty_input) ts.Run(DeleteObjects_non_existing_objects) ts.Run(DeleteObjects_success) } func TestCopyObject(ts *TestState) { ts.Run(CopyObject_non_existing_dst_bucket) ts.Run(CopyObject_not_owned_source_bucket) ts.Run(CopyObject_copy_to_itself) ts.Run(CopyObject_copy_to_itself_invalid_directive) ts.Run(CopyObject_should_replace_tagging) ts.Run(CopyObject_should_copy_tagging) ts.Run(CopyObject_invalid_tagging_directive) ts.Run(CopyObject_to_itself_with_new_metadata) ts.Run(CopyObject_copy_source_starting_with_slash) ts.Run(CopyObject_invalid_copy_source) ts.Run(CopyObject_non_existing_dir_object) ts.Run(CopyObject_should_copy_meta_props) ts.Run(CopyObject_should_replace_meta_props) ts.Run(CopyObject_invalid_legal_hold) ts.Run(CopyObject_invalid_object_lock_mode) ts.Run(CopyObject_with_legal_hold) ts.Run(CopyObject_with_retention_lock) ts.Run(CopyObject_conditional_reads) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(CopyObject_invalid_checksum_algorithm) ts.Run(CopyObject_create_checksum_on_copy) ts.Run(CopyObject_should_copy_the_existing_checksum) ts.Run(CopyObject_should_replace_the_existing_checksum) ts.Run(CopyObject_to_itself_by_replacing_the_checksum) // azure doesn't support these metadata characters ts.Run(CopyObject_with_metadata) } ts.Run(CopyObject_success) } func TestPutObjectTagging(ts *TestState) { ts.Run(PutObjectTagging_non_existing_object) ts.Run(PutObjectTagging_long_tags) ts.Run(PutObjectTagging_duplicate_keys) ts.Run(PutObjectTagging_tag_count_limit) ts.Run(PutObjectTagging_invalid_tags) ts.Run(PutObjectTagging_success) } func TestGetObjectTagging(ts *TestState) { ts.Run(GetObjectTagging_non_existing_object) ts.Run(GetObjectTagging_unset_tags) ts.Run(GetObjectTagging_invalid_parent) ts.Run(GetObjectTagging_success) } func TestDeleteObjectTagging(ts *TestState) { ts.Run(DeleteObjectTagging_non_existing_object) ts.Run(DeleteObjectTagging_success_status) ts.Run(DeleteObjectTagging_success) ts.Run(DeleteObjectTagging_expected_bucket_owner) } func TestCreateMultipartUpload(ts *TestState) { ts.Run(CreateMultipartUpload_non_existing_bucket) ts.Run(CreateMultipartUpload_with_metadata) ts.Run(CreateMultipartUpload_with_tagging) ts.Run(CreateMultipartUpload_with_object_lock) ts.Run(CreateMultipartUpload_with_object_lock_not_enabled) ts.Run(CreateMultipartUpload_with_object_lock_invalid_retention) ts.Run(CreateMultipartUpload_past_retain_until_date) ts.Run(CreateMultipartUpload_invalid_legal_hold) ts.Run(CreateMultipartUpload_invalid_object_lock_mode) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(CreateMultipartUpload_invalid_checksum_algorithm) ts.Run(CreateMultipartUpload_empty_checksum_algorithm_with_checksum_type) ts.Run(CreateMultipartUpload_type_algo_mismatch) ts.Run(CreateMultipartUpload_invalid_checksum_type) ts.Run(CreateMultipartUpload_valid_algo_type) } ts.Run(CreateMultipartUpload_success) } func TestUploadPart(ts *TestState) { ts.Run(UploadPart_non_existing_bucket) ts.Run(UploadPart_invalid_part_number) ts.Run(UploadPart_non_existing_key) ts.Run(UploadPart_non_existing_mp_upload) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(UploadPart_multiple_checksum_headers) ts.Run(UploadPart_invalid_checksum_header) ts.Run(UploadPart_checksum_header_and_algo_mismatch) ts.Run(UploadPart_checksum_algorithm_mistmatch_on_initialization) ts.Run(UploadPart_checksum_algorithm_mistmatch_on_initialization_with_value) ts.Run(UploadPart_incorrect_checksums) ts.Run(UploadPart_no_checksum_with_full_object_checksum_type) ts.Run(UploadPart_no_checksum_with_composite_checksum_type) ts.Run(UploadPart_should_calculate_checksum_if_only_algorithm_is_provided) ts.Run(UploadPart_with_checksums_success) } ts.Run(UploadPart_success) } func TestUploadPartCopy(ts *TestState) { ts.Run(UploadPartCopy_non_existing_bucket) ts.Run(UploadPartCopy_incorrect_uploadId) ts.Run(UploadPartCopy_incorrect_object_key) ts.Run(UploadPartCopy_invalid_part_number) ts.Run(UploadPartCopy_invalid_copy_source) ts.Run(UploadPartCopy_non_existing_source_bucket) ts.Run(UploadPartCopy_non_existing_source_object_key) ts.Run(UploadPartCopy_success) ts.Run(UploadPartCopy_by_range_invalid_ranges) ts.Run(UploadPartCopy_exceeding_copy_source_range) ts.Run(UploadPartCopy_greater_range_than_obj_size) ts.Run(UploadPartCopy_by_range_success) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(UploadPartCopy_should_copy_the_checksum) ts.Run(UploadPartCopy_should_not_copy_the_checksum) ts.Run(UploadPartCopy_should_calculate_the_checksum) ts.Run(UploadPartCopy_conditional_reads) } } func TestListParts(ts *TestState) { ts.Run(ListParts_incorrect_uploadId) ts.Run(ListParts_incorrect_object_key) ts.Run(ListParts_invalid_max_parts) ts.Run(ListParts_default_max_parts) ts.Run(ListParts_exceeding_max_parts) ts.Run(ListParts_truncated) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(ListParts_with_checksums) ts.Run(ListParts_null_checksums) } ts.Run(ListParts_success) } func TestListMultipartUploads(ts *TestState) { ts.Run(ListMultipartUploads_non_existing_bucket) ts.Run(ListMultipartUploads_empty_result) ts.Run(ListMultipartUploads_invalid_max_uploads) ts.Run(ListMultipartUploads_max_uploads) ts.Run(ListMultipartUploads_exceeding_max_uploads) ts.Run(ListMultipartUploads_incorrect_next_key_marker) ts.Run(ListMultipartUploads_ignore_upload_id_marker) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(ListMultipartUploads_with_checksums) } ts.Run(ListMultipartUploads_success) } func TestAbortMultipartUpload(ts *TestState) { ts.Run(AbortMultipartUpload_non_existing_bucket) ts.Run(AbortMultipartUpload_incorrect_uploadId) ts.Run(AbortMultipartUpload_incorrect_object_key) ts.Run(AbortMultipartUpload_success) ts.Run(AbortMultipartUpload_success_status_code) ts.Run(AbortMultipartUpload_if_match_initiated_time) } func TestCompleteMultipartUpload(ts *TestState) { ts.Run(CompletedMultipartUpload_non_existing_bucket) ts.Run(CompleteMultipartUpload_incorrect_part_number) ts.Run(CompleteMultipartUpload_invalid_part_number) ts.Run(CompleteMultipartUpload_invalid_ETag) ts.Run(CompleteMultipartUpload_small_upload_size) ts.Run(CompleteMultipartUpload_empty_parts) ts.Run(CompleteMultipartUpload_incorrect_parts_order) ts.Run(CompleteMultipartUpload_mpu_object_size) ts.Run(CompleteMultipartUpload_conditional_writes) //TODO: remove the condition after implementing checksums in azure if !ts.conf.azureTests { ts.Run(CompleteMultipartUpload_invalid_checksum_type) ts.Run(CompleteMultipartUpload_invalid_checksum_part) ts.Run(CompleteMultipartUpload_multiple_checksum_part) ts.Run(CompleteMultipartUpload_incorrect_checksum_part) ts.Run(CompleteMultipartUpload_different_checksum_part) ts.Run(CompleteMultipartUpload_missing_part_checksum) ts.Run(CompleteMultipartUpload_multiple_final_checksums) ts.Run(CompleteMultipartUpload_invalid_final_checksums) ts.Run(CompleteMultipartUpload_incorrect_final_checksums) ts.Run(CompleteMultipartUpload_should_calculate_the_final_checksum_full_object) ts.Run(CompleteMultipartUpload_should_verify_the_final_checksum) ts.Run(CompleteMultipartUpload_should_verify_final_composite_checksum) ts.Run(CompleteMultipartUpload_invalid_final_composite_checksum) ts.Run(CompleteMultipartUpload_checksum_type_mismatch) ts.Run(CompleteMultipartUpload_should_ignore_the_final_checksum) ts.Run(CompleteMultipartUpload_should_succeed_without_final_checksum_type) // azure doesn't support these metadata characters ts.Run(CompleteMultipartUpload_with_metadata) } ts.Run(CompleteMultipartUpload_success) if !ts.conf.azureTests { ts.Run(CompleteMultipartUpload_racey_success) } } 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) ts.Run(PutBucketAcl_invalid_owner) ts.Run(PutBucketAcl_invalid_owner_not_in_body) ts.Run(PutBucketAcl_invalid_empty_owner_id_in_body) ts.Run(PutBucketAcl_invalid_permission_in_body) ts.Run(PutBucketAcl_invalid_grantee_type_in_body) ts.Run(PutBucketAcl_empty_grantee_ID_in_body) ts.Run(PutBucketAcl_success_access_denied) ts.Run(PutBucketAcl_success_grants) ts.Run(PutBucketAcl_success_canned_acl) ts.Run(PutBucketAcl_success_acp) } func TestGetBucketAcl(ts *TestState) { ts.Run(GetBucketAcl_non_existing_bucket) ts.Run(GetBucketAcl_translation_canned_public_read) ts.Run(GetBucketAcl_translation_canned_public_read_write) ts.Run(GetBucketAcl_translation_canned_private) ts.Run(GetBucketAcl_access_denied) ts.Run(GetBucketAcl_success) } func TestPutBucketPolicy(ts *TestState) { ts.Run(PutBucketPolicy_non_existing_bucket) ts.Run(PutBucketPolicy_invalid_json) ts.Run(PutBucketPolicy_statement_not_provided) ts.Run(PutBucketPolicy_empty_statement) ts.Run(PutBucketPolicy_invalid_effect) ts.Run(PutBucketPolicy_invalid_action) ts.Run(PutBucketPolicy_empty_principals_string) ts.Run(PutBucketPolicy_empty_principals_array) ts.Run(PutBucketPolicy_principals_aws_struct_empty_string) ts.Run(PutBucketPolicy_principals_aws_struct_empty_string_slice) ts.Run(PutBucketPolicy_principals_incorrect_wildcard_usage) ts.Run(PutBucketPolicy_non_existing_principals) ts.Run(PutBucketPolicy_empty_resources_string) ts.Run(PutBucketPolicy_empty_resources_array) ts.Run(PutBucketPolicy_invalid_resource_prefix) ts.Run(PutBucketPolicy_invalid_resource_with_starting_slash) ts.Run(PutBucketPolicy_duplicate_resource) ts.Run(PutBucketPolicy_incorrect_bucket_name) ts.Run(PutBucketPolicy_action_resource_mismatch) ts.Run(PutBucketPolicy_explicit_deny) ts.Run(PutBucketPolicy_multi_wildcard_resource) ts.Run(PutBucketPolicy_any_char_match) ts.Run(PutBucketPolicy_version) ts.Run(PutBucketPolicy_success) } func TestGetBucketPolicy(ts *TestState) { ts.Run(GetBucketPolicy_non_existing_bucket) ts.Run(GetBucketPolicy_not_set) ts.Run(GetBucketPolicy_success) } func TestGetBucketPolicyStatus(ts *TestState) { ts.Run(GetBucketPolicyStatus_non_existing_bucket) ts.Run(GetBucketPolicyStatus_no_such_bucket_policy) ts.Run(GetBucketPolicyStatus_success) } func TestDeleteBucketPolicy(ts *TestState) { ts.Run(DeleteBucketPolicy_non_existing_bucket) ts.Run(DeleteBucketPolicy_remove_before_setting) ts.Run(DeleteBucketPolicy_success) } func TestPutBucketCors(ts *TestState) { ts.Run(PutBucketCors_non_existing_bucket) ts.Run(PutBucketCors_empty_cors_rules) ts.Run(PutBucketCors_invalid_method) ts.Run(PutBucketCors_invalid_header) ts.Run(PutBucketCors_md5) ts.Run(PutBucketCors_success) } func TestGetBucketCors(ts *TestState) { ts.Run(GetBucketCors_non_existing_bucket) ts.Run(GetBucketCors_no_such_bucket_cors) ts.Run(GetBucketCors_success) } func TestDeleteBucketCors(ts *TestState) { ts.Run(DeleteBucketCors_non_existing_bucket) ts.Run(DeleteBucketCors_success) } func TestPreflightOPTIONSEndpoint(ts *TestState) { ts.Run(PreflightOPTIONS_non_existing_bucket) ts.Run(PreflightOPTIONS_missing_origin) ts.Run(PreflightOPTIONS_invalid_request_method) ts.Run(PreflightOPTIONS_invalid_request_headers) ts.Run(PreflightOPTIONS_unset_bucket_cors) ts.Run(PreflightOPTIONS_access_forbidden) ts.Run(PreflightOPTIONS_access_granted) } func TestCORSMiddleware(ts *TestState) { ts.Run(CORSMiddleware_invalid_method) ts.Run(CORSMiddleware_invalid_headers) ts.Run(CORSMiddleware_access_forbidden) ts.Run(CORSMiddleware_access_granted) } func TestPutObjectLockConfiguration(ts *TestState) { ts.Run(PutObjectLockConfiguration_non_existing_bucket) ts.Run(PutObjectLockConfiguration_empty_request_body) ts.Run(PutObjectLockConfiguration_malformed_body) if !ts.conf.versioningEnabled { ts.Run(PutObjectLockConfiguration_not_enabled_on_bucket_creation) } ts.Run(PutObjectLockConfiguration_invalid_status) ts.Run(PutObjectLockConfiguration_invalid_mode) ts.Run(PutObjectLockConfiguration_both_years_and_days) ts.Run(PutObjectLockConfiguration_invalid_years_days) ts.Run(PutObjectLockConfiguration_success) } func TestGetObjectLockConfiguration(ts *TestState) { ts.Run(GetObjectLockConfiguration_non_existing_bucket) ts.Run(GetObjectLockConfiguration_unset_config) ts.Run(GetObjectLockConfiguration_success) } func TestPutObjectRetention(ts *TestState) { ts.Run(PutObjectRetention_non_existing_bucket) ts.Run(PutObjectRetention_non_existing_object) ts.Run(PutObjectRetention_unset_bucket_object_lock_config) ts.Run(PutObjectRetention_expired_retain_until_date) ts.Run(PutObjectRetention_invalid_mode) ts.Run(PutObjectRetention_overwrite_compliance_mode) ts.Run(PutObjectRetention_overwrite_compliance_with_compliance) ts.Run(PutObjectRetention_overwrite_governance_with_governance) ts.Run(PutObjectRetention_overwrite_governance_without_bypass_specified) ts.Run(PutObjectRetention_overwrite_governance_with_permission) ts.Run(PutObjectRetention_success) } func TestGetObjectRetention(ts *TestState) { ts.Run(GetObjectRetention_non_existing_bucket) ts.Run(GetObjectRetention_non_existing_object) ts.Run(GetObjectRetention_disabled_lock) ts.Run(GetObjectRetention_unset_config) ts.Run(GetObjectRetention_success) } func TestPutObjectLegalHold(ts *TestState) { ts.Run(PutObjectLegalHold_non_existing_bucket) ts.Run(PutObjectLegalHold_non_existing_object) ts.Run(PutObjectLegalHold_invalid_body) ts.Run(PutObjectLegalHold_invalid_status) ts.Run(PutObjectLegalHold_unset_bucket_object_lock_config) ts.Run(PutObjectLegalHold_success) } func TestGetObjectLegalHold(ts *TestState) { ts.Run(GetObjectLegalHold_non_existing_bucket) ts.Run(GetObjectLegalHold_non_existing_object) ts.Run(GetObjectLegalHold_disabled_lock) ts.Run(GetObjectLegalHold_unset_config) ts.Run(GetObjectLegalHold_success) } func TestNotImplementedActions(ts *TestState) { // bucket analytics actions ts.Run(PutBucketAnalyticsConfiguration_not_implemented) ts.Run(GetBucketAnalyticsConfiguration_not_implemented) ts.Run(ListBucketAnalyticsConfiguration_not_implemented) ts.Run(DeleteBucketAnalyticsConfiguration_not_implemented) // bucket encryption actions ts.Run(PutBucketEncryption_not_implemented) ts.Run(GetBucketEncryption_not_implemented) ts.Run(DeleteBucketEncryption_not_implemented) // bucket intelligent tierieng actions ts.Run(PutBucketIntelligentTieringConfiguration_not_implemented) ts.Run(GetBucketIntelligentTieringConfiguration_not_implemented) ts.Run(ListBucketIntelligentTieringConfiguration_not_implemented) ts.Run(DeleteBucketIntelligentTieringConfiguration_not_implemented) // bucket inventory configuration actions ts.Run(PutBucketInventoryConfiguration_not_implemented) ts.Run(GetBucketInventoryConfiguration_not_implemented) ts.Run(ListBucketInventoryConfiguration_not_implemented) ts.Run(DeleteBucketInventoryConfiguration_not_implemented) // bucket lifecycle configuration actions ts.Run(PutBucketLifecycleConfiguration_not_implemented) ts.Run(GetBucketLifecycleConfiguration_not_implemented) ts.Run(DeleteBucketLifecycle_not_implemented) // bucket logging actions ts.Run(PutBucketLogging_not_implemented) ts.Run(GetBucketLogging_not_implemented) // bucket request payment actions ts.Run(PutBucketRequestPayment_not_implemented) ts.Run(GetBucketRequestPayment_not_implemented) // bucket metrics configuration actions ts.Run(PutBucketMetricsConfiguration_not_implemented) ts.Run(GetBucketMetricsConfiguration_not_implemented) ts.Run(ListBucketMetricsConfigurations_not_implemented) ts.Run(DeleteBucketMetricsConfiguration_not_implemented) // bucket replication actions ts.Run(PutBucketReplication_not_implemented) ts.Run(GetBucketReplication_not_implemented) ts.Run(DeleteBucketReplication_not_implemented) // bucket public access block actions ts.Run(PutPublicAccessBlock_not_implemented) ts.Run(GetPublicAccessBlock_not_implemented) ts.Run(DeletePublicAccessBlock_not_implemented) // bucket notification actions ts.Run(PutBucketNotificationConfiguratio_not_implemented) ts.Run(GetBucketNotificationConfiguratio_not_implemented) // bucket acceleration actions ts.Run(PutBucketAccelerateConfiguration_not_implemented) ts.Run(GetBucketAccelerateConfiguration_not_implemented) // bucket website actions ts.Run(PutBucketWebsite_not_implemented) ts.Run(GetBucketWebsite_not_implemented) ts.Run(DeleteBucketWebsite_not_implemented) } 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) ts.Run(WORMProtection_object_lock_retention_compliance_locked) ts.Run(WORMProtection_object_lock_retention_governance_locked) ts.Run(WORMProtection_object_lock_retention_governance_bypass_overwrite_put) ts.Run(WORMProtection_object_lock_retention_governance_bypass_overwrite_copy) ts.Run(WORMProtection_object_lock_retention_governance_bypass_overwrite_mp) ts.Run(WORMProtection_unable_to_overwrite_locked_object_put) ts.Run(WORMProtection_unable_to_overwrite_locked_object_copy) ts.Run(WORMProtection_unable_to_overwrite_locked_object_mp) ts.Run(WORMProtection_object_lock_retention_governance_bypass_delete) 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) } func TestFullFlow(ts *TestState) { TestAuthentication(ts) TestPresignedAuthentication(ts) TestCreateBucket(ts) TestHeadBucket(ts) TestListBuckets(ts) TestDeleteBucket(ts) TestPutBucketOwnershipControls(ts) TestGetBucketOwnershipControls(ts) TestDeleteBucketOwnershipControls(ts) TestPutBucketTagging(ts) TestGetBucketTagging(ts) TestDeleteBucketTagging(ts) TestGetBucketLocation(ts) TestPutObject(ts) TestHeadObject(ts) TestGetObjectAttributes(ts) TestGetObject(ts) TestListObjects(ts) TestListObjectsV2(ts) if !ts.conf.versioningEnabled && !ts.conf.azureTests { TestListObjectVersions_VD(ts) } TestDeleteObject(ts) TestDeleteObjects(ts) TestCopyObject(ts) TestPutObjectTagging(ts) TestDeleteObjectTagging(ts) TestCreateMultipartUpload(ts) TestUploadPart(ts) if !ts.conf.azureTests { TestUploadPartCopy(ts) } TestListParts(ts) TestListMultipartUploads(ts) TestAbortMultipartUpload(ts) TestCompleteMultipartUpload(ts) TestPutBucketAcl(ts) TestGetBucketAcl(ts) TestPutBucketPolicy(ts) TestGetBucketPolicy(ts) TestDeleteBucketPolicy(ts) TestPutBucketCors(ts) TestGetBucketCors(ts) TestDeleteBucketCors(ts) TestPreflightOPTIONSEndpoint(ts) TestPutObjectLockConfiguration(ts) TestGetObjectLockConfiguration(ts) TestPutObjectRetention(ts) TestGetObjectRetention(ts) TestPutObjectLegalHold(ts) TestGetObjectLegalHold(ts) if !ts.conf.versioningEnabled { TestWORMProtection(ts) } TestAccessControl(ts) TestRouter(ts) TestUnsignedStreaminPayloadTrailer(ts) // FIXME: The tests should pass for azure as well // but this issue should be fixed with https://github.com/versity/versitygw/issues/1336 if !ts.conf.azureTests { TestPublicBuckets(ts) } if ts.conf.versioningEnabled { TestVersioning(ts) } } func TestPosix(ts *TestState) { ts.Run(PutObject_overwrite_dir_obj) ts.Run(PutObject_overwrite_file_obj) ts.Run(PutObject_overwrite_file_obj_with_nested_obj) ts.Run(PutObject_dir_obj_with_data) ts.Run(PutObject_with_slashes) ts.Run(CreateMultipartUpload_dir_obj) ts.Run(PutObject_name_too_long) ts.Run(HeadObject_name_too_long) ts.Run(DeleteObject_name_too_long) ts.Run(CopyObject_overwrite_same_dir_object) ts.Run(CopyObject_overwrite_same_file_object) ts.Run(DeleteObject_directory_not_empty) // posix specific versioning tests if !ts.conf.versioningEnabled { TestVersioningDisabled(ts) } } func TestScoutfs(ts *TestState) { TestAuthentication(ts) TestPresignedAuthentication(ts) TestCreateBucket(ts) TestHeadBucket(ts) TestListBuckets(ts) TestDeleteBucket(ts) TestPutBucketOwnershipControls(ts) TestGetBucketOwnershipControls(ts) TestDeleteBucketOwnershipControls(ts) TestPutBucketTagging(ts) TestGetBucketTagging(ts) TestDeleteBucketTagging(ts) TestGetBucketLocation(ts) TestPutObject(ts) TestHeadObject(ts) TestGetObjectAttributes(ts) TestGetObject(ts) TestListObjects(ts) TestListObjectsV2(ts) TestListObjectVersions_VD(ts) TestDeleteObject(ts) TestDeleteObjects(ts) TestCopyObject(ts) TestPutObjectTagging(ts) TestDeleteObjectTagging(ts) TestUploadPart(ts) TestUploadPartCopy(ts) TestListParts(ts) TestListMultipartUploads(ts) TestAbortMultipartUpload(ts) TestPutBucketAcl(ts) TestGetBucketAcl(ts) TestPutBucketPolicy(ts) TestGetBucketPolicy(ts) TestDeleteBucketPolicy(ts) TestPutObjectLockConfiguration(ts) TestGetObjectLockConfiguration(ts) TestPutObjectRetention(ts) TestGetObjectRetention(ts) TestPutObjectLegalHold(ts) TestGetObjectLegalHold(ts) TestWORMProtection(ts) TestAccessControl(ts) ts.Run(CreateMultipartUpload_non_existing_bucket) ts.Run(CreateMultipartUpload_with_tagging) ts.Run(CreateMultipartUpload_with_object_lock) ts.Run(CreateMultipartUpload_with_object_lock_not_enabled) ts.Run(CreateMultipartUpload_with_object_lock_invalid_retention) ts.Run(CreateMultipartUpload_past_retain_until_date) ts.Run(CreateMultipartUpload_invalid_legal_hold) ts.Run(CreateMultipartUpload_invalid_object_lock_mode) ts.Run(CreateMultipartUpload_invalid_checksum_algorithm) ts.Run(CreateMultipartUpload_empty_checksum_algorithm_with_checksum_type) ts.Run(CreateMultipartUpload_invalid_checksum_type) ts.Run(CreateMultipartUpload_valid_algo_type) ts.Run(CreateMultipartUpload_success) ts.Run(CompletedMultipartUpload_non_existing_bucket) ts.Run(CompleteMultipartUpload_incorrect_part_number) ts.Run(CompleteMultipartUpload_invalid_part_number) ts.Run(CompleteMultipartUpload_invalid_ETag) ts.Run(CompleteMultipartUpload_small_upload_size) ts.Run(CompleteMultipartUpload_empty_parts) ts.Run(CompleteMultipartUpload_incorrect_parts_order) ts.Run(CompleteMultipartUpload_mpu_object_size) ts.Run(CompleteMultipartUpload_invalid_checksum_type) ts.Run(CompleteMultipartUpload_invalid_checksum_part) ts.Run(CompleteMultipartUpload_multiple_checksum_part) ts.Run(CompleteMultipartUpload_incorrect_checksum_part) ts.Run(CompleteMultipartUpload_different_checksum_part) ts.Run(CompleteMultipartUpload_missing_part_checksum) ts.Run(CompleteMultipartUpload_multiple_final_checksums) ts.Run(CompleteMultipartUpload_invalid_final_checksums) ts.Run(CompleteMultipartUpload_checksum_type_mismatch) ts.Run(CompleteMultipartUpload_should_ignore_the_final_checksum) ts.Run(CompleteMultipartUpload_success) ts.Run(CompleteMultipartUpload_racey_success) // posix/scoutfs specific tests ts.Run(PutObject_overwrite_dir_obj) ts.Run(PutObject_overwrite_file_obj) ts.Run(PutObject_overwrite_file_obj_with_nested_obj) ts.Run(PutObject_dir_obj_with_data) ts.Run(PutObject_with_slashes) ts.Run(CreateMultipartUpload_dir_obj) ts.Run(PutObject_name_too_long) ts.Run(HeadObject_name_too_long) ts.Run(DeleteObject_name_too_long) ts.Run(CopyObject_overwrite_same_dir_object) ts.Run(CopyObject_overwrite_same_file_object) ts.Run(DeleteObject_directory_not_empty) } func TestIAM(ts *TestState) { ts.Run(IAM_user_access_denied) ts.Run(IAM_userplus_access_denied) ts.Run(IAM_userplus_CreateBucket) ts.Run(IAM_admin_ChangeBucketOwner) ts.Run(IAM_ChangeBucketOwner_back_to_root) ts.Run(IAM_ListBuckets) } func TestAccessControl(ts *TestState) { ts.Run(AccessControl_default_ACL_user_access_denied) ts.Run(AccessControl_default_ACL_userplus_access_denied) ts.Run(AccessControl_default_ACL_admin_successful_access) ts.Run(AccessControl_bucket_resource_single_action) ts.Run(AccessControl_bucket_resource_all_action) ts.Run(AccessControl_single_object_resource_actions) ts.Run(AccessControl_multi_statement_policy) ts.Run(AccessControl_bucket_ownership_to_user) ts.Run(AccessControl_root_PutBucketAcl) ts.Run(AccessControl_user_PutBucketAcl_with_policy_access) ts.Run(AccessControl_copy_object_with_starting_slash_for_user) } func TestPublicBuckets(ts *TestState) { ts.Run(PublicBucket_default_private_bucket) ts.Run(PublicBucket_public_bucket_policy) if !ts.conf.versioningEnabled { // This test targets gateway actions when bucket grants // public access to object operations: no specific // bucket versioning operations. As object version cleanup // is hard to perform, run the test only on the versioning-disabled // gateway instance ts.Run(PublicBucket_public_object_policy) } ts.Run(PublicBucket_public_acl) ts.Run(PublicBucket_signed_streaming_payload) ts.Run(PublicBucket_incorrect_sha256_hash) } func TestVersioning(ts *TestState) { // PutBucketVersioning action ts.Run(PutBucketVersioning_non_existing_bucket) ts.Run(PutBucketVersioning_invalid_status) ts.Run(PutBucketVersioning_success_enabled) ts.Run(PutBucketVersioning_success_suspended) // GetBucketVersioning action ts.Run(GetBucketVersioning_non_existing_bucket) ts.Run(GetBucketVersioning_empty_response) ts.Run(GetBucketVersioning_success) // DeleteBucket action ts.Run(Versioning_DeleteBucket_not_empty) // PutObject action ts.Run(Versioning_PutObject_suspended_null_versionId_obj) ts.Run(Versioning_PutObject_null_versionId_obj) ts.Run(Versioning_PutObject_overwrite_null_versionId_obj) ts.Run(Versioning_PutObject_success) // CopyObject action ts.Run(Versioning_CopyObject_invalid_versionId) ts.Run(Versioning_CopyObject_success) ts.Run(Versioning_CopyObject_non_existing_version_id) ts.Run(Versioning_CopyObject_from_an_object_version) ts.Run(Versioning_CopyObject_special_chars) // HeadObject action ts.Run(Versioning_HeadObject_invalid_versionId) ts.Run(Versioning_HeadObject_non_existing_object_version) ts.Run(Versioning_HeadObject_invalid_parent) ts.Run(Versioning_HeadObject_success) ts.Run(Versioning_HeadObject_without_versionId) ts.Run(Versioning_HeadObject_delete_marker) // GetObject action ts.Run(Versioning_GetObject_invalid_versionId) ts.Run(Versioning_GetObject_non_existing_object_version) ts.Run(Versioning_GetObject_success) ts.Run(Versioning_GetObject_delete_marker_without_versionId) ts.Run(Versioning_GetObject_delete_marker) ts.Run(Versioning_GetObject_null_versionId_obj) // object tagging actions ts.Run(Versioning_PutObjectTagging_invalid_versionId) ts.Run(Versioning_PutObjectTagging_non_existing_object_version) ts.Run(Versioning_GetObjectTagging_invalid_versionId) ts.Run(Versioning_GetObjectTagging_non_existing_object_version) ts.Run(Versioning_DeleteObjectTagging_invalid_versionId) ts.Run(Versioning_DeleteObjectTagging_non_existing_object_version) ts.Run(Versioning_PutGetDeleteObjectTagging_success) // GetObjectAttributes action ts.Run(Versioning_GetObjectAttributes_invalid_versionId) ts.Run(Versioning_GetObjectAttributes_object_version) ts.Run(Versioning_GetObjectAttributes_delete_marker) // DeleteObject actions ts.Run(Versioning_DeleteObject_invalid_versionId) ts.Run(Versioning_DeleteObject_delete_object_version) ts.Run(Versioning_DeleteObject_non_existing_object) ts.Run(Versioning_DeleteObject_delete_a_delete_marker) ts.Run(Versioning_Delete_null_versionId_object) ts.Run(Versioning_DeleteObject_nested_dir_object) ts.Run(Versioning_DeleteObject_suspended) ts.Run(Versioning_DeleteObjects_success) ts.Run(Versioning_DeleteObjects_delete_deleteMarkers) // ListObjectVersions ts.Run(ListObjectVersions_non_existing_bucket) ts.Run(ListObjectVersions_list_single_object_versions) ts.Run(ListObjectVersions_list_multiple_object_versions) ts.Run(ListObjectVersions_multiple_object_versions_truncated) ts.Run(ListObjectVersions_with_delete_markers) ts.Run(ListObjectVersions_containing_null_versionId_obj) ts.Run(ListObjectVersions_single_null_versionId_object) ts.Run(ListObjectVersions_checksum) // Multipart upload ts.Run(Versioning_Multipart_Upload_success) ts.Run(Versioning_Multipart_Upload_overwrite_an_object) ts.Run(Versioning_UploadPartCopy_invalid_versionId) ts.Run(Versioning_UploadPartCopy_non_existing_versionId) ts.Run(Versioning_UploadPartCopy_from_an_object_version) // Object lock configuration ts.Run(Versioning_object_lock_not_enabled_on_bucket_creation) ts.Run(Versioning_Enable_object_lock) ts.Run(Versioning_status_switch_to_suspended_with_object_lock) // Object-Lock Retention ts.Run(Versioning_PutObjectRetention_invalid_versionId) ts.Run(Versioning_PutObjectRetention_non_existing_object_version) ts.Run(Versioning_GetObjectRetention_invalid_versionId) ts.Run(Versioning_GetObjectRetention_non_existing_object_version) ts.Run(Versioning_Put_GetObjectRetention_success) // Object-Lock Legal hold ts.Run(Versioning_PutObjectLegalHold_invalid_versionId) ts.Run(Versioning_PutObjectLegalHold_non_existing_object_version) ts.Run(Versioning_GetObjectLegalHold_invalid_versionId) ts.Run(Versioning_GetObjectLegalHold_non_existing_object_version) ts.Run(Versioning_Put_GetObjectLegalHold_success) // WORM protection ts.Run(Versioning_WORM_obj_version_locked_with_legal_hold) ts.Run(Versioning_WORM_obj_version_locked_with_governance_retention) ts.Run(Versioning_WORM_obj_version_locked_with_compliance_retention) ts.Run(Versioning_WORM_PutObject_overwrite_locked_object) ts.Run(Versioning_WORM_CopyObject_overwrite_locked_object) ts.Run(Versioning_WORM_CompleteMultipartUpload_overwrite_locked_object) // Concurrent requests // Versioninig_concurrent_upload_object ts.Run(Versioning_AccessControl_GetObjectVersion) ts.Run(Versioning_AccessControl_HeadObjectVersion) ts.Run(Versioning_AccessControl_object_tagging_policy) ts.Run(Versioning_AccessControl_DeleteObject_policy) ts.Run(Versioning_AccessControl_GetObjectAttributes_policy) } func TestVersioningDisabled(ts *TestState) { ts.Run(VersioningDisabled_GetBucketVersioning_not_configured) ts.Run(VersioningDisabled_PutBucketVersioning_not_configured) } func TestRouter(ts *TestState) { ts.Run(RouterPutPartNumberWithoutUploadId) ts.Run(RouterPostRoot) ts.Run(RouterPostObjectWithoutQuery) ts.Run(RouterPUTObjectOnlyUploadId) ts.Run(RouterGetUploadsWithKey) ts.Run(RouterCopySourceNotAllowed) } func TestUnsignedStreaminPayloadTrailer(ts *TestState) { // azure doesn't support checksums if !ts.conf.azureTests { ts.Run(UnsignedStreaminPayloadTrailer_malformed_trailer) ts.Run(UnsignedStreamingPayloadTrailer_missing_invalid_dec_content_length) ts.Run(UnsignedStreamingPayloadTrailer_invalid_trailing_checksum) ts.Run(UnsignedStreamingPayloadTrailer_incorrect_trailing_checksum) ts.Run(UnsignedStreamingPayloadTrailer_multiple_checksum_headers) ts.Run(UnsignedStreamingPayloadTrailer_sdk_algo_and_trailer_mismatch) ts.Run(UnsignedStreamingPayloadTrailer_incomplete_body) ts.Run(UnsignedStreamingPayloadTrailer_invalid_chunk_size) ts.Run(UnsignedStreamingPayloadTrailer_content_length_payload_size_mismatch) ts.Run(UnsignedStreamingPayloadTrailer_no_trailer_should_calculate_crc64nvme) ts.Run(UnsignedStreamingPayloadTrailer_no_payload_trailer_only_headers) ts.Run(UnsignedStreamingPayloadTrailer_success_both_sdk_algo_and_trailer) ts.Run(UnsignedStreamingPayloadTrailer_UploadPart_no_trailer_composite_checksum) ts.Run(UnsignedStreamingPayloadTrailer_UploadPart_no_trailer_full_object) ts.Run(UnsignedStreamingPayloadTrailer_UploadPart_trailer_and_mp_algo_mismatch) ts.Run(UnsignedStreamingPayloadTrailer_UploadPart_success_with_trailer) ts.Run(UnsignedStreamingPayloadTrailer_not_allowed) } } type IntTest func(s3 *S3Conf) error type IntTests map[string]IntTest func GetIntTests() IntTests { return IntTests{ "Authentication_invalid_auth_header": Authentication_invalid_auth_header, "Authentication_unsupported_signature_version": Authentication_unsupported_signature_version, "Authentication_missing_components": Authentication_missing_components, "Authentication_malformed_component": Authentication_malformed_component, "Authentication_missing_credentials": Authentication_missing_credentials, "Authentication_missing_signedheaders": Authentication_missing_signedheaders, "Authentication_missing_signature": Authentication_missing_signature, "Authentication_malformed_credential": Authentication_malformed_credential, "Authentication_credentials_invalid_terminal": Authentication_credentials_invalid_terminal, "Authentication_credentials_incorrect_service": Authentication_credentials_incorrect_service, "Authentication_credentials_incorrect_region": Authentication_credentials_incorrect_region, "Authentication_credentials_invalid_date": Authentication_credentials_invalid_date, "Authentication_credentials_future_date": Authentication_credentials_future_date, "Authentication_credentials_past_date": Authentication_credentials_past_date, "Authentication_credentials_non_existing_access_key": Authentication_credentials_non_existing_access_key, "Authentication_missing_date_header": Authentication_missing_date_header, "Authentication_invalid_date_header": Authentication_invalid_date_header, "Authentication_date_mismatch": Authentication_date_mismatch, "Authentication_incorrect_payload_hash": Authentication_incorrect_payload_hash, "Authentication_invalid_sha256_payload_hash": Authentication_invalid_sha256_payload_hash, "Authentication_md5": Authentication_md5, "Authentication_signature_error_incorrect_secret_key": Authentication_signature_error_incorrect_secret_key, "PresignedAuth_security_token_not_supported": PresignedAuth_security_token_not_supported, "PresignedAuth_unsupported_algorithm": PresignedAuth_unsupported_algorithm, "PresignedAuth_ECDSA_not_supported": PresignedAuth_ECDSA_not_supported, "PresignedAuth_missing_signature_query_param": PresignedAuth_missing_signature_query_param, "PresignedAuth_missing_credentials_query_param": PresignedAuth_missing_credentials_query_param, "PresignedAuth_malformed_creds_invalid_parts": PresignedAuth_malformed_creds_invalid_parts, "PresignedAuth_creds_invalid_terminal": PresignedAuth_creds_invalid_terminal, "PresignedAuth_creds_incorrect_service": PresignedAuth_creds_incorrect_service, "PresignedAuth_creds_incorrect_region": PresignedAuth_creds_incorrect_region, "PresignedAuth_creds_invalid_date": PresignedAuth_creds_invalid_date, "PresignedAuth_missing_date_query": PresignedAuth_missing_date_query, "PresignedAuth_dates_mismatch": PresignedAuth_dates_mismatch, "PresignedAuth_non_existing_access_key_id": PresignedAuth_non_existing_access_key_id, "PresignedAuth_missing_signed_headers_query_param": PresignedAuth_missing_signed_headers_query_param, "PresignedAuth_missing_expiration_query_param": PresignedAuth_missing_expiration_query_param, "PresignedAuth_invalid_expiration_query_param": PresignedAuth_invalid_expiration_query_param, "PresignedAuth_negative_expiration_query_param": PresignedAuth_negative_expiration_query_param, "PresignedAuth_exceeding_expiration_query_param": PresignedAuth_exceeding_expiration_query_param, "PresignedAuth_expired_request": PresignedAuth_expired_request, "PresignedAuth_incorrect_secret_key": PresignedAuth_incorrect_secret_key, "PresignedAuth_PutObject_success": PresignedAuth_PutObject_success, "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_invalid_legal_hold": PutObject_invalid_legal_hold, "PutObject_invalid_object_lock_mode": PutObject_invalid_object_lock_mode, "PutObject_conditional_writes": PutObject_conditional_writes, "PutObject_with_metadata": PutObject_with_metadata, "PutObject_invalid_credentials": PutObject_invalid_credentials, "PutObject_checksum_algorithm_and_header_mismatch": PutObject_checksum_algorithm_and_header_mismatch, "PutObject_multiple_checksum_headers": PutObject_multiple_checksum_headers, "PutObject_invalid_checksum_header": PutObject_invalid_checksum_header, "PutObject_incorrect_checksums": PutObject_incorrect_checksums, "PutObject_default_checksum": PutObject_default_checksum, "PutObject_checksums_success": PutObject_checksums_success, "PresignedAuth_Put_GetObject_with_data": PresignedAuth_Put_GetObject_with_data, "PresignedAuth_Put_GetObject_with_UTF8_chars": PresignedAuth_Put_GetObject_with_UTF8_chars, "PresignedAuth_UploadPart": PresignedAuth_UploadPart, "CreateBucket_invalid_bucket_name": CreateBucket_invalid_bucket_name, "CreateBucket_existing_bucket": CreateBucket_existing_bucket, "CreateBucket_owned_by_you": CreateBucket_owned_by_you, "CreateBucket_invalid_ownership": CreateBucket_invalid_ownership, "CreateBucket_ownership_with_acl": CreateBucket_ownership_with_acl, "CreateBucket_as_user": CreateBucket_as_user, "CreateDeleteBucket_success": CreateDeleteBucket_success, "CreateBucket_default_acl": CreateBucket_default_acl, "CreateBucket_non_default_acl": CreateBucket_non_default_acl, "CreateBucket_default_object_lock": CreateBucket_default_object_lock, "CreateBucket_invalid_location_constraint": CreateBucket_invalid_location_constraint, "CreateBucket_long_tags": CreateBucket_long_tags, "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, "ListBuckets_as_admin": ListBuckets_as_admin, "ListBuckets_with_prefix": ListBuckets_with_prefix, "ListBuckets_invalid_max_buckets": ListBuckets_invalid_max_buckets, "ListBuckets_truncated": ListBuckets_truncated, "ListBuckets_success": ListBuckets_success, "DeleteBucket_non_existing_bucket": DeleteBucket_non_existing_bucket, "DeleteBucket_non_empty_bucket": DeleteBucket_non_empty_bucket, "DeleteBucket_incorrect_expected_bucket_owner": DeleteBucket_incorrect_expected_bucket_owner, "DeleteBucket_success_status_code": DeleteBucket_success_status_code, "PutBucketOwnershipControls_non_existing_bucket": PutBucketOwnershipControls_non_existing_bucket, "PutBucketOwnershipControls_multiple_rules": PutBucketOwnershipControls_multiple_rules, "PutBucketOwnershipControls_invalid_ownership": PutBucketOwnershipControls_invalid_ownership, "PutBucketOwnershipControls_success": PutBucketOwnershipControls_success, "GetBucketOwnershipControls_non_existing_bucket": GetBucketOwnershipControls_non_existing_bucket, "GetBucketOwnershipControls_default_ownership": GetBucketOwnershipControls_default_ownership, "GetBucketOwnershipControls_success": GetBucketOwnershipControls_success, "DeleteBucketOwnershipControls_non_existing_bucket": DeleteBucketOwnershipControls_non_existing_bucket, "DeleteBucketOwnershipControls_success": DeleteBucketOwnershipControls_success, "PutBucketTagging_non_existing_bucket": PutBucketTagging_non_existing_bucket, "PutBucketTagging_long_tags": PutBucketTagging_long_tags, "PutBucketTagging_invalid_tags": PutBucketTagging_invalid_tags, "PutBucketTagging_duplicate_keys": PutBucketTagging_duplicate_keys, "PutBucketTagging_tag_count_limit": PutBucketTagging_tag_count_limit, "PutBucketTagging_success": PutBucketTagging_success, "PutBucketTagging_success_status": PutBucketTagging_success_status, "GetBucketTagging_non_existing_bucket": GetBucketTagging_non_existing_bucket, "GetBucketTagging_unset_tags": GetBucketTagging_unset_tags, "GetBucketTagging_success": GetBucketTagging_success, "DeleteBucketTagging_non_existing_object": DeleteBucketTagging_non_existing_object, "DeleteBucketTagging_success_status": DeleteBucketTagging_success_status, "DeleteBucketTagging_success": DeleteBucketTagging_success, "GetBucketLocation_success": GetBucketLocation_success, "GetBucketLocation_non_exist": GetBucketLocation_non_exist, "GetBucketLocation_no_access": GetBucketLocation_no_access, "PutObject_non_existing_bucket": PutObject_non_existing_bucket, "PutObject_special_chars": PutObject_special_chars, "PutObject_tagging": PutObject_tagging, "PutObject_success": PutObject_success, "PutObject_invalid_object_names": PutObject_invalid_object_names, "PutObject_false_negative_object_names": PutObject_false_negative_object_names, "PutObject_racey_success": PutObject_racey_success, "HeadObject_non_existing_object": HeadObject_non_existing_object, "HeadObject_invalid_part_number": HeadObject_invalid_part_number, "HeadObject_part_number_not_supported": HeadObject_part_number_not_supported, "HeadObject_directory_object_noslash": HeadObject_directory_object_noslash, "HeadObject_non_existing_dir_object": HeadObject_non_existing_dir_object, "HeadObject_name_too_long": HeadObject_name_too_long, "HeadObject_invalid_parent_dir": HeadObject_invalid_parent_dir, "HeadObject_with_range": HeadObject_with_range, "HeadObject_zero_len_with_range": HeadObject_zero_len_with_range, "HeadObject_dir_with_range": HeadObject_dir_with_range, "HeadObject_conditional_reads": HeadObject_conditional_reads, "HeadObject_not_enabled_checksum_mode": HeadObject_not_enabled_checksum_mode, "HeadObject_checksums": HeadObject_checksums, "HeadObject_success": HeadObject_success, "GetObjectAttributes_non_existing_bucket": GetObjectAttributes_non_existing_bucket, "GetObjectAttributes_non_existing_object": GetObjectAttributes_non_existing_object, "GetObjectAttributes_invalid_attrs": GetObjectAttributes_invalid_attrs, "GetObjectAttributes_invalid_parent": GetObjectAttributes_invalid_parent, "GetObjectAttributes_invalid_single_attribute": GetObjectAttributes_invalid_single_attribute, "GetObjectAttributes_empty_attrs": GetObjectAttributes_empty_attrs, "GetObjectAttributes_existing_object": GetObjectAttributes_existing_object, "GetObjectAttributes_checksums": GetObjectAttributes_checksums, "GetObject_non_existing_key": GetObject_non_existing_key, "GetObject_directory_object_noslash": GetObject_directory_object_noslash, "GetObject_with_range": GetObject_with_range, "GetObject_zero_len_with_range": GetObject_zero_len_with_range, "GetObject_dir_with_range": GetObject_dir_with_range, "GetObject_invalid_parent": GetObject_invalid_parent, "GetObject_large_object": GetObject_large_object, "GetObject_conditional_reads": GetObject_conditional_reads, "GetObject_checksums": GetObject_checksums, "GetObject_success": GetObject_success, "GetObject_directory_success": GetObject_directory_success, "GetObject_by_range_resp_status": GetObject_by_range_resp_status, "GetObject_non_existing_dir_object": GetObject_non_existing_dir_object, "GetObject_overrides_success": GetObject_overrides_success, "GetObject_overrides_presign_success": GetObject_overrides_presign_success, "GetObject_overrides_fail_public": GetObject_overrides_fail_public, "GetObject_invalid_part_number": GetObject_invalid_part_number, "GetObject_part_number_not_supported": GetObject_part_number_not_supported, "ListObjects_non_existing_bucket": ListObjects_non_existing_bucket, "ListObjects_with_prefix": ListObjects_with_prefix, "ListObjects_truncated": ListObjects_truncated, "ListObjects_paginated": ListObjects_paginated, "ListObjects_invalid_max_keys": ListObjects_invalid_max_keys, "ListObjects_max_keys_0": ListObjects_max_keys_0, "ListObjects_delimiter": ListObjects_delimiter, "ListObjects_max_keys_none": ListObjects_max_keys_none, "ListObjects_marker_not_from_obj_list": ListObjects_marker_not_from_obj_list, "ListObjects_list_all_objs": ListObjects_list_all_objs, "ListObjects_nested_dir_file_objs": ListObjects_nested_dir_file_objs, "ListObjects_check_owner": ListObjects_check_owner, "ListObjects_non_truncated_common_prefixes": ListObjects_non_truncated_common_prefixes, "ListObjectsV2_non_truncated_common_prefixes": ListObjectsV2_non_truncated_common_prefixes, "ListObjects_with_checksum": ListObjects_with_checksum, "ListObjectsV2_start_after": ListObjectsV2_start_after, "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_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, "ListObjectsV2_all_objs_max_keys": ListObjectsV2_all_objs_max_keys, "ListObjectsV2_list_all_objs": ListObjectsV2_list_all_objs, "ListObjectsV2_with_owner": ListObjectsV2_with_owner, "ListObjectsV2_with_checksum": ListObjectsV2_with_checksum, "ListObjectVersions_VD_success": ListObjectVersions_VD_success, "DeleteObject_non_existing_object": DeleteObject_non_existing_object, "DeleteObject_directory_object_noslash": DeleteObject_directory_object_noslash, "DeleteObject_non_empty_dir_obj": DeleteObject_non_empty_dir_obj, "DeleteObject_conditional_writes": DeleteObject_conditional_writes, "DeleteObject_name_too_long": DeleteObject_name_too_long, "CopyObject_overwrite_same_dir_object": CopyObject_overwrite_same_dir_object, "CopyObject_overwrite_same_file_object": CopyObject_overwrite_same_file_object, "DeleteObject_non_existing_dir_object": DeleteObject_non_existing_dir_object, "DeleteObject_directory_object": DeleteObject_directory_object, "DeleteObject_success": DeleteObject_success, "DeleteObject_success_status_code": DeleteObject_success_status_code, "DeleteObject_incorrect_expected_bucket_owner": DeleteObject_incorrect_expected_bucket_owner, "DeleteObject_expected_bucket_owner": DeleteObject_expected_bucket_owner, "DeleteObjects_empty_input": DeleteObjects_empty_input, "DeleteObjects_non_existing_objects": DeleteObjects_non_existing_objects, "DeleteObjects_success": DeleteObjects_success, "CopyObject_non_existing_dst_bucket": CopyObject_non_existing_dst_bucket, "CopyObject_not_owned_source_bucket": CopyObject_not_owned_source_bucket, "CopyObject_copy_to_itself": CopyObject_copy_to_itself, "CopyObject_copy_to_itself_invalid_directive": CopyObject_copy_to_itself_invalid_directive, "CopyObject_should_replace_tagging": CopyObject_should_replace_tagging, "CopyObject_should_copy_tagging": CopyObject_should_copy_tagging, "CopyObject_invalid_tagging_directive": CopyObject_invalid_tagging_directive, "CopyObject_to_itself_with_new_metadata": CopyObject_to_itself_with_new_metadata, "CopyObject_copy_source_starting_with_slash": CopyObject_copy_source_starting_with_slash, "CopyObject_invalid_copy_source": CopyObject_invalid_copy_source, "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_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, "CopyObject_with_retention_lock": CopyObject_with_retention_lock, "CopyObject_conditional_reads": CopyObject_conditional_reads, "CopyObject_with_metadata": CopyObject_with_metadata, "CopyObject_invalid_checksum_algorithm": CopyObject_invalid_checksum_algorithm, "CopyObject_create_checksum_on_copy": CopyObject_create_checksum_on_copy, "CopyObject_should_copy_the_existing_checksum": CopyObject_should_copy_the_existing_checksum, "CopyObject_should_replace_the_existing_checksum": CopyObject_should_replace_the_existing_checksum, "CopyObject_to_itself_by_replacing_the_checksum": CopyObject_to_itself_by_replacing_the_checksum, "CopyObject_success": CopyObject_success, "PutObjectTagging_non_existing_object": PutObjectTagging_non_existing_object, "PutObjectTagging_long_tags": PutObjectTagging_long_tags, "PutObjectTagging_duplicate_keys": PutObjectTagging_duplicate_keys, "PutObjectTagging_tag_count_limit": PutObjectTagging_tag_count_limit, "PutObjectTagging_invalid_tags": PutObjectTagging_invalid_tags, "PutObjectTagging_success": PutObjectTagging_success, "GetObjectTagging_non_existing_object": GetObjectTagging_non_existing_object, "GetObjectTagging_unset_tags": GetObjectTagging_unset_tags, "GetObjectTagging_invalid_parent": GetObjectTagging_invalid_parent, "GetObjectTagging_success": GetObjectTagging_success, "DeleteObjectTagging_non_existing_object": DeleteObjectTagging_non_existing_object, "DeleteObjectTagging_success_status": DeleteObjectTagging_success_status, "DeleteObjectTagging_success": DeleteObjectTagging_success, "DeleteObjectTagging_expected_bucket_owner": DeleteObjectTagging_expected_bucket_owner, "CreateMultipartUpload_non_existing_bucket": CreateMultipartUpload_non_existing_bucket, "CreateMultipartUpload_with_metadata": CreateMultipartUpload_with_metadata, "CreateMultipartUpload_with_tagging": CreateMultipartUpload_with_tagging, "CreateMultipartUpload_with_object_lock": CreateMultipartUpload_with_object_lock, "CreateMultipartUpload_with_object_lock_not_enabled": CreateMultipartUpload_with_object_lock_not_enabled, "CreateMultipartUpload_with_object_lock_invalid_retention": CreateMultipartUpload_with_object_lock_invalid_retention, "CreateMultipartUpload_past_retain_until_date": CreateMultipartUpload_past_retain_until_date, "CreateMultipartUpload_invalid_legal_hold": CreateMultipartUpload_invalid_legal_hold, "CreateMultipartUpload_invalid_object_lock_mode": CreateMultipartUpload_invalid_object_lock_mode, "CreateMultipartUpload_invalid_checksum_algorithm": CreateMultipartUpload_invalid_checksum_algorithm, "CreateMultipartUpload_empty_checksum_algorithm_with_checksum_type": CreateMultipartUpload_empty_checksum_algorithm_with_checksum_type, "CreateMultipartUpload_type_algo_mismatch": CreateMultipartUpload_type_algo_mismatch, "CreateMultipartUpload_invalid_checksum_type": CreateMultipartUpload_invalid_checksum_type, "CreateMultipartUpload_valid_algo_type": CreateMultipartUpload_valid_algo_type, "CreateMultipartUpload_success": CreateMultipartUpload_success, "UploadPart_non_existing_bucket": UploadPart_non_existing_bucket, "UploadPart_invalid_part_number": UploadPart_invalid_part_number, "UploadPart_non_existing_key": UploadPart_non_existing_key, "UploadPart_non_existing_mp_upload": UploadPart_non_existing_mp_upload, "UploadPart_multiple_checksum_headers": UploadPart_multiple_checksum_headers, "UploadPart_invalid_checksum_header": UploadPart_invalid_checksum_header, "UploadPart_checksum_header_and_algo_mismatch": UploadPart_checksum_header_and_algo_mismatch, "UploadPart_checksum_algorithm_mistmatch_on_initialization": UploadPart_checksum_algorithm_mistmatch_on_initialization, "UploadPart_checksum_algorithm_mistmatch_on_initialization_with_value": UploadPart_checksum_algorithm_mistmatch_on_initialization_with_value, "UploadPart_incorrect_checksums": UploadPart_incorrect_checksums, "UploadPart_no_checksum_with_full_object_checksum_type": UploadPart_no_checksum_with_full_object_checksum_type, "UploadPart_no_checksum_with_composite_checksum_type": UploadPart_no_checksum_with_composite_checksum_type, "UploadPart_should_calculate_checksum_if_only_algorithm_is_provided": UploadPart_should_calculate_checksum_if_only_algorithm_is_provided, "UploadPart_with_checksums_success": UploadPart_with_checksums_success, "UploadPart_success": UploadPart_success, "UploadPartCopy_non_existing_bucket": UploadPartCopy_non_existing_bucket, "UploadPartCopy_incorrect_uploadId": UploadPartCopy_incorrect_uploadId, "UploadPartCopy_incorrect_object_key": UploadPartCopy_incorrect_object_key, "UploadPartCopy_invalid_part_number": UploadPartCopy_invalid_part_number, "UploadPartCopy_invalid_copy_source": UploadPartCopy_invalid_copy_source, "UploadPartCopy_non_existing_source_bucket": UploadPartCopy_non_existing_source_bucket, "UploadPartCopy_non_existing_source_object_key": UploadPartCopy_non_existing_source_object_key, "UploadPartCopy_success": UploadPartCopy_success, "UploadPartCopy_by_range_invalid_ranges": UploadPartCopy_by_range_invalid_ranges, "UploadPartCopy_exceeding_copy_source_range": UploadPartCopy_exceeding_copy_source_range, "UploadPartCopy_greater_range_than_obj_size": UploadPartCopy_greater_range_than_obj_size, "UploadPartCopy_by_range_success": UploadPartCopy_by_range_success, "UploadPartCopy_conditional_reads": UploadPartCopy_conditional_reads, "UploadPartCopy_should_copy_the_checksum": UploadPartCopy_should_copy_the_checksum, "UploadPartCopy_should_not_copy_the_checksum": UploadPartCopy_should_not_copy_the_checksum, "UploadPartCopy_should_calculate_the_checksum": UploadPartCopy_should_calculate_the_checksum, "ListParts_incorrect_uploadId": ListParts_incorrect_uploadId, "ListParts_incorrect_object_key": ListParts_incorrect_object_key, "ListParts_invalid_max_parts": ListParts_invalid_max_parts, "ListParts_default_max_parts": ListParts_default_max_parts, "ListParts_truncated": ListParts_truncated, "ListParts_with_checksums": ListParts_with_checksums, "ListParts_null_checksums": ListParts_null_checksums, "ListParts_success": ListParts_success, "ListMultipartUploads_non_existing_bucket": ListMultipartUploads_non_existing_bucket, "ListMultipartUploads_empty_result": ListMultipartUploads_empty_result, "ListMultipartUploads_invalid_max_uploads": ListMultipartUploads_invalid_max_uploads, "ListMultipartUploads_max_uploads": ListMultipartUploads_max_uploads, "ListMultipartUploads_exceeding_max_uploads": ListMultipartUploads_exceeding_max_uploads, "ListMultipartUploads_incorrect_next_key_marker": ListMultipartUploads_incorrect_next_key_marker, "ListMultipartUploads_ignore_upload_id_marker": ListMultipartUploads_ignore_upload_id_marker, "ListMultipartUploads_with_checksums": ListMultipartUploads_with_checksums, "ListMultipartUploads_success": ListMultipartUploads_success, "AbortMultipartUpload_non_existing_bucket": AbortMultipartUpload_non_existing_bucket, "AbortMultipartUpload_incorrect_uploadId": AbortMultipartUpload_incorrect_uploadId, "AbortMultipartUpload_incorrect_object_key": AbortMultipartUpload_incorrect_object_key, "AbortMultipartUpload_success": AbortMultipartUpload_success, "AbortMultipartUpload_success_status_code": AbortMultipartUpload_success_status_code, "AbortMultipartUpload_if_match_initiated_time": AbortMultipartUpload_if_match_initiated_time, "CompletedMultipartUpload_non_existing_bucket": CompletedMultipartUpload_non_existing_bucket, "CompleteMultipartUpload_invalid_part_number": CompleteMultipartUpload_invalid_part_number, "CompleteMultipartUpload_invalid_ETag": CompleteMultipartUpload_invalid_ETag, "CompleteMultipartUpload_small_upload_size": CompleteMultipartUpload_small_upload_size, "CompleteMultipartUpload_empty_parts": CompleteMultipartUpload_empty_parts, "CompleteMultipartUpload_incorrect_parts_order": CompleteMultipartUpload_incorrect_parts_order, "CompleteMultipartUpload_mpu_object_size": CompleteMultipartUpload_mpu_object_size, "CompleteMultipartUpload_conditional_writes": CompleteMultipartUpload_conditional_writes, "CompleteMultipartUpload_with_metadata": CompleteMultipartUpload_with_metadata, "CompleteMultipartUpload_invalid_checksum_type": CompleteMultipartUpload_invalid_checksum_type, "CompleteMultipartUpload_invalid_checksum_part": CompleteMultipartUpload_invalid_checksum_part, "CompleteMultipartUpload_multiple_checksum_part": CompleteMultipartUpload_multiple_checksum_part, "CompleteMultipartUpload_incorrect_checksum_part": CompleteMultipartUpload_incorrect_checksum_part, "CompleteMultipartUpload_different_checksum_part": CompleteMultipartUpload_different_checksum_part, "CompleteMultipartUpload_missing_part_checksum": CompleteMultipartUpload_missing_part_checksum, "CompleteMultipartUpload_multiple_final_checksums": CompleteMultipartUpload_multiple_final_checksums, "CompleteMultipartUpload_invalid_final_checksums": CompleteMultipartUpload_invalid_final_checksums, "CompleteMultipartUpload_incorrect_final_checksums": CompleteMultipartUpload_incorrect_final_checksums, "CompleteMultipartUpload_should_calculate_the_final_checksum_full_object": CompleteMultipartUpload_should_calculate_the_final_checksum_full_object, "CompleteMultipartUpload_should_verify_the_final_checksum": CompleteMultipartUpload_should_verify_the_final_checksum, "CompleteMultipartUpload_should_verify_final_composite_checksum": CompleteMultipartUpload_should_verify_final_composite_checksum, "CompleteMultipartUpload_invalid_final_composite_checksum": CompleteMultipartUpload_invalid_final_composite_checksum, "CompleteMultipartUpload_checksum_type_mismatch": CompleteMultipartUpload_checksum_type_mismatch, "CompleteMultipartUpload_should_ignore_the_final_checksum": CompleteMultipartUpload_should_ignore_the_final_checksum, "CompleteMultipartUpload_should_succeed_without_final_checksum_type": CompleteMultipartUpload_should_succeed_without_final_checksum_type, "CompleteMultipartUpload_success": CompleteMultipartUpload_success, "CompleteMultipartUpload_racey_success": CompleteMultipartUpload_racey_success, "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, "PutBucketAcl_invalid_owner": PutBucketAcl_invalid_owner, "PutBucketAcl_invalid_owner_not_in_body": PutBucketAcl_invalid_owner_not_in_body, "PutBucketAcl_invalid_empty_owner_id_in_body": PutBucketAcl_invalid_empty_owner_id_in_body, "PutBucketAcl_invalid_permission_in_body": PutBucketAcl_invalid_permission_in_body, "PutBucketAcl_invalid_grantee_type_in_body": PutBucketAcl_invalid_grantee_type_in_body, "PutBucketAcl_empty_grantee_ID_in_body": PutBucketAcl_empty_grantee_ID_in_body, "PutBucketAcl_success_access_denied": PutBucketAcl_success_access_denied, "PutBucketAcl_success_grants": PutBucketAcl_success_grants, "PutBucketAcl_success_canned_acl": PutBucketAcl_success_canned_acl, "PutBucketAcl_success_acp": PutBucketAcl_success_acp, "GetBucketAcl_non_existing_bucket": GetBucketAcl_non_existing_bucket, "GetBucketAcl_translation_canned_public_read": GetBucketAcl_translation_canned_public_read, "GetBucketAcl_translation_canned_public_read_write": GetBucketAcl_translation_canned_public_read_write, "GetBucketAcl_translation_canned_private": GetBucketAcl_translation_canned_private, "GetBucketAcl_access_denied": GetBucketAcl_access_denied, "GetBucketAcl_success": GetBucketAcl_success, "PutBucketPolicy_non_existing_bucket": PutBucketPolicy_non_existing_bucket, "PutBucketPolicy_invalid_json": PutBucketPolicy_invalid_json, "PutBucketPolicy_statement_not_provided": PutBucketPolicy_statement_not_provided, "PutBucketPolicy_empty_statement": PutBucketPolicy_empty_statement, "PutBucketPolicy_invalid_effect": PutBucketPolicy_invalid_effect, "PutBucketPolicy_invalid_action": PutBucketPolicy_invalid_action, "PutBucketPolicy_empty_principals_string": PutBucketPolicy_empty_principals_string, "PutBucketPolicy_empty_principals_array": PutBucketPolicy_empty_principals_array, "PutBucketPolicy_principals_aws_struct_empty_string": PutBucketPolicy_principals_aws_struct_empty_string, "PutBucketPolicy_principals_aws_struct_empty_string_slice": PutBucketPolicy_principals_aws_struct_empty_string_slice, "PutBucketPolicy_principals_incorrect_wildcard_usage": PutBucketPolicy_principals_incorrect_wildcard_usage, "PutBucketPolicy_non_existing_principals": PutBucketPolicy_non_existing_principals, "PutBucketPolicy_empty_resources_string": PutBucketPolicy_empty_resources_string, "PutBucketPolicy_empty_resources_array": PutBucketPolicy_empty_resources_array, "PutBucketPolicy_invalid_resource_prefix": PutBucketPolicy_invalid_resource_prefix, "PutBucketPolicy_invalid_resource_with_starting_slash": PutBucketPolicy_invalid_resource_with_starting_slash, "PutBucketPolicy_duplicate_resource": PutBucketPolicy_duplicate_resource, "PutBucketPolicy_incorrect_bucket_name": PutBucketPolicy_incorrect_bucket_name, "PutBucketPolicy_action_resource_mismatch": PutBucketPolicy_action_resource_mismatch, "PutBucketPolicy_explicit_deny": PutBucketPolicy_explicit_deny, "PutBucketPolicy_multi_wildcard_resource": PutBucketPolicy_multi_wildcard_resource, "PutBucketPolicy_any_char_match": PutBucketPolicy_any_char_match, "PutBucketPolicy_version": PutBucketPolicy_version, "PutBucketPolicy_success": PutBucketPolicy_success, "GetBucketPolicy_non_existing_bucket": GetBucketPolicy_non_existing_bucket, "GetBucketPolicy_not_set": GetBucketPolicy_not_set, "GetBucketPolicy_success": GetBucketPolicy_success, "GetBucketPolicyStatus_non_existing_bucket": GetBucketPolicyStatus_non_existing_bucket, "GetBucketPolicyStatus_no_such_bucket_policy": GetBucketPolicyStatus_no_such_bucket_policy, "GetBucketPolicyStatus_success": GetBucketPolicyStatus_success, "DeleteBucketPolicy_non_existing_bucket": DeleteBucketPolicy_non_existing_bucket, "DeleteBucketPolicy_remove_before_setting": DeleteBucketPolicy_remove_before_setting, "DeleteBucketPolicy_success": DeleteBucketPolicy_success, "PutBucketCors_non_existing_bucket": PutBucketCors_non_existing_bucket, "PutBucketCors_empty_cors_rules": PutBucketCors_empty_cors_rules, "PutBucketCors_invalid_method": PutBucketCors_invalid_method, "PutBucketCors_invalid_header": PutBucketCors_invalid_header, "PutBucketCors_md5": PutBucketCors_md5, "GetBucketCors_non_existing_bucket": GetBucketCors_non_existing_bucket, "GetBucketCors_no_such_bucket_cors": GetBucketCors_no_such_bucket_cors, "GetBucketCors_success": GetBucketCors_success, "DeleteBucketCors_non_existing_bucket": DeleteBucketCors_non_existing_bucket, "DeleteBucketCors_success": DeleteBucketCors_success, "PutBucketCors_success": PutBucketCors_success, "PreflightOPTIONS_non_existing_bucket": PreflightOPTIONS_non_existing_bucket, "PreflightOPTIONS_missing_origin": PreflightOPTIONS_missing_origin, "PreflightOPTIONS_invalid_request_method": PreflightOPTIONS_invalid_request_method, "PreflightOPTIONS_invalid_request_headers": PreflightOPTIONS_invalid_request_headers, "PreflightOPTIONS_unset_bucket_cors": PreflightOPTIONS_unset_bucket_cors, "PreflightOPTIONS_access_forbidden": PreflightOPTIONS_access_forbidden, "PreflightOPTIONS_access_granted": PreflightOPTIONS_access_granted, "CORSMiddleware_invalid_method": CORSMiddleware_invalid_method, "CORSMiddleware_invalid_headers": CORSMiddleware_invalid_headers, "CORSMiddleware_access_forbidden": CORSMiddleware_access_forbidden, "CORSMiddleware_access_granted": CORSMiddleware_access_granted, "PutObjectLockConfiguration_non_existing_bucket": PutObjectLockConfiguration_non_existing_bucket, "PutObjectLockConfiguration_empty_request_body": PutObjectLockConfiguration_empty_request_body, "PutObjectLockConfiguration_malformed_body": PutObjectLockConfiguration_malformed_body, "PutObjectLockConfiguration_not_enabled_on_bucket_creation": PutObjectLockConfiguration_not_enabled_on_bucket_creation, "PutObjectLockConfiguration_invalid_status": PutObjectLockConfiguration_invalid_status, "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_success": PutObjectLockConfiguration_success, "GetObjectLockConfiguration_non_existing_bucket": GetObjectLockConfiguration_non_existing_bucket, "GetObjectLockConfiguration_unset_config": GetObjectLockConfiguration_unset_config, "GetObjectLockConfiguration_success": GetObjectLockConfiguration_success, "PutObjectRetention_non_existing_bucket": PutObjectRetention_non_existing_bucket, "PutObjectRetention_non_existing_object": PutObjectRetention_non_existing_object, "PutObjectRetention_unset_bucket_object_lock_config": PutObjectRetention_unset_bucket_object_lock_config, "PutObjectRetention_expired_retain_until_date": PutObjectRetention_expired_retain_until_date, "PutObjectRetention_invalid_mode": PutObjectRetention_invalid_mode, "PutObjectRetention_overwrite_compliance_mode": PutObjectRetention_overwrite_compliance_mode, "PutObjectRetention_overwrite_compliance_with_compliance": PutObjectRetention_overwrite_compliance_with_compliance, "PutObjectRetention_overwrite_governance_with_governance": PutObjectRetention_overwrite_governance_with_governance, "PutObjectRetention_overwrite_governance_without_bypass_specified": PutObjectRetention_overwrite_governance_without_bypass_specified, "PutObjectRetention_overwrite_governance_with_permission": PutObjectRetention_overwrite_governance_with_permission, "PutObjectRetention_success": PutObjectRetention_success, "GetObjectRetention_non_existing_bucket": GetObjectRetention_non_existing_bucket, "GetObjectRetention_non_existing_object": GetObjectRetention_non_existing_object, "GetObjectRetention_disabled_lock": GetObjectRetention_disabled_lock, "GetObjectRetention_unset_config": GetObjectRetention_unset_config, "GetObjectRetention_success": GetObjectRetention_success, "PutObjectLegalHold_non_existing_bucket": PutObjectLegalHold_non_existing_bucket, "PutObjectLegalHold_non_existing_object": PutObjectLegalHold_non_existing_object, "PutObjectLegalHold_invalid_body": PutObjectLegalHold_invalid_body, "PutObjectLegalHold_invalid_status": PutObjectLegalHold_invalid_status, "PutObjectLegalHold_unset_bucket_object_lock_config": PutObjectLegalHold_unset_bucket_object_lock_config, "PutObjectLegalHold_success": PutObjectLegalHold_success, "GetObjectLegalHold_non_existing_bucket": GetObjectLegalHold_non_existing_bucket, "GetObjectLegalHold_non_existing_object": GetObjectLegalHold_non_existing_object, "GetObjectLegalHold_disabled_lock": GetObjectLegalHold_disabled_lock, "GetObjectLegalHold_unset_config": GetObjectLegalHold_unset_config, "GetObjectLegalHold_success": GetObjectLegalHold_success, "PutBucketAnalyticsConfiguration_not_implemented": PutBucketAnalyticsConfiguration_not_implemented, "GetBucketAnalyticsConfiguration_not_implemented": GetBucketAnalyticsConfiguration_not_implemented, "ListBucketAnalyticsConfiguration_not_implemented": ListBucketAnalyticsConfiguration_not_implemented, "DeleteBucketAnalyticsConfiguration_not_implemented": DeleteBucketAnalyticsConfiguration_not_implemented, "PutBucketEncryption_not_implemented": PutBucketEncryption_not_implemented, "GetBucketEncryption_not_implemented": GetBucketEncryption_not_implemented, "DeleteBucketEncryption_not_implemented": DeleteBucketEncryption_not_implemented, "PutBucketIntelligentTieringConfiguration_not_implemented": PutBucketIntelligentTieringConfiguration_not_implemented, "GetBucketIntelligentTieringConfiguration_not_implemented": GetBucketIntelligentTieringConfiguration_not_implemented, "ListBucketIntelligentTieringConfiguration_not_implemented": ListBucketIntelligentTieringConfiguration_not_implemented, "DeleteBucketIntelligentTieringConfiguration_not_implemented": DeleteBucketIntelligentTieringConfiguration_not_implemented, "PutBucketInventoryConfiguration_not_implemented": PutBucketInventoryConfiguration_not_implemented, "GetBucketInventoryConfiguration_not_implemented": GetBucketInventoryConfiguration_not_implemented, "ListBucketInventoryConfiguration_not_implemented": ListBucketInventoryConfiguration_not_implemented, "DeleteBucketInventoryConfiguration_not_implemented": DeleteBucketInventoryConfiguration_not_implemented, "PutBucketLifecycleConfiguration_not_implemented": PutBucketLifecycleConfiguration_not_implemented, "GetBucketLifecycleConfiguration_not_implemented": GetBucketLifecycleConfiguration_not_implemented, "DeleteBucketLifecycle_not_implemented": DeleteBucketLifecycle_not_implemented, "PutBucketLogging_not_implemented": PutBucketLogging_not_implemented, "GetBucketLogging_not_implemented": GetBucketLogging_not_implemented, "PutBucketRequestPayment_not_implemented": PutBucketRequestPayment_not_implemented, "GetBucketRequestPayment_not_implemented": GetBucketRequestPayment_not_implemented, "PutBucketMetricsConfiguration_not_implemented": PutBucketMetricsConfiguration_not_implemented, "GetBucketMetricsConfiguration_not_implemented": GetBucketMetricsConfiguration_not_implemented, "ListBucketMetricsConfigurations_not_implemented": ListBucketMetricsConfigurations_not_implemented, "DeleteBucketMetricsConfiguration_not_implemented": DeleteBucketMetricsConfiguration_not_implemented, "PutBucketReplication_not_implemented": PutBucketReplication_not_implemented, "GetBucketReplication_not_implemented": GetBucketReplication_not_implemented, "DeleteBucketReplication_not_implemented": DeleteBucketReplication_not_implemented, "PutPublicAccessBlock_not_implemented": PutPublicAccessBlock_not_implemented, "GetPublicAccessBlock_not_implemented": GetPublicAccessBlock_not_implemented, "DeletePublicAccessBlock_not_implemented": DeletePublicAccessBlock_not_implemented, "PutBucketNotificationConfiguratio_not_implemented": PutBucketNotificationConfiguratio_not_implemented, "GetBucketNotificationConfiguratio_not_implemented": GetBucketNotificationConfiguratio_not_implemented, "PutBucketAccelerateConfiguration_not_implemented": PutBucketAccelerateConfiguration_not_implemented, "GetBucketAccelerateConfiguration_not_implemented": GetBucketAccelerateConfiguration_not_implemented, "PutBucketWebsite_not_implemented": PutBucketWebsite_not_implemented, "GetBucketWebsite_not_implemented": GetBucketWebsite_not_implemented, "DeleteBucketWebsite_not_implemented": DeleteBucketWebsite_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, "WORMProtection_object_lock_retention_compliance_locked": WORMProtection_object_lock_retention_compliance_locked, "WORMProtection_object_lock_retention_governance_locked": WORMProtection_object_lock_retention_governance_locked, "WORMProtection_object_lock_retention_governance_bypass_overwrite_put": WORMProtection_object_lock_retention_governance_bypass_overwrite_put, "WORMProtection_object_lock_retention_governance_bypass_overwrite_copy": WORMProtection_object_lock_retention_governance_bypass_overwrite_copy, "WORMProtection_object_lock_retention_governance_bypass_overwrite_mp": WORMProtection_object_lock_retention_governance_bypass_overwrite_mp, "WORMProtection_unable_to_overwrite_locked_object_put": WORMProtection_unable_to_overwrite_locked_object_put, "WORMProtection_unable_to_overwrite_locked_object_copy": WORMProtection_unable_to_overwrite_locked_object_copy, "WORMProtection_unable_to_overwrite_locked_object_mp": WORMProtection_unable_to_overwrite_locked_object_mp, "WORMProtection_object_lock_retention_governance_bypass_delete": WORMProtection_object_lock_retention_governance_bypass_delete, "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, "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, "PutObject_dir_obj_with_data": PutObject_dir_obj_with_data, "PutObject_with_slashes": PutObject_with_slashes, "CreateMultipartUpload_dir_obj": CreateMultipartUpload_dir_obj, "IAM_user_access_denied": IAM_user_access_denied, "IAM_userplus_access_denied": IAM_userplus_access_denied, "IAM_userplus_CreateBucket": IAM_userplus_CreateBucket, "IAM_admin_ChangeBucketOwner": IAM_admin_ChangeBucketOwner, "IAM_ChangeBucketOwner_back_to_root": IAM_ChangeBucketOwner_back_to_root, "AccessControl_default_ACL_user_access_denied": AccessControl_default_ACL_user_access_denied, "AccessControl_default_ACL_userplus_access_denied": AccessControl_default_ACL_userplus_access_denied, "AccessControl_default_ACL_admin_successful_access": AccessControl_default_ACL_admin_successful_access, "AccessControl_bucket_resource_single_action": AccessControl_bucket_resource_single_action, "AccessControl_bucket_resource_all_action": AccessControl_bucket_resource_all_action, "AccessControl_single_object_resource_actions": AccessControl_single_object_resource_actions, "AccessControl_multi_statement_policy": AccessControl_multi_statement_policy, "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, "PublicBucket_default_private_bucket": PublicBucket_default_private_bucket, "PublicBucket_public_bucket_policy": PublicBucket_public_bucket_policy, "PublicBucket_public_object_policy": PublicBucket_public_object_policy, "PublicBucket_public_acl": PublicBucket_public_acl, "PublicBucket_signed_streaming_payload": PublicBucket_signed_streaming_payload, "PublicBucket_incorrect_sha256_hash": PublicBucket_incorrect_sha256_hash, "PutBucketVersioning_non_existing_bucket": PutBucketVersioning_non_existing_bucket, "PutBucketVersioning_invalid_status": PutBucketVersioning_invalid_status, "PutBucketVersioning_success_enabled": PutBucketVersioning_success_enabled, "PutBucketVersioning_success_suspended": PutBucketVersioning_success_suspended, "GetBucketVersioning_non_existing_bucket": GetBucketVersioning_non_existing_bucket, "GetBucketVersioning_empty_response": GetBucketVersioning_empty_response, "GetBucketVersioning_success": GetBucketVersioning_success, "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, "Versioning_PutObject_overwrite_null_versionId_obj": Versioning_PutObject_overwrite_null_versionId_obj, "Versioning_PutObject_success": Versioning_PutObject_success, "Versioning_CopyObject_invalid_versionId": Versioning_CopyObject_invalid_versionId, "Versioning_CopyObject_success": Versioning_CopyObject_success, "Versioning_CopyObject_non_existing_version_id": Versioning_CopyObject_non_existing_version_id, "Versioning_CopyObject_from_an_object_version": Versioning_CopyObject_from_an_object_version, "Versioning_CopyObject_special_chars": Versioning_CopyObject_special_chars, "Versioning_HeadObject_invalid_versionId": Versioning_HeadObject_invalid_versionId, "Versioning_HeadObject_non_existing_object_version": Versioning_HeadObject_non_existing_object_version, "Versioning_HeadObject_invalid_parent": Versioning_HeadObject_invalid_parent, "Versioning_HeadObject_success": Versioning_HeadObject_success, "Versioning_HeadObject_without_versionId": Versioning_HeadObject_without_versionId, "Versioning_HeadObject_delete_marker": Versioning_HeadObject_delete_marker, "Versioning_GetObject_invalid_versionId": Versioning_GetObject_invalid_versionId, "Versioning_GetObject_non_existing_object_version": Versioning_GetObject_non_existing_object_version, "Versioning_GetObject_success": Versioning_GetObject_success, "Versioning_GetObject_delete_marker_without_versionId": Versioning_GetObject_delete_marker_without_versionId, "Versioning_GetObject_delete_marker": Versioning_GetObject_delete_marker, "Versioning_GetObject_null_versionId_obj": Versioning_GetObject_null_versionId_obj, "Versioning_PutObjectTagging_invalid_versionId": Versioning_PutObjectTagging_invalid_versionId, "Versioning_PutObjectTagging_non_existing_object_version": Versioning_PutObjectTagging_non_existing_object_version, "Versioning_GetObjectTagging_invalid_versionId": Versioning_GetObjectTagging_invalid_versionId, "Versioning_GetObjectTagging_non_existing_object_version": Versioning_GetObjectTagging_non_existing_object_version, "Versioning_DeleteObjectTagging_invalid_versionId": Versioning_DeleteObjectTagging_invalid_versionId, "Versioning_DeleteObjectTagging_non_existing_object_version": Versioning_DeleteObjectTagging_non_existing_object_version, "Versioning_PutGetDeleteObjectTagging_success": Versioning_PutGetDeleteObjectTagging_success, "Versioning_GetObjectAttributes_invalid_versionId": Versioning_GetObjectAttributes_invalid_versionId, "Versioning_GetObjectAttributes_object_version": Versioning_GetObjectAttributes_object_version, "Versioning_GetObjectAttributes_delete_marker": Versioning_GetObjectAttributes_delete_marker, "Versioning_DeleteObject_invalid_versionId": Versioning_DeleteObject_invalid_versionId, "Versioning_DeleteObject_delete_object_version": Versioning_DeleteObject_delete_object_version, "Versioning_DeleteObject_non_existing_object": Versioning_DeleteObject_non_existing_object, "Versioning_DeleteObject_delete_a_delete_marker": Versioning_DeleteObject_delete_a_delete_marker, "Versioning_Delete_null_versionId_object": Versioning_Delete_null_versionId_object, "Versioning_DeleteObject_nested_dir_object": Versioning_DeleteObject_nested_dir_object, "Versioning_DeleteObject_suspended": Versioning_DeleteObject_suspended, "Versioning_DeleteObjects_success": Versioning_DeleteObjects_success, "Versioning_DeleteObjects_delete_deleteMarkers": Versioning_DeleteObjects_delete_deleteMarkers, "ListObjectVersions_non_existing_bucket": ListObjectVersions_non_existing_bucket, "ListObjectVersions_list_single_object_versions": ListObjectVersions_list_single_object_versions, "ListObjectVersions_list_multiple_object_versions": ListObjectVersions_list_multiple_object_versions, "ListObjectVersions_multiple_object_versions_truncated": ListObjectVersions_multiple_object_versions_truncated, "ListObjectVersions_with_delete_markers": ListObjectVersions_with_delete_markers, "ListObjectVersions_containing_null_versionId_obj": ListObjectVersions_containing_null_versionId_obj, "ListObjectVersions_single_null_versionId_object": ListObjectVersions_single_null_versionId_object, "ListObjectVersions_checksum": ListObjectVersions_checksum, "Versioning_Multipart_Upload_success": Versioning_Multipart_Upload_success, "Versioning_Multipart_Upload_overwrite_an_object": Versioning_Multipart_Upload_overwrite_an_object, "Versioning_UploadPartCopy_invalid_versionId": Versioning_UploadPartCopy_invalid_versionId, "Versioning_UploadPartCopy_non_existing_versionId": Versioning_UploadPartCopy_non_existing_versionId, "Versioning_UploadPartCopy_from_an_object_version": Versioning_UploadPartCopy_from_an_object_version, "Versioning_object_lock_not_enabled_on_bucket_creation": Versioning_object_lock_not_enabled_on_bucket_creation, "Versioning_Enable_object_lock": Versioning_Enable_object_lock, "Versioning_status_switch_to_suspended_with_object_lock": Versioning_status_switch_to_suspended_with_object_lock, "Versioning_PutObjectRetention_invalid_versionId": Versioning_PutObjectRetention_invalid_versionId, "Versioning_PutObjectRetention_non_existing_object_version": Versioning_PutObjectRetention_non_existing_object_version, "Versioning_GetObjectRetention_invalid_versionId": Versioning_GetObjectRetention_invalid_versionId, "Versioning_GetObjectRetention_non_existing_object_version": Versioning_GetObjectRetention_non_existing_object_version, "Versioning_Put_GetObjectRetention_success": Versioning_Put_GetObjectRetention_success, "Versioning_PutObjectLegalHold_invalid_versionId": Versioning_PutObjectLegalHold_invalid_versionId, "Versioning_PutObjectLegalHold_non_existing_object_version": Versioning_PutObjectLegalHold_non_existing_object_version, "Versioning_GetObjectLegalHold_invalid_versionId": Versioning_GetObjectLegalHold_invalid_versionId, "Versioning_GetObjectLegalHold_non_existing_object_version": Versioning_GetObjectLegalHold_non_existing_object_version, "Versioning_Put_GetObjectLegalHold_success": Versioning_Put_GetObjectLegalHold_success, "Versioning_WORM_obj_version_locked_with_legal_hold": Versioning_WORM_obj_version_locked_with_legal_hold, "Versioning_WORM_obj_version_locked_with_governance_retention": Versioning_WORM_obj_version_locked_with_governance_retention, "Versioning_WORM_obj_version_locked_with_compliance_retention": Versioning_WORM_obj_version_locked_with_compliance_retention, "Versioning_WORM_PutObject_overwrite_locked_object": Versioning_WORM_PutObject_overwrite_locked_object, "Versioning_WORM_CopyObject_overwrite_locked_object": Versioning_WORM_CopyObject_overwrite_locked_object, "Versioning_WORM_CompleteMultipartUpload_overwrite_locked_object": Versioning_WORM_CompleteMultipartUpload_overwrite_locked_object, "Versioning_AccessControl_GetObjectVersion": Versioning_AccessControl_GetObjectVersion, "Versioning_AccessControl_HeadObjectVersion": Versioning_AccessControl_HeadObjectVersion, "Versioning_AccessControl_object_tagging_policy": Versioning_AccessControl_object_tagging_policy, "Versioning_AccessControl_DeleteObject_policy": Versioning_AccessControl_DeleteObject_policy, "Versioning_AccessControl_GetObjectAttributes_policy": Versioning_AccessControl_GetObjectAttributes_policy, "Versioning_concurrent_upload_object": Versioning_concurrent_upload_object, "RouterPutPartNumberWithoutUploadId": RouterPutPartNumberWithoutUploadId, "RouterPostRoot": RouterPostRoot, "RouterPostObjectWithoutQuery": RouterPostObjectWithoutQuery, "RouterPUTObjectOnlyUploadId": RouterPUTObjectOnlyUploadId, "RouterGetUploadsWithKey": RouterGetUploadsWithKey, "RouterCopySourceNotAllowed": RouterCopySourceNotAllowed, "UnsignedStreaminPayloadTrailer_malformed_trailer": UnsignedStreaminPayloadTrailer_malformed_trailer, "UnsignedStreamingPayloadTrailer_missing_invalid_dec_content_length": UnsignedStreamingPayloadTrailer_missing_invalid_dec_content_length, "UnsignedStreamingPayloadTrailer_invalid_trailing_checksum": UnsignedStreamingPayloadTrailer_invalid_trailing_checksum, "UnsignedStreamingPayloadTrailer_incorrect_trailing_checksum": UnsignedStreamingPayloadTrailer_incorrect_trailing_checksum, "UnsignedStreamingPayloadTrailer_multiple_checksum_headers": UnsignedStreamingPayloadTrailer_multiple_checksum_headers, "UnsignedStreamingPayloadTrailer_sdk_algo_and_trailer_mismatch": UnsignedStreamingPayloadTrailer_sdk_algo_and_trailer_mismatch, "UnsignedStreamingPayloadTrailer_incomplete_body": UnsignedStreamingPayloadTrailer_incomplete_body, "UnsignedStreamingPayloadTrailer_invalid_chunk_size": UnsignedStreamingPayloadTrailer_invalid_chunk_size, "UnsignedStreamingPayloadTrailer_content_length_payload_size_mismatch": UnsignedStreamingPayloadTrailer_content_length_payload_size_mismatch, "UnsignedStreamingPayloadTrailer_no_trailer_should_calculate_crc64nvme": UnsignedStreamingPayloadTrailer_no_trailer_should_calculate_crc64nvme, "UnsignedStreamingPayloadTrailer_no_payload_trailer_only_headers": UnsignedStreamingPayloadTrailer_no_payload_trailer_only_headers, "UnsignedStreamingPayloadTrailer_success_both_sdk_algo_and_trailer": UnsignedStreamingPayloadTrailer_success_both_sdk_algo_and_trailer, "UnsignedStreamingPayloadTrailer_UploadPart_no_trailer_composite_checksum": UnsignedStreamingPayloadTrailer_UploadPart_no_trailer_composite_checksum, "UnsignedStreamingPayloadTrailer_UploadPart_no_trailer_full_object": UnsignedStreamingPayloadTrailer_UploadPart_no_trailer_full_object, "UnsignedStreamingPayloadTrailer_UploadPart_trailer_and_mp_algo_mismatch": UnsignedStreamingPayloadTrailer_UploadPart_trailer_and_mp_algo_mismatch, "UnsignedStreamingPayloadTrailer_UploadPart_success_with_trailer": UnsignedStreamingPayloadTrailer_UploadPart_success_with_trailer, "UnsignedStreamingPayloadTrailer_not_allowed": UnsignedStreamingPayloadTrailer_not_allowed, } }