From 921de79f544c3831c1979e4a0e158d707fe33435 Mon Sep 17 00:00:00 2001 From: Luke McCrone Date: Tue, 6 Oct 2026 17:24:12 -0300 Subject: [PATCH] test: some skips removals, cleanup, possible log deletion fix --- .../get_bucket_cors/get_bucket_cors_rest.sh | 13 +- .../drivers/list_buckets/list_buckets_rest.sh | 16 +- .../list_multipart_uploads_rest.sh | 13 +- tests/env.sh | 23 +- tests/test_rest_cors.sh | 10 +- tests/test_rest_delete_bucket.sh | 6 +- tests/test_rest_get_object.sh | 19 +- tests/test_rest_list_buckets.sh | 34 +-- tests/test_rest_list_multipart_uploads.sh | 17 +- tests/test_rest_list_object_versions.sh | 4 +- tests/test_rest_list_objects.sh | 18 +- tests/test_rest_put_object.sh | 211 ++++++++---------- tests/test_rest_website.sh | 3 - tests/versity.sh | 2 +- 14 files changed, 174 insertions(+), 215 deletions(-) diff --git a/tests/drivers/get_bucket_cors/get_bucket_cors_rest.sh b/tests/drivers/get_bucket_cors/get_bucket_cors_rest.sh index 7f8c59bb..799969d9 100644 --- a/tests/drivers/get_bucket_cors/get_bucket_cors_rest.sh +++ b/tests/drivers/get_bucket_cors/get_bucket_cors_rest.sh @@ -17,14 +17,16 @@ source ./tests/drivers/rest.sh check_cors_404_content_type_header_and_bucket_name() { - if ! check_param_count_v2 "data file" 1 $#; then + if ! check_param_count_v2 "data file, bucket name" 2 $#; then return 1 fi - if ! check_for_header_key_and_value "$1" "Content-Type" "application/xml"; then + local data_file="$1" bucket_name="$2" + + if ! check_for_header_key_and_value "$data_file" "Content-Type" "application/xml"; then log 2 "error checking Content-Type header and value" return 1 fi - if ! check_specific_argument_name_and_value "$1"; then + if ! check_specific_argument_name_and_value "$data_file" "BucketName" "$bucket_name"; then log 2 "error checking BucketName" return 1 fi @@ -35,10 +37,11 @@ get_bucket_cors_check_404_header_and_bucket_name() { if ! check_param_count_v2 "bucket name" 1 $#; then return 1 fi + local bucket_name="$1" + # shellcheck disable=SC2034 - argument_name="BucketName" argument_value="$1" if ! send_rest_go_command_expect_error_callback "404" "NoSuchCORSConfiguration" "The CORS configuration does not exist" \ - "check_cors_404_content_type_header_and_bucket_name" "-bucketName" "$1" "-query" "cors"; then + "check_cors_404_content_type_header_and_bucket_name" "-bucketName" "$bucket_name" "-query" "cors" "--" "$bucket_name"; then log 2 "error sending get cors command and checking result" return 1 fi diff --git a/tests/drivers/list_buckets/list_buckets_rest.sh b/tests/drivers/list_buckets/list_buckets_rest.sh index cac1d7e8..ebd33810 100644 --- a/tests/drivers/list_buckets/list_buckets_rest.sh +++ b/tests/drivers/list_buckets/list_buckets_rest.sh @@ -211,20 +211,24 @@ list_check_buckets_rest_with_prefix() { } list_buckets_check_authorization_scheme_error() { - bad_scheme_name="AWS-HMAC-SHA25" - if ! send_rest_go_command_expect_error_callback "400" "InvalidArgument" "Unsupported Authorization Type" "parse_and_check_authorization_data" "-authorizationScheme" "$bad_scheme_name"; then + local bad_scheme_name="AWS-HMAC-SHA25" + if ! send_rest_go_command_expect_error_callback "400" "InvalidArgument" "Unsupported Authorization Type" \ + "parse_and_check_authorization_data" "-authorizationScheme" "$bad_scheme_name" "--" "$bad_scheme_name"; then log 2 "error sending command and checking results" return 1 fi + return 0 } parse_and_check_authorization_data() { - if ! check_param_count_v2 "data file" 1 $#; then + if ! check_param_count_v2 "data file, bad scheme name" 2 $#; then return 1 fi + local data_file="$1" bad_scheme_name="$2" + local argument_name argument_value # shellcheck disable=SC2154 - log 5 "bucket list: $(cat "$1")" - if ! argument_name=$(get_element_text "$1" "Error" "ArgumentName"); then + log 5 "bucket list: $(cat "$data_file")" + if ! argument_name=$(get_element_text "$data_file" "Error" "ArgumentName"); then log 2 "error getting argument name" return 1 fi @@ -232,7 +236,7 @@ parse_and_check_authorization_data() { log 2 "expected 'Authorization', was '$argument_name'" return 1 fi - if ! argument_value=$(get_element_text "$1" "Error" "ArgumentValue"); then + if ! argument_value=$(get_element_text "$data_file" "Error" "ArgumentValue"); then log 2 "error getting argument value" return 1 fi diff --git a/tests/drivers/list_multipart_uploads/list_multipart_uploads_rest.sh b/tests/drivers/list_multipart_uploads/list_multipart_uploads_rest.sh index 6495a2e8..7cdfdf0e 100644 --- a/tests/drivers/list_multipart_uploads/list_multipart_uploads_rest.sh +++ b/tests/drivers/list_multipart_uploads/list_multipart_uploads_rest.sh @@ -127,12 +127,14 @@ check_for_no_upload_id() { if ! check_param_count_v2 "data file, unexpected upload ID, first upload ID" 3 $#; then return 1 fi - check_if_element_exists "$1" "$2" "UploadIdMarker" + local data_file="$1" second_upload_id="$2" first_upload_id="$3" + + check_if_element_exists "$data_file" "$second_upload_id" "UploadIdMarker" if [ "$?" -ne 1 ]; then - log 2 "error checking for element, or '$2' actually exists in 'UploadIdMarker' (data: $(cat "$1"))" + log 2 "error checking for element, or '$second_upload_id' actually exists in 'UploadIdMarker' (data: $(cat "$data_file"))" return 1 fi - if ! check_xml_element "$1" "$3" "Upload" "UploadId"; then + if ! check_xml_element "$data_file" "$first_upload_id" "Upload" "UploadId"; then log 2 "error checking upload ID" return 1 fi @@ -140,12 +142,13 @@ check_for_no_upload_id() { } list_multipart_uploads_check_no_upload_id_in_response() { - if ! check_param_count_v2 "bucket, upload ID query, second upload ID" 3 $#; then + if ! check_param_count_v2 "bucket, upload ID query, first upload ID" 3 $#; then return 1 fi + local bucket="$1" second_upload_id="$2" first_upload_id="$3" local response - if ! response=$(send_rest_go_command_callback "200" "check_for_no_upload_id" "-bucketName" "$1" "-query" "uploads&max-uploads=1&upload-id-marker=$2" "--" "$2" "$3" 2>&1); then + if ! response=$(send_rest_go_command_callback "200" "check_for_no_upload_id" "-bucketName" "$bucket" "-query" "uploads&max-uploads=1&upload-id-marker=$second_upload_id" "--" "$second_upload_id" "$first_upload_id" 2>&1); then log 2 "error sending multipart upload and checking for no upload ID marker in response" return 1 fi diff --git a/tests/env.sh b/tests/env.sh index 582fd3a3..75e2ec49 100644 --- a/tests/env.sh +++ b/tests/env.sh @@ -220,6 +220,19 @@ check_universal_vars() { return 1 fi fi + if [ -n "$TEST_LOG_FILE" ]; then + local test_log_path test_file_dir + test_log_path="$(cd "$(dirname "$TEST_LOG_FILE")" && pwd)/$(basename "$TEST_LOG_FILE")" + test_file_dir="$(cd "$TEST_FILE_FOLDER" && pwd)" + + case "$test_log_path" in + "$test_file_dir"/*) + log 1 "TEST_LOG_FILE is inside TEST_FILE_FOLDER" + return 1 + ;; + esac + fi + export TEST_FILE_FOLDER if ! init_command_log; then log 1 "error initializing command log" @@ -408,8 +421,16 @@ check_user_profile_and_add_if_needed() { return 0 } +get_test_log_folder() { + if [ -n "$TEST_LOG_FILE" ]; then + dirname "$TEST_LOG_FILE" + return 0 + fi + printf '%s\n' "${TMPDIR:-/tmp}" +} + init_command_log() { - COMMAND_LOG="$TEST_FILE_FOLDER/command-$(uuidgen).log" + COMMAND_LOG="$(get_test_log_folder)/command-$(uuidgen).log" log 5 "command log: $COMMAND_LOG" export COMMAND_LOG diff --git a/tests/test_rest_cors.sh b/tests/test_rest_cors.sh index 55cdb722..0ab32a7b 100755 --- a/tests/test_rest_cors.sh +++ b/tests/test_rest_cors.sh @@ -23,15 +23,11 @@ source ./tests/setup.sh # tags: curl,cors,GetBucketCors,minimal-request @test "REST - GetCors - correct content-type, and returns bucket name" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1842" - fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name=$output + local bucket_name - run setup_bucket_v2 "$bucket_name" + run setup_bucket_v3 "$BUCKET_ONE_NAME" assert_success + bucket_name="$output" run get_bucket_cors_check_404_header_and_bucket_name "$bucket_name" assert_success diff --git a/tests/test_rest_delete_bucket.sh b/tests/test_rest_delete_bucket.sh index 40e02395..0ea79a40 100755 --- a/tests/test_rest_delete_bucket.sh +++ b/tests/test_rest_delete_bucket.sh @@ -158,9 +158,11 @@ source ./tests/drivers/put_object/put_object_rest.sh # tags: curl,DeleteBucket,PutObject @test "REST - DeleteBucket - BucketNotEmpty error contains bucket that is not empty" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1780" + if [ "$RECREATE_BUCKETS" == "false" ]; then + skip "avoid bucket deletion in static mode" fi + local bucket_name test_file + run get_bucket_name "$BUCKET_ONE_NAME" assert_success bucket_name="$output" diff --git a/tests/test_rest_get_object.sh b/tests/test_rest_get_object.sh index c6133dd4..85431ab0 100755 --- a/tests/test_rest_get_object.sh +++ b/tests/test_rest_get_object.sh @@ -102,19 +102,18 @@ source ./tests/setup.sh # tags: curl,GetObject,partNumber,range,Content-Range @test "REST - GetObject - part number 1 returns 206, Content-Range header" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/2074" - fi + local bucket_name file_name + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" - assert_success - read -r bucket_name file_name <<< "$output" + assert_success + read -r bucket_name file_name <<< "$output" - run put_object_rest "$TEST_FILE_FOLDER/$file_name" "$bucket_name" "$file_name" - assert_success + run put_object_rest "$TEST_FILE_FOLDER/$file_name" "$bucket_name" "$file_name" + assert_success - run send_rest_go_command_callback "206" "check_for_header_key_and_value" "-bucketName" "$bucket_name" "-objectKey" "$file_name" "-query" "partNumber=1" \ - "--" "Content-Range" "bytes 0-9/10" - assert_success + run send_rest_go_command_callback "206" "check_for_header_key_and_value" "-bucketName" "$bucket_name" "-objectKey" "$file_name" "-query" "partNumber=1" \ + "--" "Content-Range" "bytes 0-9/10" + assert_success } # tags: curl,GetObject,invalid-header,response-headers diff --git a/tests/test_rest_list_buckets.sh b/tests/test_rest_list_buckets.sh index 128cf1c5..d5480d35 100755 --- a/tests/test_rest_list_buckets.sh +++ b/tests/test_rest_list_buckets.sh @@ -55,7 +55,7 @@ export RUN_USERS=true # tags: curl,ListBuckets,required-headers,Authorization,invalid-header @test "REST - invalid authorization scheme" { if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1705" + skip "https://github.com/versity/versitygw/issues/2489" fi run list_buckets_check_authorization_scheme_error assert_success @@ -223,20 +223,12 @@ export RUN_USERS=true # tags: curl,invalid-method @test "REST - service route - invalid POST route" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1810" - fi - run get_file_name - assert_success - file_name=$output + local bucket_name - run get_bucket_name "$BUCKET_ONE_NAME" + run setup_bucket_v3 "$BUCKET_ONE_NAME" assert_success bucket_name="$output" - run setup_bucket_and_add_file "$bucket_name" "$file_name" - assert_success - run send_rest_go_command_expect_error_with_specific_arg_names_values "405" "MethodNotAllowed" "is not allowed" 4 "Method" "POST" "ResourceType" "SERVICE" "-method" "POST" assert_success } @@ -352,32 +344,24 @@ export RUN_USERS=true # tags: curl,ListBuckets,required-headers,x-amz-date @test "REST - ListBuckets - omit date" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1934" - fi - run get_bucket_name "$BUCKET_ONE_NAME" + local bucket_name + + run setup_bucket_v3 "$BUCKET_ONE_NAME" assert_success bucket_name="$output" - run setup_bucket "$bucket_name" - assert_success - run send_rest_go_command_expect_error "403" "AccessDenied" "AWS authentication requires a valid Date or x-amz-date header" "-omitDate" assert_success } # tags: curl,ListBuckets,required-headers,x-amz-date @test "REST - ListBuckets - invalid date" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1934" - fi - run get_bucket_name "$BUCKET_ONE_NAME" + local bucket_name + + run setup_bucket_v3 "$BUCKET_ONE_NAME" assert_success bucket_name="$output" - run setup_bucket "$bucket_name" - assert_success - run send_rest_go_command_expect_error "403" "AccessDenied" "AWS authentication requires a valid Date or x-amz-date header" "-customDate" "ABCDEFG" assert_success } diff --git a/tests/test_rest_list_multipart_uploads.sh b/tests/test_rest_list_multipart_uploads.sh index 4e68925f..a066eb3a 100755 --- a/tests/test_rest_list_multipart_uploads.sh +++ b/tests/test_rest_list_multipart_uploads.sh @@ -110,9 +110,8 @@ source ./tests/setup.sh # tags: curl,ListMultipartUploads,multipart,uploadId @test "REST - ListMultipartUploads - uploadId without key should be ignored" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/2150" - fi + local bucket_name test_file upload_id_one upload_id_two + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success read -r bucket_name test_file <<< "$output" @@ -125,16 +124,8 @@ source ./tests/setup.sh assert_success upload_id_two=$output - local first_upload_id second_upload_id - if [[ "$upload_id_one" < "$upload_id_two" ]]; then - first_upload_id="$upload_id_one" - second_upload_id="$upload_id_two" - else - first_upload_id="$upload_id_two" - second_upload_id="$upload_id_one" - fi - - run list_multipart_uploads_check_no_upload_id_in_response "$bucket_name" "$second_upload_id" "$first_upload_id" + # NOTE: upload IDs are ordered by initiation time, not lexicographically, so first created is first returned + run list_multipart_uploads_check_no_upload_id_in_response "$bucket_name" "$upload_id_two" "$upload_id_one" assert_success } diff --git a/tests/test_rest_list_object_versions.sh b/tests/test_rest_list_object_versions.sh index c3ec8617..7891818c 100755 --- a/tests/test_rest_list_object_versions.sh +++ b/tests/test_rest_list_object_versions.sh @@ -87,8 +87,10 @@ source ./tests/util/util_time.sh @test "ListObjectVersions - version ID marker w/o key marker" { if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/2174" + skip "https://github.com/versity/versitygw/issues/1808" fi + local bucket_name file_one file_two + run setup_bucket_and_add_files_v3 "$BUCKET_ONE_NAME" "2" assert_success read -r bucket_name file_one file_two <<< "$output" diff --git a/tests/test_rest_list_objects.sh b/tests/test_rest_list_objects.sh index f215e700..5fa6fbeb 100755 --- a/tests/test_rest_list_objects.sh +++ b/tests/test_rest_list_objects.sh @@ -88,23 +88,11 @@ source ./tests/drivers/objects_and_versions.sh # tags: curl,ListObjectsV2,bucket-region,x-amz-bucket-region @test "REST - ListObjectsV2 - includes bucket header" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1814" - fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file test_file_two - run get_file_name - assert_success - test_file="$output" - - run get_file_name - assert_success - test_file_two="$output" - - run setup_bucket_and_add_files "$bucket_name" "$test_file" "$test_file_two" + run setup_bucket_and_add_files_v3 "$BUCKET_ONE_NAME" 2 assert_success + read -r bucket_name test_file test_file_two <<< "$output" run send_rest_go_command_check_header_key_and_value "200" "x-amz-bucket-region" "$AWS_REGION" "-method" "GET" \ "-bucketName" "$bucket_name" "-query" "list-type=2" diff --git a/tests/test_rest_put_object.sh b/tests/test_rest_put_object.sh index 070777ab..9a3e2f61 100755 --- a/tests/test_rest_put_object.sh +++ b/tests/test_rest_put_object.sh @@ -27,17 +27,15 @@ source ./tests/util/util_public_access_block.sh source ./tests/util/util_time.sh source ./tests/drivers/get_object/get_object_rest.sh -test_file="test_file" export RUN_USERS=true # tags: curl, PutObject, chunked, x-amz-content-sha256, content-length @test "REST - put object w/STREAMING-AWS4-HMAC-SHA256-PAYLOAD without content length" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_object_rest_chunked_payload_type_without_content_length "$TEST_FILE_FOLDER/$test_file" "$bucket_name" "$test_file" assert_success @@ -45,12 +43,11 @@ export RUN_USERS=true # tags: curl, PutObject, content-encoding @test "REST - PutObject - aws-chunked kept when the payload is not chunked" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_object_rest_with_content_encoding "$TEST_FILE_FOLDER/$test_file" "$bucket_name" "$test_file" "aws-chunked" assert_success @@ -61,12 +58,11 @@ export RUN_USERS=true # tags: curl, PutObject, content-encoding, x-amz-content-sha256, invalid-header @test "REST - PutObject - aws-chunked with UNSIGNED-PAYLOAD rejected" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_object_rest_unsigned_payload_with_aws_chunked "$TEST_FILE_FOLDER/$test_file" "$bucket_name" "$test_file" assert_success @@ -74,12 +70,11 @@ export RUN_USERS=true # tags: curl, PutObject, Expires, invalid-header @test "REST - PutObject - invalid 'Expires' parameter" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_object_rest_check_expires_header "$TEST_FILE_FOLDER/$test_file" "$bucket_name" "$test_file" assert_success @@ -90,10 +85,16 @@ export RUN_USERS=true if [ "$SKIP_USERS_TESTS" == "true" ]; then skip "skipping versity-specific users tests" fi + local bucket_name test_file username password + run get_bucket_name "$BUCKET_ONE_NAME" assert_success bucket_name="$output" + run get_file_name + assert_success + test_file="$output" + run setup_bucket_file_and_user_v2 "$bucket_name" "$test_file" "$USERNAME_ONE" "$PASSWORD_ONE" "admin" assert_success username="${lines[${#lines[@]}-2]}" @@ -109,10 +110,16 @@ export RUN_USERS=true if [ "$SKIP_USERS_TESTS" == "true" ]; then skip "skipping versity-specific users tests" fi + local bucket_name test_file username password + run get_bucket_name "$BUCKET_ONE_NAME" assert_success bucket_name="$output" + run get_file_name + assert_success + test_file="$output" + run setup_bucket_file_and_user_v2 "$bucket_name" "$test_file" "$USERNAME_ONE" "$PASSWORD_ONE" "user" assert_success username="${lines[${#lines[@]}-2]}" @@ -127,12 +134,11 @@ export RUN_USERS=true if [ "$DIRECT" != "true" ]; then skip "https://github.com/versity/versitygw/issues/1321" fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_object_without_content_length "$bucket_name" "$test_file" "$TEST_FILE_FOLDER/$test_file" assert_success @@ -140,12 +146,11 @@ export RUN_USERS=true # tags: curl, PutObject, x-amz-checksum-algorithm, checksum @test "REST - PutObject w/x-amz-checksum-algorithm" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_object_rest_with_unneeded_algorithm_param "$TEST_FILE_FOLDER/$test_file" "$bucket_name" "$test_file" "crc32c" assert_success @@ -153,12 +158,11 @@ export RUN_USERS=true # tags: curl, PutObject, If-None-Match, not-implemented @test "REST - PutObject - If-None-Match - no asterisk" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_add_file "$bucket_name" "$test_file" + run setup_bucket_and_add_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command_expect_error "501" "NotImplemented" "not implemented" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "If-None-Match:true" @@ -167,12 +171,11 @@ export RUN_USERS=true # tags: curl, PutObject, If-None-Match @test "REST - PutObject - If-None-Match - block copy" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_add_file "$bucket_name" "$test_file" + run setup_bucket_and_add_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command_expect_error "412" "PreconditionFailed" "did not hold" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "If-None-Match:*" @@ -181,12 +184,11 @@ export RUN_USERS=true # tags: curl, PutObject, If-None-Match @test "REST - PutObject - If-None-Match - success" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command "200" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "if-none-match:*" @@ -195,12 +197,11 @@ export RUN_USERS=true # tags: curl, PutObject, If-Match @test "REST - PutObject - If-Match - file doesn't exist on server" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" send_rest_go_command_expect_error "404" "NoSuchKey" "key does not exist" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "if-match:abc" @@ -209,12 +210,11 @@ export RUN_USERS=true # tags: curl, PutObject, If-Match, ETag @test "REST - PutObject - If-Match - incorrect etag" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_add_file "$bucket_name" "$test_file" + run setup_bucket_and_add_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command_expect_error "412" "PreconditionFailed" "did not hold" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "if-match:abc" @@ -223,12 +223,11 @@ export RUN_USERS=true # tags: curl, PutObject, If-Match, ETag @test "REST - PutObject - If-Match - correct etag" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file etag - run setup_bucket_and_add_file "$bucket_name" "$test_file" + run setup_bucket_and_add_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run get_etag_rest "$bucket_name" "$test_file" assert_success @@ -242,15 +241,11 @@ export RUN_USERS=true # tags: curl, PutObject @test "PutObject - metadata keys are made lowercase" { - uppercase_key="CAPITAL" - uppercase_value="DUMMY" + local uppercase_key="CAPITAL" uppercase_value="DUMMY" bucket_name test_file - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" - - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_add_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command "200" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "x-amz-meta-$uppercase_key:$uppercase_value" @@ -265,10 +260,16 @@ export RUN_USERS=true if [ "$SKIP_USERS_TESTS" == "true" ]; then skip "skipping versitygw-specific users tests" fi + local bucket_name test_file username password + run get_bucket_name "$BUCKET_ONE_NAME" assert_success bucket_name="$output" + run get_file_name + assert_success + test_file="$output" + run setup_bucket_file_and_user_v2 "$bucket_name" "$test_file" "$USERNAME_ONE" "$PASSWORD_ONE" "admin" assert_success username="${lines[${#lines[@]}-2]}" @@ -280,12 +281,11 @@ export RUN_USERS=true # tags: curl, PutObject, Expect @test "REST - PutObject - expect continue - success" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command "200" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-method" "PUT" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-signedParams" "Expect:100-continue" @@ -294,17 +294,16 @@ export RUN_USERS=true # tags: user, curl, PutObject @test "REST - PutObject - invalid x-amz-request-payer" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file username password run create_versitygw_acl_user_or_get_direct_user "$USERNAME_ONE" "$PASSWORD_ONE" assert_success username=${lines[2]} password=${lines[3]} - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_bucket_ownership_controls "$bucket_name" "BucketOwnerPreferred" assert_success @@ -324,12 +323,11 @@ export RUN_USERS=true # tags: curl, PutObject, Content-Disposition @test "REST - PutObject - content disposition" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command "200" "-bucketName" "$bucket_name" "-objectKey" "$test_file" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ "-method" "PUT" "-contentMD5" "-signedParams" "Content-Disposition:dummy" @@ -341,12 +339,11 @@ export RUN_USERS=true # tags: curl, PutObject, object-lock, retention, x-amz-object-lock-retain-until-date, x-amz-object-lock-mode, content-md5, invalid-header @test "REST - PutObject - x-amz-object-lock-retain-until-date - invalid format" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run send_rest_go_command_expect_error "400" "InvalidArgument" "must be provided in ISO 8601 format" "-bucketName" "$bucket_name" \ "-objectKey" "$test_file" "-payloadFile" "$TEST_FILE_FOLDER/$test_file" \ @@ -356,15 +353,11 @@ export RUN_USERS=true # tags: curl, PutObject, object-lock, retention, x-amz-object-lock-retain-until-date, x-amz-object-lock-mode, content-md5, invalid-header @test "REST - PutObject - x-amz-object-lock-retain-until-date - earlier date" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1734" - fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file earlier_date - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" earlier_date="2025-12-25T12:00:00Z" run send_rest_go_command_expect_error_with_arg_name_value "400" "InvalidArgument" "must be in the future" \ @@ -375,15 +368,11 @@ export RUN_USERS=true # tags: curl, PutObject, object-lock, retention, x-amz-object-lock-mode, x-amz-object-lock-retain-until-date, content-md5, invalid-header @test "REST - PutObject - x-amz-object-lock-mode - invalid mode" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1736" - fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file later_date lock_mode - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run get_time_seconds_in_future 10 assert_success @@ -398,12 +387,11 @@ export RUN_USERS=true # tags: curl, PutObject, object-lock, retention, versioning, content-md5, invalid-header @test "TEST - REST - PutObject - not allowed without content-MD5 with lock configuration" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_bucket_versioning_rest "$bucket_name" "Enabled" assert_success @@ -419,12 +407,11 @@ export RUN_USERS=true # tags: curl, PutObject, object-lock, retention, versioning, content-md5, x-amz-object-lock-mode, x-amz-object-lock-retain-until-date @test "REST - PutObject - object lock - success" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file later_date - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_bucket_versioning_rest "$bucket_name" "Enabled" assert_success @@ -445,16 +432,11 @@ export RUN_USERS=true if [ "$DIRECT" != "true" ]; then skip "skip for versitygw - see #1904" fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run get_file_name - assert_success - test_file="$output" - - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run put_bucket_ownership_controls_rest "$bucket_name" "BucketOwnerPreferred" assert_success @@ -506,19 +488,11 @@ export RUN_USERS=true # tags: curl, PutObject, object-lock, legal-hold, x-amz-object-lock-legal-hold, invalid-header @test "PutObject - x-amz-object-lock-legal-hold - invalid value" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/1775" - fi - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file - run get_file_name - assert_success - test_file="$output" - - run setup_bucket_and_file_v2 "$bucket_name" "$test_file" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" local legal_hold_value="wrong" run send_rest_go_command_expect_error_with_arg_name_value "400" "InvalidArgument" "Legal Hold must be either of" \ @@ -574,16 +548,11 @@ export RUN_USERS=true # tags: openssl, PutObject @test "REST - PutObject - openssl go non-file payload" { - run get_bucket_name "$BUCKET_ONE_NAME" - assert_success - bucket_name="$output" + local bucket_name test_file later_date - run get_file_name - assert_success - test_file=$output - - run setup_bucket_v2 "$bucket_name" + run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME" assert_success + read -r bucket_name test_file <<< "$output" run bash -c "tr -dc 'a-zA-Z0-9 ' < /dev/urandom | head -c 100" assert_success diff --git a/tests/test_rest_website.sh b/tests/test_rest_website.sh index 904c9802..30088aae 100755 --- a/tests/test_rest_website.sh +++ b/tests/test_rest_website.sh @@ -68,9 +68,6 @@ teardown() { } @test "PutBucketWebsite - XML message with empty WebsiteConfiguration struct" { - if [ "$DIRECT" != "true" ]; then - skip "https://github.com/versity/versitygw/issues/2260" - fi local bucket_name setup_versitygw_for_website diff --git a/tests/versity.sh b/tests/versity.sh index e394ae3c..2b51d3d2 100644 --- a/tests/versity.sh +++ b/tests/versity.sh @@ -23,7 +23,7 @@ start_versity_process() { local versity_app_index="$1" command_array=("${@:2}") local log_file_name response process_id - log_file_name="${TEST_FILE_FOLDER}/versity-${TEST_ID}-${versity_app_index}-$(uuidgen)" + log_file_name="$(get_test_log_folder)/versity-${TEST_ID}-${versity_app_index}-$(uuidgen)" printf -v "VERSITY_LOG_FILE_${versity_app_index}" '%s' "$log_file_name" export VERSITY_LOG_FILE_"${versity_app_index}"