diff --git a/.dockerignore b/.dockerignore
index 50998123..20c2acdf 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -43,4 +43,7 @@ dist/
/LICENSE
/NOTICE
/CODE_OF_CONDUCT.md
-/README.md
\ No newline at end of file
+/README.md
+
+# standard bats test file folder
+/versity-gwtest-files
\ No newline at end of file
diff --git a/tests/README.md b/tests/README.md
index 8ba5fb03..3c9ceba5 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -121,7 +121,7 @@ A single instance can be run with `docker-compose -f docker-compose-bats.yml up
**VERSITY_EXE**: location of the versity executable relative to test folder.
-**RUN_VERSITYGW**: whether to run the versitygw executable, should be set to **false** when running tests directly against **s3**.
+**RUN_VERSITYGW**: whether to run the versitygw executable, should be set to **false** when running tests directly against **s3**, or testing against another S3-compatible endpoint.
**PORT**: port to run the versity app on, if not specified, defaults to **7070**.
@@ -157,7 +157,7 @@ A single instance can be run with `docker-compose -f docker-compose-bats.yml up
**VERSITY_LOG_FILE**: log file for versity application as it is tested by bats tests.
-**DIRECT**: if **true**, bypass versitygw and run directly against s3 (for comparison and validity-checking purposes).
+**DIRECT**: if **true**, bypass versitygw and run directly against s3, for comparison and validity-checking purposes. This parameter disables the `AWS_ENDPOINT_URL` parameter.
**DIRECT_DISPLAY_NAME**: AWS ACL main user display name if **DIRECT** is set to **true**.
diff --git a/tests/drivers/rest.sh b/tests/drivers/rest.sh
index 7cbf67bc..56138c74 100644
--- a/tests/drivers/rest.sh
+++ b/tests/drivers/rest.sh
@@ -410,7 +410,7 @@ check_for_header_key_and_value() {
elif [ "$check_result" -eq 0 ]; then
return 0
fi
- done <<< "$(grep -E '^.+: .+$' "$1")"
+ done <<< "$(grep -aE '^.+: .+$' "$1")"
log 2 "no header key '$2' found"
return 1
}
diff --git a/tests/rest_scripts/calculate_checksum.sh b/tests/rest_scripts/calculate_checksum.sh
index ca99e899..33560baa 100755
--- a/tests/rest_scripts/calculate_checksum.sh
+++ b/tests/rest_scripts/calculate_checksum.sh
@@ -21,7 +21,7 @@ calculate_checksum_python() {
log 2 "'calculate_checksum_python' requires checksum type, data file"
return 1
fi
- if ! DEACTIVATE=false source ./tests/rest_scripts/init_python_env.sh; then
+ if ! DEACTIVATE=false source ./tests/rest_scripts/init_python_env.sh 2>/dev/null; then
log_rest 2 "error initializing python environment"
return 1
fi
diff --git a/tests/tags/get_tests.sh b/tests/tags/get_tests.sh
index 65be73f7..3a275e53 100755
--- a/tests/tags/get_tests.sh
+++ b/tests/tags/get_tests.sh
@@ -55,6 +55,12 @@ run_tests() {
return 1
fi
+ if [ -z "$VERSITYGW_TEST_ENV" ]; then
+ usage
+ echo "VERSITYGW_TEST_ENV must be defined" >&2
+ exit 1
+ fi
+
local i=0 files=() names=() tags=()
while IFS=$'\t' read -r loc t name || [ -n "$loc" ]; do
@@ -140,11 +146,5 @@ if [ "$list_tags_flag" -eq 1 ]; then
exit 0
fi
-if [ -z "$VERSITYGW_TEST_ENV" ]; then
- usage
- echo "VERSITYGW_TEST_ENV must be defined" >&2
- exit 1
-fi
-
list_and_run_tests "$tag_matching_mode" "$list_flag" "$count_flag" "$run_flag" "${forwarded_args[@]}"
diff --git a/tests/tags/list_tags.py b/tests/tags/list_tags.py
index fe96f66f..67ad62a9 100644
--- a/tests/tags/list_tags.py
+++ b/tests/tags/list_tags.py
@@ -93,7 +93,7 @@ def print_tag_description(data: dict, tag: str) -> int:
g_lower = {k.lower(): v for k, v in group_tags.items()}
tag_lower = tag.lower()
if tag_lower in g_lower:
- desc = (group_tags.get(tag_lower, {}) or {}).get("desc", "")
+ desc = (g_lower.get(tag_lower, {}) or {}).get("desc", "")
print(f"{tag}: {desc}")
return 0
return 1
diff --git a/tests/tags/tags.yaml b/tests/tags/tags.yaml
index 4eaad5f2..c1090aec 100644
--- a/tests/tags/tags.yaml
+++ b/tests/tags/tags.yaml
@@ -2,52 +2,294 @@ version: 1
tags:
feature:
+ cors:
+ desc: "Bucket CORS configuration and CORS response behavior"
+ location-constraint:
+ desc: "CreateBucket LocationConstraint XML field"
+ legal-hold:
+ desc: "Object Lock legal hold behavior"
+ object-lock:
+ desc: "Object Lock feature (retention/legal hold)"
+ retention:
+ desc: "Retention policy behavior"
+ composite-checksum:
+ desc: "Composite checksum calculation"
+ checksum:
+ desc: "Checksum behavior and validation"
+ chunked:
+ desc: "Chunked/streaming upload tests"
invalid-method:
desc: "Tests for invalid methods"
invalid-header:
desc: "Tests for invalid headers"
+ invalid-query:
+ desc: "Tests for invalid query parameters"
malformed-message:
desc: "Tests for severely malformed messages"
minimal-request:
desc: "Tests that do not use any optional query or header values"
multipart:
desc: "Multipart upload"
+ presigned-url:
+ desc: "Presigned URL"
required-headers:
desc: "Required headers such as 'Authorization' and 'x-amz-date'"
+ unit:
+ desc: "versitygw unit tests"
user:
desc: "versitygw user tests"
+ tagging:
+ desc: "Bucket/object tagging"
+ policy:
+ desc: "Bucket/object policies"
+ public-access:
+ desc: "Public access / policy status behavior"
+ versioning:
+ desc: "Versioning semantics"
+ not-implemented:
+ desc: "Operations expected to return 501 Not Implemented"
client:
curl:
desc: "REST curl commands"
+ s3:
+ desc: "AWS CLI s3 commands"
+ s3api:
+ desc: "AWS CLI s3api commands"
+ s3cmd:
+ desc: "s3cmd client commands"
+ mc:
+ desc: "Minio MC commands"
openssl:
desc: "REST OpenSSL commands"
command:
+ AbortMultipartUpload:
+ desc: "AbortMultipartUpload command"
+ CompleteMultipartUpload:
+ desc: "CompleteMultipartUpload command"
+ CopyObject:
+ desc: "CopyObject command"
+ CreateBucket:
+ desc: "CreateBucket command"
+ CreateMultipartUpload:
+ desc: "CreateMultipartUpload command"
+ DeleteBucket:
+ desc: "DeleteBucket command"
+ DeleteBucketCors:
+ desc: "DeleteBucketCors command"
+ DeleteBucketOwnershipControls:
+ desc: "DeleteBucketOwnershipControls command"
+ DeleteBucketPolicy:
+ desc: "DeleteBucketPolicy command"
+ DeleteBucketTagging:
+ desc: "DeleteBucketTagging command"
+ DeleteObject:
+ desc: "DeleteObject command"
+ DeleteObjectTagging:
+ desc: "DeleteObjectTagging command"
+ GetBucketAcl:
+ desc: "GetBucketAcl command"
+ GetBucketCors:
+ desc: "GetBucketCors command"
+ GetBucketLocation:
+ desc: "GetBucketLocation command"
+ GetBucketOwnershipControls:
+ desc: "GetBucketOwnershipControls command"
+ GetBucketPolicy:
+ desc: "GetBucketPolicy command"
+ GetBucketPolicyStatus:
+ desc: "GetBucketPolicyStatus command"
+ GetBucketTagging:
+ desc: "GetBucketTagging command"
GetObject:
desc: "GetObject command"
+ GetObjectAttributes:
+ desc: "GetObjectAttributes command"
+ GetObjectLegalHold:
+ desc: "GetObjectLegalHold command"
+ GetObjectLockConfiguration:
+ desc: "GetObjectLockConfiguration command"
+ GetObjectRetention:
+ desc: "GetObjectRetention command"
+ GetObjectTagging:
+ desc: "GetObjectTagging command"
+ HeadBucket:
+ desc: "HeadBucket command"
+ HeadObject:
+ desc: "HeadObject command"
ListBuckets:
desc: "ListBuckets command"
+ ListMultipartUploads:
+ desc: "ListMultipartUploads command"
+ ListObjects:
+ desc: "ListObjects (v1) command"
+ ListObjectsV2:
+ desc: "ListObjectsV2 (list-type=2) command"
+ ListObjectVersions:
+ desc: "ListObjectVersions command"
+ ListParts:
+ desc: "ListParts command"
+ PutBucketAcl:
+ desc: "PutBucketAcl command"
+ PutBucketCors:
+ desc: "PutBucketCors command"
+ PutBucketOwnershipControls:
+ desc: "PutBucketOwnershipControls command"
+ PutBucketPolicy:
+ desc: "PutBucketPolicy command"
+ PutBucketTagging:
+ desc: "PutBucketTagging command"
+ PutBucketVersioning:
+ desc: "PutBucketVersioning command"
+ PutObject:
+ desc: "PutObject command"
+ PutObjectLegalHold:
+ desc: "PutObjectLegalHold command"
+ PutObjectLockConfiguration:
+ desc: "PutObjectLockConfiguration command"
+ PutObjectRetention:
+ desc: "PutObjectRetention command"
+ PutObjectTagging:
+ desc: "PutObjectTagging command"
+ PutPublicAccessBlock:
+ desc: "PutPublicAccessBlock command"
+ SelectObjectContent:
+ desc: "SelectObjectContent command"
+ UploadPart:
+ desc: "UploadPart command"
+ UploadPartCopy:
+ desc: "UploadPartCopy command"
header:
Authorization:
desc: "Authorization header"
host:
desc: "host header"
+ origin:
+ desc: "Origin header"
+ access-control-request-method:
+ desc: "Access-Control-Request-Method header (preflight)"
+ access-control-request-headers:
+ desc: "Access-Control-Request-Headers header (preflight)"
+ access-control-allow-origin:
+ desc: "Access-Control-Allow-Origin response header"
+ access-control-allow-methods:
+ desc: "Access-Control-Allow-Methods response header"
+ access-control-allow-headers:
+ desc: "Access-Control-Allow-Headers response header"
+ access-control-expose-headers:
+ desc: "Access-Control-Expose-Headers response header"
+ access-control-max-age:
+ desc: "Access-Control-Max-Age response header"
+ content-md5:
+ desc: "Content-MD5 header"
+ Content-Disposition:
+ desc: "Content-Disposition header"
+ content-length:
+ desc: "Content-Length header"
+ Content-Type:
+ desc: "Content-Type header"
+ Expect:
+ desc: "Expect header (e.g. 100-continue)"
+ ETag:
+ desc: "ETag response header"
+ Expires:
+ desc: "Expires header"
+ If-Match:
+ desc: "If-Match header"
+ If-None-Match:
+ desc: "If-None-Match header"
range:
desc: "ranged download tests"
+ x-amz-acl:
+ desc: "x-amz-acl (canned ACL) header"
+ x-amz-meta:
+ desc: "x-amz-meta-* user metadata headers"
x-amz-content-sha256:
desc: "x-amz-content-sha256 header (payload hash and/or type)"
+ x-amz-copy-source:
+ desc: "x-amz-copy-source header"
x-amz-date:
desc: "x-amz-date header"
+ x-amz-bucket-region:
+ desc: "x-amz-bucket-region response header"
+ x-amz-trailer:
+ desc: "x-amz-trailer header (checksum trailer declaration)"
+ x-amz-object-attributes:
+ desc: "x-amz-object-attributes header (requested attribute set)"
+ x-amz-object-lock-mode:
+ desc: "x-amz-object-lock-mode header"
+ x-amz-object-lock-retain-until-date:
+ desc: "x-amz-object-lock-retain-until-date header"
+ x-amz-checksum-sha256:
+ desc: "x-amz-checksum-sha256 header (checksum request/validation)"
+ x-amz-checksum-crc32:
+ desc: "x-amz-checksum-crc32 header (checksum request/validation)"
+ x-amz-checksum-crc32c:
+ desc: "x-amz-checksum-crc32c header (checksum request/validation)"
+ x-amz-checksum-crc64nvme:
+ desc: "x-amz-checksum-crc64nvme header (checksum request/validation)"
+ x-amz-checksum-sha1:
+ desc: "x-amz-checksum-sha1 header (checksum request/validation)"
+ x-amz-checksum-type:
+ desc: "x-amz-checksum-type header"
+ x-amz-checksum-algorithm:
+ desc: "x-amz-checksum-algorithm header"
+ x-amz-grant-read-acp:
+ desc: "ACL permission to read object ACL"
+ x-amz-grant-full-control:
+ desc: "x-amz-grant-full-control header"
+ x-amz-grant-read:
+ desc: "x-amz-grant-read header"
+ x-amz-grant-write:
+ desc: "x-amz-grant-write header"
+ x-amz-grant-write-acp:
+ desc: "x-amz-grant-write-acp header"
+ x-amz-expected-bucket-owner:
+ desc: "x-amz-expected-bucket-owner header"
+ x-amz-bypass-governance-retention:
+ desc: "x-amz-bypass-governance-retention header"
+ x-amz-mp-object-size:
+ desc: "x-amz-mp-object-size header"
query:
bucket-region:
desc: "ListBuckets bucket-region query"
+ cors:
+ desc: "Bucket CORS subresource (?cors)"
continuation-token:
desc: "ListBuckets/ListObjects continuation token query"
+ delimiter:
+ desc: "ListObjects delimiter query"
+ legal-hold:
+ desc: "Object legal-hold subresource (?legal-hold=)"
+ encoding-type:
+ desc: "ListObjects encoding-type query"
+ fetch-owner:
+ desc: "ListObjectsV2 fetch-owner query"
+ list-type:
+ desc: "ListObjectsV2 list-type query"
+ marker:
+ desc: "ListObjects marker query"
+ max-keys:
+ desc: "ListObjects max-keys query"
+ object-lock:
+ desc: "Object lock configuration subresource (?object-lock=)"
max-buckets:
desc: "Maximum amount of buckets returned by ListBuckets command"
+ ownershipControls:
+ desc: "Bucket ownershipControls subresource (?ownershipControls=)"
+ policyStatus:
+ desc: "Bucket policyStatus subresource (?policyStatus=)"
+ policy:
+ desc: "Bucket policy subresource (?policy=)"
partNumber:
desc: "partNumber query for multiparts and gets"
+ uploadId:
+ desc: "Multipart uploadId query"
prefix:
desc: "bucket or object prefix query"
+ tagging:
+ desc: "Bucket/object tagging subresource (?tagging=)"
+ start-after:
+ desc: "ListObjectsV2 start-after query"
response-cache-control:
desc: "override cache-control header response"
response-content-disposition:
@@ -60,3 +302,13 @@ tags:
desc: "override content-type header response"
response-expires:
desc: "override expires header response"
+ retention:
+ desc: "Object retention subresource (?retention=)"
+ attributes:
+ desc: "GetObjectAttributes attributes query/subresource"
+ versionId:
+ desc: "Object versionId query"
+ versions:
+ desc: "ListObjectVersions subresource (?versions=)"
+ versioning:
+ desc: "Bucket versioning subresource (?versioning=)"
diff --git a/tests/test_file.sh b/tests/test_file.sh
index 75b186d9..f6bb39c6 100755
--- a/tests/test_file.sh
+++ b/tests/test_file.sh
@@ -31,6 +31,7 @@ assert_test_file_folder_exists() {
}
# shellcheck disable=SC2030
+# tags: curl, GetObject
@test "test - download_and_compare_file" {
file_exists_in_dest_location=("true" "false")
pass_or_fail=("true" "false")
diff --git a/tests/test_mc.sh b/tests/test_mc.sh
index 23c91d61..0f13c852 100755
--- a/tests/test_mc.sh
+++ b/tests/test_mc.sh
@@ -34,21 +34,25 @@ source ./tests/util/util_head_bucket.sh
export RUN_MC=true
# complete-multipart-upload
+# tags: mc,minimal-request,PutObject,multipart
@test "test_multipart_upload_mc" {
test_common_multipart_upload "mc"
}
# copy-object
+# tags: mc,minimal-request,CopyObject
@test "test_copy_object" {
test_common_copy_object "mc"
}
# create-bucket
+# tags: mc,minimal-request,CreateBucket,DeleteBucket
@test "test_create_delete_bucket" {
test_common_create_delete_bucket "mc"
}
# delete-bucket
+# tags: mc,minimal-request,CreateBucket,DeleteBucket
@test "test_delete_bucket" {
if [[ $RECREATE_BUCKETS == "false" ]]; then
skip "will not test bucket deletion in static bucket test config"
@@ -61,6 +65,7 @@ export RUN_MC=true
}
# delete-bucket-policy
+# tags: mc,minimal-request,GetBucketPolicy,PutBucketPolicy
@test "test_get_put_delete_bucket_policy" {
if [[ -n $SKIP_POLICY ]]; then
skip "will not test policy actions with SKIP_POLICY set"
@@ -68,58 +73,57 @@ export RUN_MC=true
test_common_get_put_delete_bucket_policy "mc"
}
-# delete-bucket-tagging
+# tags: mc,minimal-request,GetBucketTagging,PutBucketTagging,DeleteBucketTagging
@test "test_set_get_delete_bucket_tags" {
test_common_set_get_delete_bucket_tags "mc"
}
-# delete-object - put-object tests
-
-# delete-object-tagging
+# tags: mc,minimal-request,GetObjectTagging,PutObjectTagging,DeleteObjectTagging
@test "test_delete_object_tagging" {
test_common_delete_object_tagging "mc"
}
-# delete-objects - test setup/teardown
-
-# get-bucket-location
+# tags: mc,minimal-request,GetBucketLocation
@test "test_get_bucket_location" {
test_common_get_bucket_location "mc"
}
-# get-bucket-policy - test_get_put_delete_bucket_policy
-
-# get-bucket-tagging
+# tags: mc,minimal-request,GetObjectTagging,PutObjectTagging,DeleteObjectTagging
@test "test_set_get_object_tags_mc" {
test_common_set_get_object_tags "mc"
}
-# get-object
+# tags: mc,minimal-request,PutObject,GetObject
@test "test_put_get_object" {
test_common_put_get_object "mc"
}
+# tags: mc,minimal-request,PutObject
@test "test_put_object-with-data-mc" {
test_common_put_object_with_data "mc"
}
+# tags: mc,minimal-request,PutObject
@test "test_put_object-no-data-mc" {
test_common_put_object_no_data "mc"
}
+# tags: mc,minimal-request,ListBuckets
@test "test_list_buckets_mc" {
test_common_list_buckets "mc"
}
+# tags: mc,minimal-request,ListObjects
@test "test_list_objects_mc" {
test_common_list_objects "mc"
}
-
+# tags: mc,presigned-url
@test "test_presigned_url_utf8_chars_mc" {
test_common_presigned_url_utf8_chars "mc"
}
+# tags: mc,minimal-request,CreateBucket
@test "test_create_bucket_invalid_name_mc" {
if [[ $RECREATE_BUCKETS != "true" ]]; then
return
@@ -129,6 +133,7 @@ export RUN_MC=true
assert_success
}
+# tags: mc,minimal-request,HeadBucket
@test "test_get_bucket_info_mc" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -137,6 +142,7 @@ export RUN_MC=true
assert_success
}
+# tags: mc,minimal-request,HeadBucket
@test "test_get_bucket_info_doesnt_exist_mc" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -145,6 +151,7 @@ export RUN_MC=true
assert_failure 1
}
+# tags: mc,minimal-request,ListObjects
@test "test_ls_directory_object" {
test_common_ls_directory_object "mc"
}
diff --git a/tests/test_mc_file_count.sh b/tests/test_mc_file_count.sh
index d05a93ab..32970a45 100755
--- a/tests/test_mc_file_count.sh
+++ b/tests/test_mc_file_count.sh
@@ -22,6 +22,7 @@ source ./tests/test_common.sh
export RUN_MC=true
+# tags: mc,minimal-request,ListObjects
@test "test_list_objects_file_count" {
test_common_list_objects_file_count "mc"
}
diff --git a/tests/test_report.sh b/tests/test_report.sh
index 67c49eeb..30974123 100755
--- a/tests/test_report.sh
+++ b/tests/test_report.sh
@@ -21,6 +21,7 @@ source ./tests/logger.sh
source ./tests/report.sh
source ./tests/setup_unit.sh
+# tags: unit
@test "reporting - parse curl method" {
tests=(" -Iks" "" " -X PUT" " -X DELETE")
expected_results=("HEAD" "GET" "PUT" "DELETE")
@@ -32,6 +33,7 @@ source ./tests/setup_unit.sh
done
}
+# tags: unit
@test "reporting - parse curl route" {
tests=("http://localhost:7070/bucket_name" "http://localhost:7070/bucket_name/file_name" "http://localhost:7070/" "")
expected_results=("BUCKET" "OBJECT" "MAIN" "UNKNOWN")
@@ -43,6 +45,7 @@ source ./tests/setup_unit.sh
done
}
+# tags: unit
@test "reporting - get query" {
tests=("https://localhost:7070/?query1=" "https://localhost/bucket?another=" "https://1.2.3.4/" "http://localhost/bucket/file?third")
expected_results=("query1" "another" "" "third")
@@ -54,6 +57,7 @@ source ./tests/setup_unit.sh
done
}
+# tags: unit
@test "reporting - parse curl rest command" {
tests=("curl -iks https://localhost:7070/versity-gwtest-bucket-one-1-20260127113351?location= -H Authorization: AWS4-HMAC-SHA256 Credential=AKIA6****/20260127/us-east-1/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date,Signature=68c0b96180a5791be8a10335c10d302d31d358c4bc6028aec94faf502f3a185e -H host: localhost:7070 -H x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -H x-amz-date: 20260127T143355Z")
expected_command=("GET BUCKET location")
@@ -64,6 +68,7 @@ source ./tests/setup_unit.sh
done
}
+# tags: unit
@test "openssl - get method, route, and queries" {
tests=("GET / HTTP/1.1
Authorization: AWS4-HMAC-SHA256 Credential=AKIAQJVWFRZQNI6LF3W7/20250911/us-east-1/s3/aws4_request,SignedHeaders=x-amz-content-sha256;x-amz-date,Signature=86ffbe2317caddcac569b25aa9b8e8db4a613a639b2a402cf4a9dc0e975ba997
@@ -83,6 +88,7 @@ source ./tests/setup_unit.sh
done
}
+# tags: unit
@test "report - check for copy header value" {
test_clients=("OPENSSL" "OPENSSL" "CURL" "CURL" "CUR")
test_data=("GET / HTTP/1.1
diff --git a/tests/test_rest.sh b/tests/test_rest.sh
index 426b1387..1d4603d0 100755
--- a/tests/test_rest.sh
+++ b/tests/test_rest.sh
@@ -23,6 +23,7 @@ source ./tests/drivers/rest.sh
source ./tests/logger.sh
source ./tests/setup_unit.sh
+# tags: unit
@test "check_key_and_value_pair_for_match" {
run check_key_and_value_pair_for_match "one" "two" "three"
assert_failure 2
@@ -43,6 +44,7 @@ source ./tests/setup_unit.sh
assert_success
}
+# tags: unit
@test "check_for_key_and_value_within_pairs" {
# match in middle, omit it
run check_for_key_and_value_within_pairs "B" "2" "A" "1" "B" "2" "C" "3"
@@ -77,6 +79,7 @@ source ./tests/setup_unit.sh
assert_failure 2
}
+# tags: unit
@test "check_header_keys_and_values" {
run get_file_name
assert_success
diff --git a/tests/test_rest_acl.sh b/tests/test_rest_acl.sh
index 511768bb..019b1370 100755
--- a/tests/test_rest_acl.sh
+++ b/tests/test_rest_acl.sh
@@ -33,6 +33,7 @@ if [ "$SKIP_ACL_TESTING" == "true" ] || [ "$SKIP_USERS_TESTS" == "true" ]; then
exit 0
fi
+# tags: curl,minimal-request,GetBucketAcl
@test "REST - get ACL" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -45,6 +46,7 @@ fi
assert_success
}
+# tags: curl,minimal-request,PutBucketAcl
@test "REST - put ACL" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -84,6 +86,7 @@ fi
assert_success
}
+# tags: curl,PutBucketAcl,x-amz-acl
@test "REST - put public-read canned acl" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -120,6 +123,7 @@ fi
assert_success
}
+# tags: curl,minimal-request,PutBucketAcl
@test "REST - put invalid ACL" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -149,6 +153,7 @@ fi
assert_success
}
+# tags: curl,PutBucketAcl,x-amz-acl
@test "REST - put public-read-write canned acl" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -182,6 +187,7 @@ fi
assert_success
}
+# tags: curl,PutBucketAcl,x-amz-acl
@test "REST - invalid canned acl" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1367"
@@ -201,6 +207,7 @@ fi
assert_success
}
+# tags: curl,GetBucketAcl,x-amz-grant-read-acp
@test "REST - FULL_CONTROL permission not returned for owner after CreateBucket with GRANT_READ_ACP" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1407"
diff --git a/tests/test_rest_attributes.sh b/tests/test_rest_attributes.sh
index a7227c5c..dbb7f521 100755
--- a/tests/test_rest_attributes.sh
+++ b/tests/test_rest_attributes.sh
@@ -21,6 +21,7 @@ source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/get_object_attributes/get_object_attributes_rest.sh
+# tags: curl,GetObjectAttributes,attributes,x-amz-object-attributes,multipart
@test "REST - get object attributes" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1001"
@@ -47,6 +48,7 @@ source ./tests/drivers/get_object_attributes/get_object_attributes_rest.sh
assert_success
}
+# tags: curl,GetObjectAttributes,attributes,x-amz-object-attributes,invalid-header
@test "REST - attributes - invalid param" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1001"
@@ -70,6 +72,7 @@ source ./tests/drivers/get_object_attributes/get_object_attributes_rest.sh
assert_success
}
+# tags: curl,PutObject,GetObjectAttributes,attributes,x-amz-object-attributes,x-amz-checksum-sha256
@test "REST - attributes - checksum" {
run get_file_name
assert_success
diff --git a/tests/test_rest_bucket.sh b/tests/test_rest_bucket.sh
index dba4630a..32563fc7 100755
--- a/tests/test_rest_bucket.sh
+++ b/tests/test_rest_bucket.sh
@@ -36,6 +36,7 @@ source ./tests/util/util_rest.sh
export RUN_USERS=true
+# tags: curl,minimal-request,HeadBucket
@test "REST - HeadBucket" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -48,6 +49,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,minimal-request,GetBucketTagging
@test "REST - bucket tagging - no tags" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -60,6 +62,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,minimal-request,GetBucketOwnershipControls,PutBucketOwnershipControls
@test "REST - get, put bucket ownership controls" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -78,6 +81,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,minimal-request,GetObjectLockConfiguration,PutObjectLockConfiguration
@test "test_rest_set_get_lock_config" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "test not valid for static buckets"
@@ -103,6 +107,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,PutBucketVersioning,PutObjectLockConfiguration
@test "REST - can set object lock enabled on existing buckets" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -119,6 +124,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,PutObjectLockConfiguration,content-md5,invalid-header
@test "REST - cannot set object lock enabled without content-md5" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -132,6 +138,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,minimal-request,GetBucketPolicy
@test "REST - get policy w/o policy" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/959"
@@ -147,6 +154,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,PutBucketPolicy,user
@test "REST - put policy" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skip versitygw-specific users tests"
@@ -172,6 +180,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,malformed-message,invalid-method
@test "REST - POST call on root endpoint" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1487"
diff --git a/tests/test_rest_checksum.sh b/tests/test_rest_checksum.sh
index ca4a868b..c71be638 100755
--- a/tests/test_rest_checksum.sh
+++ b/tests/test_rest_checksum.sh
@@ -24,6 +24,7 @@ source ./tests/setup.sh
export RUN_USERS=true
test_file="test_file"
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-sha256
@test "REST - invalid checksum type" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -36,21 +37,25 @@ test_file="test_file"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-sha256
@test "REST - sha256 checksum - invalid" {
run check_checksum_rest_invalid "sha256"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-sha256
@test "REST - sha256 checksum - incorrect" {
run check_checksum_rest_incorrect "sha256"
assert_success
}
+# tags: curl,checksum,PutObject,x-amz-checksum-sha256
@test "REST - sha256 checksum - correct" {
run add_correct_checksum "sha256"
assert_success
}
+# tags: curl,checksum,PutObject,HeadObject,x-amz-checksum-sha256
@test "REST - HeadObject returns x-amz-checksum-sha256" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -66,21 +71,25 @@ test_file="test_file"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-crc32c
@test "REST - crc32 checksum - invalid" {
run check_checksum_rest_invalid "crc32c"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-crc32
@test "REST - crc32 checksum - incorrect" {
run check_checksum_rest_incorrect "crc32"
assert_success
}
+# tags: curl,checksum,PutObject,x-amz-checksum-crc32
@test "REST - crc32 checksum - correct" {
run add_correct_checksum "crc32"
assert_success
}
+# tags: curl,checksum,PutObject,HeadObject,x-amz-checksum-crc32
@test "REST - crc32 checksum - HeadObject" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -96,51 +105,61 @@ test_file="test_file"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-crc64nvme
@test "REST - crc64nvme checksum - invalid" {
run check_checksum_rest_invalid "crc64nvme"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-crc64nvme
@test "REST - crc64nvme checksum - incorrect" {
run check_checksum_rest_incorrect "crc64nvme"
assert_success
}
+# tags: curl,checksum,PutObject,x-amz-checksum-crc64nvme
@test "REST - crc64nvme checksum - correct" {
- run add_correct_checksum "sha256"
+ run add_correct_checksum "crc64nvme"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-crc32c
@test "REST - crc32c checksum - invalid" {
run check_checksum_rest_invalid "crc32c"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-crc32c
@test "REST - crc32c checksum - incorrect" {
run check_checksum_rest_incorrect "crc32c"
assert_success
}
+# tags: curl,checksum,PutObject,x-amz-checksum-crc32c
@test "REST - crc32c checksum - correct" {
run add_correct_checksum "crc32c"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-sha1
@test "REST - sha1 checksum - invalid" {
run check_checksum_rest_invalid "sha1"
assert_success
}
+# tags: curl,checksum,PutObject,invalid-header,x-amz-checksum-sha1
@test "REST - sha1 checksum - incorrect" {
run check_checksum_rest_incorrect "sha1"
assert_success
}
+# tags: curl,checksum,PutObject,x-amz-checksum-sha1
@test "REST - sha1 checksum - correct" {
run add_correct_checksum "sha1"
assert_success
}
+# tags: curl,checksum,PutObject,HeadObject
@test "REST - attempt to get checksum without checksum mode" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -156,6 +175,7 @@ test_file="test_file"
assert_success
}
+# tags: curl,checksum,PutObject,HeadObject,x-amz-checksum-crc64nvme
@test "REST - HeadObject - default crc64nvme checksum" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_chunked.sh b/tests/test_rest_chunked.sh
index 8158dc53..8fcdb532 100755
--- a/tests/test_rest_chunked.sh
+++ b/tests/test_rest_chunked.sh
@@ -24,6 +24,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/get_object_lock_config/get_object_lock_config_rest.sh
source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_controls_rest.sh
+# tags: openssl,chunked,PutObject,invalid-header,content-length
@test "REST - chunked upload, no content length" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -40,6 +41,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject,invalid-header
@test "REST - chunked upload, signature error" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -59,6 +61,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject,invalid-header
@test "REST - chunked upload, final signature error" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -78,6 +81,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject
@test "REST - chunked upload, success (file with just a's)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -100,6 +104,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject
@test "REST - chunked upload, success (null bytes)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -122,6 +127,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject
@test "REST - chunked upload, success (random bytes)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -144,6 +150,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject
@test "REST - chunked upload, success (zero-byte file)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -166,31 +173,37 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc32c
@test "REST - chunked upload - crc32c trailer - success" {
run chunked_upload_trailer_success "crc32c"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-sha1
@test "test - REST chunked upload - sha1 trailer - success" {
run chunked_upload_trailer_success "sha1"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-sha256
@test "test - REST chunked upload - sha256 trailer - success" {
run chunked_upload_trailer_success "sha256"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc64nvme
@test "test - REST chunked upload - crc64nvme trailer - success" {
run chunked_upload_trailer_success "crc64nvme"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc32
@test "test - REST chunked upload - crc32 trailer - success" {
run chunked_upload_trailer_success "crc32"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer
@test "test - REST chunked upload - invalid trailer" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -207,56 +220,67 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-sha1
@test "test - REST chunked upload - sha1 trailer - invalid" {
run chunked_upload_trailer_invalid_checksum "sha1"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-sha256
@test "test - REST chunked upload - sha256 trailer - invalid" {
run chunked_upload_trailer_invalid_checksum "sha256"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc32
@test "test - REST chunked upload - crc32 trailer - invalid" {
run chunked_upload_trailer_invalid_checksum "crc32"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc32c
@test "test - REST chunked upload - crc32c trailer - invalid" {
run chunked_upload_trailer_invalid_checksum "crc32c"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc64nvme
@test "test - REST chunked upload - crc64nvme trailer - invalid" {
run chunked_upload_trailer_invalid_checksum "crc64nvme"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-sha1
@test "test - REST chunked upload - sha1 trailer - incorrect" {
run chunked_upload_trailer_incorrect_checksum "sha1"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-sha256
@test "test - REST chunked upload - sha256 trailer - incorrect" {
run chunked_upload_trailer_incorrect_checksum "sha256"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc32
@test "test - REST chunked upload - crc32 trailer - incorrect" {
run chunked_upload_trailer_incorrect_checksum "crc32"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc32c
@test "test - REST chunked upload - crc32c trailer - incorrect" {
run chunked_upload_trailer_incorrect_checksum "crc32c"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc64nvme
@test "test - REST chunked upload - crc64nvme trailer - incorrect" {
run chunked_upload_trailer_incorrect_checksum "crc64nvme"
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-sha256
@test "REST chunked upload - smaller chunk size" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -279,6 +303,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject,invalid-header,x-amz-trailer,x-amz-checksum-crc32
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER, x-amz-trailer of crc32, trailer missing" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -294,6 +319,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-sha256
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER - 200 header returns correct checksum type" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -316,6 +342,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-sha1
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER - success (sha1)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -341,6 +368,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc32
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER - success (crc32)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -366,6 +394,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc32c
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER - success (crc32c)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -391,6 +420,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc64nvme
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER - success (crc64nvme)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -416,6 +446,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject,invalid-header,content-length
@test "REST - PutObject - STREAMING-AWS4-HMAC-SHA256-PAYLOAD - missing content length" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1623"
@@ -431,6 +462,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,PutObject,invalid-header,x-amz-trailer
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER, x-amz-trailer of crc32, trailer key missing" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -446,6 +478,7 @@ source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_contro
assert_success
}
+# tags: openssl,chunked,checksum,PutObject,x-amz-trailer,x-amz-checksum-crc64nvme
@test "REST - PutObject - STREAMING-UNSIGNED-PAYLOAD-TRAILER - default crc64nvme" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_copy_object.sh b/tests/test_rest_copy_object.sh
index b69b9b0a..2c764961 100755
--- a/tests/test_rest_copy_object.sh
+++ b/tests/test_rest_copy_object.sh
@@ -21,6 +21,7 @@ source ./tests/drivers/copy_object/copy_object_rest.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/setup.sh
+# tags: curl,CopyObject,invalid-header,x-amz-copy-source
@test "REST - copy object w/invalid copy source" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -40,6 +41,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,CopyObject,invalid-header,x-amz-copy-source
@test "REST - copy object w/copy source and payload" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_cors.sh b/tests/test_rest_cors.sh
index 11eb9fb9..55cdb722 100755
--- a/tests/test_rest_cors.sh
+++ b/tests/test_rest_cors.sh
@@ -21,6 +21,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/get_bucket_cors/get_bucket_cors_rest.sh
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"
@@ -36,6 +37,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5
@test "REST - PutBucketCors and GetBucketCors - valid configuration" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -48,6 +50,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,content-md5,invalid-header
@test "REST - CORS - empty CORS rule" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -61,6 +64,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,content-md5,invalid-header
@test "REST - CORS - missing allowed origin" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -74,6 +78,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,content-md5,invalid-header
@test "REST - CORS - missing allowed method" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -87,6 +92,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,content-md5,invalid-header
@test "REST - CORS - empty allowed method" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -100,6 +106,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,content-md5,invalid-header
@test "REST - CORS - invalid origin" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -113,6 +120,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,DeleteBucketCors,GetBucketCors,content-md5
@test "REST - CORS - delete" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -131,6 +139,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-expose-headers
@test "REST - CORS - origin - ETag not returned in exposed headers" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1893"
@@ -149,6 +158,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-request-method,access-control-allow-methods
@test "REST - CORS - non-allowed method" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -164,6 +174,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-request-method,access-control-allow-methods,access-control-allow-origin
@test "REST - CORS - allowed method" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -180,6 +191,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,access-control-request-headers,access-control-allow-headers
@test "REST - CORS - non-allowed header" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -195,6 +207,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-request-headers,access-control-allow-headers
@test "REST - CORS - allowed headers" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -215,6 +228,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,content-md5,invalid-header,access-control-max-age
@test "REST - CORS - invalid max age seconds" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -227,6 +241,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-max-age
@test "REST - CORS - valid max age seconds" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -243,6 +258,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-request-method,access-control-request-headers,access-control-allow-origin,access-control-allow-methods,access-control-allow-headers,access-control-expose-headers,access-control-max-age
@test "REST - CORS - all fields" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1893"
@@ -263,6 +279,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,cors,PutBucketCors,GetBucketCors,content-md5,origin,access-control-request-method,access-control-allow-origin,access-control-allow-methods
@test "REST - CORS - two rules" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_create_bucket.sh b/tests/test_rest_create_bucket.sh
index 72d875be..0b860c1c 100755
--- a/tests/test_rest_create_bucket.sh
+++ b/tests/test_rest_create_bucket.sh
@@ -24,6 +24,7 @@ source ./tests/setup.sh
export RUN_USERS=true
+# tags: curl,CreateBucket,minimal-request
@test "REST - create bucket test" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "skip bucket create tests for static buckets"
@@ -39,6 +40,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,CreateBucket,invalid-header,x-amz-acl
@test "REST - CreateBucket w/invalid acl" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "skip bucket create tests for static buckets"
@@ -55,6 +57,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,CreateBucket,invalid-header,x-amz-grant-full-control
@test "REST - CreateBucket - x-amz-grant-full-control - non-existent user" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1384"
@@ -75,6 +78,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,CreateBucket,invalid-header,x-amz-grant-full-control
@test "REST - CreateBucket - x-amz-grant-full-control - no ownership control change" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "skip bucket create tests for static buckets"
@@ -97,36 +101,43 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,CreateBucket,x-amz-grant-full-control
@test "REST - CreateBucket - x-amz-grant-full-control - success w/tests" {
run setup_and_create_bucket_and_check_acl "GRANT_FULL_CONTROL"
assert_success
}
+# tags: curl,CreateBucket,x-amz-grant-read
@test "REST - CreateBucket - x-amz-grant-read" {
run setup_and_create_bucket_and_check_acl "GRANT_READ"
assert_success
}
+# tags: curl,CreateBucket,x-amz-grant-write
@test "REST - CreateBucket - x-amz-grant-write" {
run setup_and_create_bucket_and_check_acl "GRANT_WRITE"
assert_success
}
+# tags: curl,CreateBucket,x-amz-grant-read-acp
@test "REST - CreateBucket - x-amz-grant-read-acp" {
run setup_and_create_bucket_and_check_acl "GRANT_READ_ACP"
assert_success
}
+# tags: curl,CreateBucket,x-amz-grant-write-acp
@test "REST - CreateBucket - x-amz-grant-write-acp" {
run setup_and_create_bucket_and_check_acl "GRANT_WRITE_ACP"
assert_success
}
+# tags: curl,CreateBucket,invalid-header,location-constraint
@test "REST - CreateBucket - empty location constraint" {
run send_curl_command_create_bucket_expect_error "400" "InvalidLocationConstraint" "The specified location-constraint is not valid" "-locationConstraint" ""
assert_success
}
+# tags: curl,CreateBucket,invalid-header,location-constraint
@test "REST - CreateBucket - location constraint mismatch" {
if [ "$DIRECT" == "true" ]; then
skip "not valid for direct mode"
@@ -140,6 +151,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,CreateBucket,invalid-header,location-constraint
@test "REST - CreateBucket - fail - us-east-1 with 'us-east-1' location constraint" {
if [ "$AWS_REGION" != "us-east-1" ]; then
skip "only valid for us-east-1 region"
@@ -148,6 +160,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,CreateBucket,invalid-header,location-constraint
@test "REST - CreateBucket - location constraint error returns invalid constraint" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1645"
diff --git a/tests/test_rest_delete_bucket.sh b/tests/test_rest_delete_bucket.sh
index 39b9fd4d..c1873c00 100755
--- a/tests/test_rest_delete_bucket.sh
+++ b/tests/test_rest_delete_bucket.sh
@@ -22,6 +22,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/delete_object/delete_object_rest.sh
source ./tests/drivers/put_object/put_object_rest.sh
+# tags: curl,DeleteBucket,multipart
@test "REST - DeleteBucket - can delete with partial multipart upload" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "avoid bucket deletion in static mode"
@@ -40,6 +41,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,DeleteBucket,DeleteObject
@test "REST - DeleteBucket - file - non-versioning" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "avoid bucket deletion in static mode"
@@ -61,6 +63,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,DeleteBucket,DeleteObject,PutBucketVersioning,versioning
@test "REST - DeleteBucket - file - versioning" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "avoid bucket deletion in static mode"
@@ -91,6 +94,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,DeleteBucket,invalid-header,x-amz-expected-bucket-owner
@test "REST - DeleteBucket - invalid x-amz-expected-bucket-owner" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "avoid bucket deletion in static mode"
@@ -116,6 +120,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,DeleteBucket,invalid-header,x-amz-expected-bucket-owner
@test "REST - DeleteBucket - incorrect x-amz-expected-bucket-owner" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "avoid bucket deletion in static mode"
@@ -131,6 +136,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,DeleteBucket,x-amz-expected-bucket-owner
@test "REST - DeleteBucket - correct x-amz-expected-bucket-owner" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "avoid bucket deletion in static mode"
@@ -150,6 +156,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# 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"
diff --git a/tests/test_rest_delete_bucket_ownership_controls.sh b/tests/test_rest_delete_bucket_ownership_controls.sh
index c73cbefc..8b1d6711 100755
--- a/tests/test_rest_delete_bucket_ownership_controls.sh
+++ b/tests/test_rest_delete_bucket_ownership_controls.sh
@@ -24,6 +24,7 @@ source ./tests/setup.sh
export RUN_USERS=true
+# tags: curl,DeleteBucketOwnershipControls,ownershipControls,user,invalid-header
@test "REST - DeleteBucketOwnershipControls - lack permission" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skip versitygw-specific users tests"
@@ -44,6 +45,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,DeleteBucketOwnershipControls,ownershipControls,invalid-header
@test "REST - DeleteBucketOwnershipControls - invalid username" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skip versitygw-specific users tests"
@@ -63,6 +65,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,DeleteBucketOwnershipControls,PutBucketOwnershipControls,GetBucketOwnershipControls,ownershipControls
@test "REST - DeleteBucketOwnershipControls - success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -88,6 +91,7 @@ export RUN_USERS=true
assert_equal "$rule" ""
}
+# tags: curl,DeleteBucketOwnershipControls,ownershipControls
@test "REST - DeleteBucketOwnershipControls - BucketName is reported in error" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1493"
diff --git a/tests/test_rest_delete_bucket_tagging.sh b/tests/test_rest_delete_bucket_tagging.sh
index 1832102f..0b52cd1d 100755
--- a/tests/test_rest_delete_bucket_tagging.sh
+++ b/tests/test_rest_delete_bucket_tagging.sh
@@ -26,6 +26,7 @@ source ./tests/drivers/get_bucket_tagging/get_bucket_tagging_rest.sh
export RUN_USERS=true
+# tags: curl,DeleteBucketTagging,tagging,user,invalid-header
@test "REST - DeleteBucketTagging - lack permission" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skip versitygw-specific users tests"
@@ -44,6 +45,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl,PutBucketTagging,GetBucketTagging,DeleteBucketTagging,tagging
@test "REST - DeleteBucketTagging - success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_delete_object.sh b/tests/test_rest_delete_object.sh
index 0d8a18c8..7052f719 100755
--- a/tests/test_rest_delete_object.sh
+++ b/tests/test_rest_delete_object.sh
@@ -21,6 +21,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/delete_objects/delete_objects_rest.sh
source ./tests/setup.sh
+# tags: curl,PutObject,GetObject,DeleteObject,minimal-request
@test "test_rest_delete_object" {
run get_file_name
assert_success
@@ -46,6 +47,7 @@ source ./tests/setup.sh
assert_failure
}
+# tags: curl,DeleteObjects,invalid-header,content-md5
@test "REST - delete objects - no content-md5 header" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -58,6 +60,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,PutObject,DeleteObjects,content-md5
@test "REST - delete objects command" {
run get_file_name
assert_success
diff --git a/tests/test_rest_get_bucket_location.sh b/tests/test_rest_get_bucket_location.sh
index 30e55015..be04de2b 100755
--- a/tests/test_rest_get_bucket_location.sh
+++ b/tests/test_rest_get_bucket_location.sh
@@ -21,6 +21,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/get_bucket_location/get_bucket_location_rest.sh
source ./tests/setup.sh
+# tags: curl,GetBucketLocation,location
@test "REST - GetBucketLocation - no bucket" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "not valid for static mode"
@@ -33,6 +34,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,GetBucketLocation,location,region-us-east-1
@test "REST - GetBucketLocation - us-east-1 is returned as null" {
log 5 "AWS_REGION: $AWS_REGION"
if [ "$AWS_REGION" != "us-east-1" ]; then
@@ -42,6 +44,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,GetBucketLocation,location,region-non-us-east-1
@test "REST - GetBucketLocation - success (non us-east-1)" {
if [ "$AWS_REGION" == "us-east-1" ]; then
skip "test not valid for us-east-1"
diff --git a/tests/test_rest_get_bucket_policy_status.sh b/tests/test_rest_get_bucket_policy_status.sh
index 6a810446..e43ffad7 100755
--- a/tests/test_rest_get_bucket_policy_status.sh
+++ b/tests/test_rest_get_bucket_policy_status.sh
@@ -23,6 +23,7 @@ source ./tests/drivers/put_bucket_policy/put_bucket_policy_rest.sh
source ./tests/util/util_public_access_block.sh
source ./tests/setup.sh
+# tags: curl,GetBucketPolicyStatus,policy,policyStatus
@test "REST - GetBucketPolicyStatus" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -38,6 +39,7 @@ source ./tests/setup.sh
assert_success
}
+# tags: curl,GetBucketPolicyStatus,policy,policyStatus,public-access
@test "REST - GetBucketPolicyStatus true" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -56,4 +58,4 @@ source ./tests/setup.sh
run get_and_check_policy_status "$bucket_name" "true"
assert_success
-}
\ No newline at end of file
+}
diff --git a/tests/test_rest_get_object.sh b/tests/test_rest_get_object.sh
index c97013d1..0788fcc7 100755
--- a/tests/test_rest_get_object.sh
+++ b/tests/test_rest_get_object.sh
@@ -22,7 +22,7 @@ source ./tests/drivers/complete_multipart_upload/complete_multipart_upload_rest.
source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/setup.sh
-# tags: curl, GetObject, HeadObject, range
+# tags: curl,GetObject,HeadObject,range
@test "REST - range download and compare" {
run get_file_name
assert_success
@@ -43,7 +43,7 @@ source ./tests/setup.sh
assert_success
}
-# tags: rest, PutObject, GetObject
+# tags: curl,PutObject,GetObject,special-chars,encoding
@test "REST - put, get object, encoded name" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -69,7 +69,7 @@ source ./tests/setup.sh
assert_success
}
-# tags: rest, GetObject,x-amz-content-sha256
+# tags: curl,GetObject,invalid-header,x-amz-content-sha256
@test "REST - GetObject w/invalid payload type" {
run get_file_name
assert_success
@@ -86,7 +86,7 @@ source ./tests/setup.sh
assert_success
}
-# tags: curl,GetObject,partNumber
+# tags: curl,GetObject,partNumber,invalid-header
@test "REST - GetObject - part number 2 w/o multipart upload" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -99,7 +99,7 @@ source ./tests/setup.sh
assert_success
}
-# tags: curl,GetObject,partNumber
+# 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"
@@ -116,7 +116,7 @@ source ./tests/setup.sh
assert_success
}
-# tags: curl,GetObject,invalid-header
+# tags: curl,GetObject,invalid-header,response-headers
@test "REST - GetObject - response query - invalid response type" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/2075"
@@ -134,37 +134,37 @@ source ./tests/setup.sh
assert_success
}
-# tags: curl,GetObject,response-cache-control
+# tags: curl,GetObject,response-cache-control,response-headers
@test "REST - GetObject - response-cache-control" {
run test_get_object_with_custom_content_header "cache-control" "dummy"
assert_success
}
-# tags: curl,GetObject,response-content-disposition
+# tags: curl,GetObject,response-content-disposition,response-headers
@test "REST - GetObject - response-content-disposition" {
run test_get_object_with_custom_content_header "content-disposition" "dummy"
assert_success
}
-# tags: curl,GetObject,response-content-encoding
+# tags: curl,GetObject,response-content-encoding,response-headers
@test "REST - GetObject - response-content-encoding" {
run test_get_object_with_custom_content_header "content-encoding" "dummy"
assert_success
}
-# tags: curl,GetObject,response-content-language
+# tags: curl,GetObject,response-content-language,response-headers
@test "REST - GetObject - response-content-language" {
run test_get_object_with_custom_content_header "content-language" "dummy"
assert_success
}
-# tags: curl,GetObject,response-content-type
+# tags: curl,GetObject,response-content-type,response-headers
@test "REST - GetObject - response-content-type" {
run test_get_object_with_custom_content_header "content-type" "dummy"
assert_success
}
-# tags: curl,GetObject,response-expires
+# tags: curl,GetObject,response-expires,response-headers
@test "REST - GetObject - response-expires" {
run test_get_object_with_custom_content_header "expires" "dummy+ one"
assert_success
diff --git a/tests/test_rest_get_object_legal_hold.sh b/tests/test_rest_get_object_legal_hold.sh
index 5d02cae4..8b145154 100755
--- a/tests/test_rest_get_object_legal_hold.sh
+++ b/tests/test_rest_get_object_legal_hold.sh
@@ -20,6 +20,7 @@ load ./bats-assert/load
source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
+# tags: curl,GetObjectLegalHold,legal-hold,object-lock,invalid-header
@test "REST - legal hold, get without config" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "test requires object lock not to be enabled"
@@ -42,6 +43,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl,GetObjectLegalHold,legal-hold,object-lock,invalid-header
@test "REST - legal hold, object lock enabled w/o specific object lock set" {
run get_file_name
assert_success
diff --git a/tests/test_rest_get_object_tagging.sh b/tests/test_rest_get_object_tagging.sh
index 53c8ee17..1f455e5c 100755
--- a/tests/test_rest_get_object_tagging.sh
+++ b/tests/test_rest_get_object_tagging.sh
@@ -25,6 +25,7 @@ source ./tests/drivers/get_object_tagging/get_object_tagging.sh
source ./tests/drivers/get_object_tagging/get_object_tagging_rest.sh
source ./tests/drivers/put_object/put_object_rest.sh
+# tags: curl,GetObjectTagging,tagging,minimal-request
@test "REST - GetObjectTagging - no tags" {
run get_file_name
assert_success
@@ -41,6 +42,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,GetObjectTagging,PutObjectTagging,tagging,versioning
@test "REST - GetObjectTagging - older version returns version ID" {
run get_file_name
assert_success
@@ -57,6 +59,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,GetObjectTagging,tagging,versioning,invalid-header,versionId
@test "REST - GetObjectTagging - invalid version ID error returns version ID" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1698"
@@ -82,6 +85,7 @@ source ./tests/drivers/put_object/put_object_rest.sh
assert_success
}
+# tags: curl,PutObject,PutObjectTagging,GetObjectTagging,DeleteObjectTagging,tagging
@test "test_rest_tagging" {
test_key="TestKey"
test_value="TestValue"
diff --git a/tests/test_rest_head_bucket.sh b/tests/test_rest_head_bucket.sh
index 8eae10e4..7e8027b9 100755
--- a/tests/test_rest_head_bucket.sh
+++ b/tests/test_rest_head_bucket.sh
@@ -20,6 +20,7 @@ load ./bats-assert/load
source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
+# tags: curl,HeadBucket,invalid-header,x-amz-expected-bucket-owner
@test "REST - HeadBucket - mismatched owner" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -32,6 +33,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl,HeadBucket,invalid-header,x-amz-expected-bucket-owner
@test "REST - HeadBucket - invalid owner" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -51,11 +53,13 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl,HeadBucket,minimal-request
@test "REST - HeadBucket - doesn't exist" {
run head_bucket_rest "$BUCKET_ONE_NAME-$(uuidgen)"
assert_failure 1
}
+# tags: curl,HeadBucket,x-amz-expected-bucket-owner
@test "REST - HeadBucket - expected owner success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_head_object.sh b/tests/test_rest_head_object.sh
index a1f02bdb..992a060d 100755
--- a/tests/test_rest_head_object.sh
+++ b/tests/test_rest_head_object.sh
@@ -21,6 +21,7 @@ source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/get_object_attributes/get_object_attributes_rest.sh
+# tags: curl,HeadObject,GetObjectAttributes,ETag,x-amz-object-attributes
@test "REST - head object" {
run get_file_name
assert_success
@@ -44,6 +45,7 @@ source ./tests/drivers/get_object_attributes/get_object_attributes_rest.sh
assert_success
}
+# tags: curl,HeadObject,Content-Type
@test "REST - HeadObject - default Content-Type is binary/octet-stream" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_list_buckets.sh b/tests/test_rest_list_buckets.sh
index c278eae5..7ca63ad7 100755
--- a/tests/test_rest_list_buckets.sh
+++ b/tests/test_rest_list_buckets.sh
@@ -52,7 +52,7 @@ export RUN_USERS=true
assert_success
}
-# tags, curl,ListBuckets,required-headers,authorization
+# 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"
@@ -61,25 +61,25 @@ export RUN_USERS=true
assert_success
}
-# tags, curl,ListBuckets,required-headers,authorization
+# tags: curl,ListBuckets,required-headers,Authorization,invalid-header
@test "REST - very invalid credential string" {
run send_rest_go_command_expect_error "400" "AuthorizationHeaderMalformed" "the Credential is mal-formed" "-incorrectCredential" "Credentials"
assert_success
}
-# tags: curl,ListBuckets,required-headers,authorization
+# tags: curl,ListBuckets,required-headers,Authorization,invalid-header
@test "REST - nonexistent key ID" {
run send_rest_go_command_expect_error "403" "InvalidAccessKeyId" "does not exist" "-awsAccessKeyId" "dummy"
assert_success
}
-# tags: curl,ListBuckets,required-headers,authorization,x-amz-date
+# tags: curl,ListBuckets,required-headers,Authorization,x-amz-date,invalid-header
@test "REST - invalid year/month/day" {
run send_rest_go_command_expect_error "400" "AuthorizationHeaderMalformed" "incorrect date format" "-invalidYearMonthDay"
assert_success
}
-# tags: curl,ListBuckets,required-headers,authorization,x-amz-date
+# tags: curl,ListBuckets,required-headers,Authorization,x-amz-date,invalid-header
@test "REST - incorrect year/month/day" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1514"
@@ -88,25 +88,25 @@ export RUN_USERS=true
assert_success
}
-# tags: curl,ListBuckets,required-headers,authorization
+# tags: curl,ListBuckets,required-headers,Authorization,invalid-header
@test "REST - invalid region" {
run send_rest_go_command_expect_error "400" "AuthorizationHeaderMalformed" "us-eest-1" "-awsRegion" "us-eest-1"
assert_success
}
-# tags: curl,ListBuckets,required-headers,authorization
+# tags: curl,ListBuckets,required-headers,Authorization,invalid-header
@test "REST - invalid service name" {
run send_rest_go_command_expect_error "400" "AuthorizationHeaderMalformed" "incorrect service" "-serviceName" "s2"
assert_success
}
-# tags: curl,ListBuckets,required-headers,authorization
+# tags: curl,ListBuckets,required-headers,Authorization,invalid-header
@test "REST - incorrect signature" {
run send_rest_go_command_expect_error "403" "SignatureDoesNotMatch" "does not match" "-incorrectSignature"
assert_success
}
-# tags: openssl,ListBuckets,required-headers,host
+# tags: openssl,ListBuckets,required-headers,host,invalid-header
@test "REST - missing host parameter" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1530"
@@ -128,7 +128,7 @@ export RUN_USERS=true
assert_success
}
-# tags: curl,ListBuckets,max-buckets
+# tags: curl,ListBuckets,max-buckets,continuation-token
@test "REST - list buckets - continuation token isn't bucket name" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1399"
@@ -256,7 +256,7 @@ export RUN_USERS=true
assert_success
}
-# tags: curl,ListBuckets,bucket-region
+# tags: curl,ListBuckets,bucket-region,invalid-query
@test "REST - ListBuckets - invalid bucket-region query" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1923"
diff --git a/tests/test_rest_list_object_versions.sh b/tests/test_rest_list_object_versions.sh
index 4927daed..0e09f34f 100755
--- a/tests/test_rest_list_object_versions.sh
+++ b/tests/test_rest_list_object_versions.sh
@@ -22,6 +22,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/list_object_versions/list_object_versions_rest.sh
source ./tests/util/util_time.sh
+# tags: curl,ListObjectVersions,versions,invalid-query
@test "ListObjectVersions - accidental query of versions on object returns correct error" {
test_file="test_file"
@@ -37,6 +38,7 @@ source ./tests/util/util_time.sh
assert_success
}
+# tags: curl,ListObjectVersions,versions,versioning,object-lock,retention,x-amz-object-lock-mode,x-amz-object-lock-retain-until-date,content-md5
@test "ListObjectVersions - version changes after deletion w/retention policy" {
test_file="test_file"
@@ -64,4 +66,4 @@ source ./tests/util/util_time.sh
run list_object_versions_before_and_after_retention_deletion "$bucket_name" "$test_file"
assert_success
-}
\ No newline at end of file
+}
diff --git a/tests/test_rest_list_objects.sh b/tests/test_rest_list_objects.sh
index d1db867f..e4b9af7d 100755
--- a/tests/test_rest_list_objects.sh
+++ b/tests/test_rest_list_objects.sh
@@ -21,6 +21,7 @@ source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/list_objects/list_objects_rest.sh
+# tags: curl,ListObjects,minimal-request
@test "test_rest_list_objects" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -40,6 +41,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjectsV2,continuation-token,invalid-query
@test "REST - list objects v2 - invalid continuation token" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/993"
@@ -81,6 +83,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# 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"
@@ -105,6 +108,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjectsV2,minimal-request
@test "REST - ListObjectsV2 - success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -125,6 +129,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjects,minimal-request
@test "REST - list objects v1 - no NextMarker without delimiter" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/999"
@@ -154,10 +159,12 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjects,delimiter,prefix
@test "REST - ListObjects - delimiter" {
list_objects_delimiter "1"
}
+# tags: curl,ListObjects,encoding-type,invalid-query
@test "REST - ListObjects - invalid encoding" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1984"
@@ -175,6 +182,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjects,encoding-type
@test "REST - ListObjects - encoding success" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1985"
@@ -199,6 +207,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjects,marker,max-keys
@test "REST - ListObjects - marker/max-keys" {
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 2
assert_success
@@ -219,6 +228,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjects,prefix
@test "REST - ListObjects - prefix" {
run setup_bucket_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -245,6 +255,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjectsV2,continuation-token,max-keys
@test "REST - ListObjectsV2 - continuation token" {
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 3
assert_success
@@ -268,6 +279,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjects,start-after,invalid-query
@test "ListObjectsV1 - start-after - error" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/2004"
@@ -286,6 +298,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjectsV2,start-after,continuation-token
@test "ListObjectsV1 - start-after - doesn't include continuation token" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/2007"
@@ -303,6 +316,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjectsV2,start-after
@test "ListObjectsV2 - start-after - success" {
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 2
assert_success
@@ -320,6 +334,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
assert_success
}
+# tags: curl,ListObjectsV2,fetch-owner
@test "ListObjectsV2 - fetch-owner" {
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 2
assert_success
@@ -338,6 +353,7 @@ source ./tests/drivers/list_objects/list_objects_rest.sh
}
# shellcheck disable=SC2030
+# tags: curl,ListObjectsV2,delimiter,prefix
@test "ListObjectsV2 - delimiter" {
list_objects_delimiter 2
}
diff --git a/tests/test_rest_multipart.sh b/tests/test_rest_multipart.sh
index 0db9f4ae..42d0db0c 100755
--- a/tests/test_rest_multipart.sh
+++ b/tests/test_rest_multipart.sh
@@ -25,6 +25,7 @@ source ./tests/drivers/complete_multipart_upload/complete_multipart_upload_rest.
source ./tests/drivers/list_buckets/list_buckets_rest.sh
source ./tests/drivers/upload_part/upload_part_rest.sh
+# tags: curl,multipart,CreateMultipartUpload,AbortMultipartUpload
@test "REST - multipart upload create then abort" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -34,6 +35,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,CreateMultipartUpload,UploadPart,ListParts,CompleteMultipartUpload
@test "REST - multipart upload create, list parts" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -59,6 +61,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,CompleteMultipartUpload,invalid-header,ETag
@test "REST - complete upload - invalid part" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1008"
@@ -78,6 +81,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,UploadPartCopy,x-amz-copy-source
@test "REST - upload part copy (UploadPartCopy)" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -97,6 +101,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,UploadPartCopy,partNumber,invalid-query
@test "REST - UploadPartCopy w/o upload ID" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -111,6 +116,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,UploadPartCopy,invalid-query
@test "REST - UploadPartCopy w/o part number" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -125,6 +131,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,UploadPartCopy,ETag
@test "REST - UploadPartCopy - ETag is quoted" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -144,6 +151,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,UploadPart,ETag
@test "REST - UploadPart - ETag is quoted" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -169,6 +177,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,UploadPart,invalid-query
@test "REST - UploadPart w/o part number" {
skip "versitygw/curl/fasthttp issue"
@@ -191,6 +200,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: openssl,multipart,UploadPart,partNumber,uploadId,invalid-query
@test "REST - UploadPart w/o upload ID" {
skip "versitygw/curl/fasthttp issue"
@@ -211,6 +221,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,invalid-header,x-amz-checksum-type
@test "REST - multipart w/invalid checksum type" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -221,6 +232,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,invalid-header,x-amz-checksum-algorithm
@test "REST - multipart w/invalid checksum algorithm" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -231,6 +243,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart checksum w/crc64nvme, composite" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -241,6 +254,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart checksum w/sha1, full object" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -251,6 +265,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart checksum w/sha256, full object" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -261,6 +276,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - lowercase checksum type and algorithm" {
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -270,6 +286,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: curl,multipart,checksum,CreateMultipartUpload,UploadPart,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object checksum type doesn't require UploadPart checksums" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -291,6 +308,7 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_success
}
+# tags: unit,checksum,composite-checksum
@test "sha256 - calculate composite checksum w/null byte" {
run calculate_composite_checksum "sha256" "Gaq9AN6Uxmk7WaTR9TzgDhE8m8bzXrfJWReDyLoZAo8=" "GohMQZ27EDvwB3n2iDx4irfxkTQDyvpDB7NFeTYaXn8="
assert_success
@@ -298,116 +316,139 @@ source ./tests/drivers/upload_part/upload_part_rest.sh
assert_equal "$composite" "/UpzIA5Rft0d6bSkAlmgESdRE3vtDbo8hzAn//6Z5UU="
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - sha256" {
run test_multipart_upload_with_checksum "COMPOSITE" "SHA256"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - sha1" {
run test_multipart_upload_with_checksum "COMPOSITE" "SHA1"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - crc32" {
run test_multipart_upload_with_checksum "COMPOSITE" "CRC32"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - crc32c" {
run test_multipart_upload_with_checksum "COMPOSITE" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - crc32" {
run test_multipart_upload_with_checksum "FULL_OBJECT" "CRC32"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - crc32c" {
run test_multipart_upload_with_checksum "FULL_OBJECT" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - crc64nvme" {
run test_multipart_upload_with_checksum "FULL_OBJECT" "CRC64NVME"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,x-amz-checksum-algorithm
@test "REST - multipart - x-amz-checksum-algorithm is ignored in CompleteMultipartUpload" {
run test_complete_multipart_upload_unneeded_algorithm_parameter "FULL_OBJECT" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - incorrect sha256" {
run test_complete_multipart_upload_incorrect_checksum "COMPOSITE" "SHA256"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - incorrect sha1" {
run test_complete_multipart_upload_incorrect_checksum "COMPOSITE" "SHA1"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - incorrect crc32" {
run test_complete_multipart_upload_incorrect_checksum "COMPOSITE" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - incorrect crc32c" {
run test_complete_multipart_upload_incorrect_checksum "COMPOSITE" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - incorrect crc32" {
run test_complete_multipart_upload_incorrect_checksum "FULL_OBJECT" "CRC32"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - incorrect crc32c" {
run test_complete_multipart_upload_incorrect_checksum "FULL_OBJECT" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - incorrect crc64nvme" {
run test_complete_multipart_upload_incorrect_checksum "FULL_OBJECT" "CRC64NVME"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - invalid sha1" {
run test_complete_multipart_upload_invalid_checksum "COMPOSITE" "SHA1"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - invalid sha256" {
run test_complete_multipart_upload_invalid_checksum "COMPOSITE" "SHA256"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - invalid crc32" {
run test_complete_multipart_upload_invalid_checksum "COMPOSITE" "CRC32"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - composite - invalid crc32c" {
run test_complete_multipart_upload_invalid_checksum "COMPOSITE" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - invalid crc32" {
run test_complete_multipart_upload_invalid_checksum "FULL_OBJECT" "CRC32"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - invalid crc32c" {
run test_complete_multipart_upload_invalid_checksum "FULL_OBJECT" "CRC32C"
assert_success
}
+# tags: curl,multipart,checksum,CompleteMultipartUpload,invalid-header,x-amz-checksum-type,x-amz-checksum-algorithm
@test "REST - multipart - full object - invalid crc64nvme" {
run test_complete_multipart_upload_invalid_checksum "FULL_OBJECT" "CRC64NVME"
assert_success
}
+# tags: curl,multipart,CompleteMultipartUpload,invalid-header,x-amz-mp-object-size
@test "REST - multipart - x-amz-mp-object-size - invalid string" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_not_implemented.sh b/tests/test_rest_not_implemented.sh
index 525b0eea..2604add5 100755
--- a/tests/test_rest_not_implemented.sh
+++ b/tests/test_rest_not_implemented.sh
@@ -27,35 +27,28 @@ source ./tests/setup.sh
}
@test "REST - GetBucketAnalyticsConfiguration - with template" {
- run get_bucket_name "$BUCKET_ONE_NAME"
+ run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
- bucket_name=$output
-
- run setup_bucket_v2 "$bucket_name"
- assert_success
-
- run get_file_name
- assert_success
- file_name=$output
+ read -r bucket_name file_name <<< "$output"
run send_rest_go_command_write_response_to_file "$TEST_FILE_FOLDER/$file_name" "-bucketName" "$bucket_name" "-query" "analytics="
assert_success
- run bash -c "go run ./tests/checker/main.go -dataFile $TEST_FILE_FOLDER/$file_name -batsTestFileName $BATS_TEST_FILENAME \
- -batsTestName $BATS_TEST_NAME -serverName $SERVER_NAME -matrixFile $TEMPLATE_MATRIX_FILE"
+ run check_rest_expected_header_error "$TEST_FILE_FOLDER/$file_name" "501" "Not Implemented"
+ assert_success
+
+ run go run ./tests/checker/main.go -dataFile "$TEST_FILE_FOLDER/$file_name" -batsTestFileName "$BATS_TEST_FILENAME" \
+ -batsTestName "$BATS_TEST_NAME" -serverName "$SERVER_NAME" -matrixFile "$TEMPLATE_MATRIX_FILE"
assert_success
}
@test "REST - NotImplemented - correct Content-Type header" {
- run get_bucket_name "$BUCKET_ONE_NAME"
- assert_success
- bucket_name=$output
-
- run setup_bucket_v2 "$bucket_name"
+ run setup_bucket_v3 "$BUCKET_ONE_NAME"
assert_success
+ bucket_name="$output"
run send_rest_go_command_check_header_key_and_value "501" "Content-Type" "application/xml" "-bucketName" "$bucket_name" \
- "-query" "analytics"
+ "-query" "analytics="
assert_success
}
@@ -232,14 +225,11 @@ source ./tests/setup.sh
@test "REST - GetObjectAcl" {
run get_file_name
assert_success
- file_name=$output
+ file_name="$output"
- run get_bucket_name "$BUCKET_ONE_NAME"
- assert_success
- bucket_name="$output"
-
- run setup_bucket_and_add_file "$bucket_name" "$file_name"
+ run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
+ read -r bucket_name file_name <<< "$output"
run send_not_implemented_expect_failure "-bucketName" "$bucket_name" "-query" "acl=" "-method" "GET" "-objectKey" "$file_name"
assert_success
@@ -248,14 +238,11 @@ source ./tests/setup.sh
@test "REST - PutObjectAcl" {
run get_file_name
assert_success
- file_name=$output
+ file_name="$output"
- run get_bucket_name "$BUCKET_ONE_NAME"
- assert_success
- bucket_name="$output"
-
- run setup_bucket_and_add_file "$bucket_name" "$file_name"
+ run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
assert_success
+ read -r bucket_name file_name <<< "$output"
run send_not_implemented_expect_failure "-bucketName" "$bucket_name" "-query" "acl=" "-method" "PUT" "-objectKey" "$file_name"
assert_success
diff --git a/tests/test_rest_put_bucket_policy.sh b/tests/test_rest_put_bucket_policy.sh
index 7741c7ed..3e2e04d9 100755
--- a/tests/test_rest_put_bucket_policy.sh
+++ b/tests/test_rest_put_bucket_policy.sh
@@ -31,4 +31,4 @@ source ./tests/setup.sh
run put_simple_bucket_policy "$bucket_name"
assert_success
-}
\ No newline at end of file
+}
diff --git a/tests/test_rest_put_bucket_tagging.sh b/tests/test_rest_put_bucket_tagging.sh
index 2c315656..468cd878 100755
--- a/tests/test_rest_put_bucket_tagging.sh
+++ b/tests/test_rest_put_bucket_tagging.sh
@@ -22,6 +22,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/drivers/get_bucket_tagging/get_bucket_tagging_rest.sh
source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST PutBucketTagging - more than 50 tags" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -35,6 +36,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST PutBucketTagging - tag key with control character" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -48,6 +50,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST PutBucketTagging - duplicate tag key" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -62,6 +65,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST PutBucketTagging - tag value with control character" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -75,6 +79,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST PutBucketTagging - empty tag key" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1583"
@@ -87,6 +92,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST PutBucketTagging - returns invalid key" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1583"
@@ -99,6 +105,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging
@test "REST - PutBucketTagging - success" {
test_key="testKey"
test_value="testValue"
@@ -114,6 +121,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: openssl, PutBucketTagging, tagging, chunked, x-amz-content-sha256, invalid-header
@test "REST - PutBucketTagging - STREAMING-UNSIGNED-PAYLOAD-TRAILER fails" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -128,6 +136,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, invalid-query
@test "REST - PutBucketTagging - no payload" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -140,6 +149,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, content-md5, invalid-header
@test "REST - PutBucketTagging - invalid Content-MD5" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -154,6 +164,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, content-md5, invalid-header
@test "REST - PutBucketTagging - invalid Content-MD5 - invalid Content-MD5 itself returned" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1526"
@@ -169,6 +180,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, content-md5, invalid-header
@test "REST - PutBucketTagging - incorrect Content-MD5" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -182,6 +194,7 @@ source ./tests/drivers/put_bucket_tagging/put_bucket_tagging_rest.sh
assert_success
}
+# tags: curl, PutBucketTagging, tagging, content-md5, invalid-header
@test "REST - PutBucketTagging - missing Content-MD5" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_put_bucket_versioning.sh b/tests/test_rest_put_bucket_versioning.sh
index ae6b0aba..e687b374 100755
--- a/tests/test_rest_put_bucket_versioning.sh
+++ b/tests/test_rest_put_bucket_versioning.sh
@@ -20,6 +20,7 @@ load ./bats-assert/load
source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
+# tags: curl, PutBucketVersioning, versioning, invalid-query
@test "REST - PutBucketVersioning - empty payload" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -31,4 +32,4 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
run send_rest_go_command_expect_error "400" "MissingRequestBodyError" "Request Body is empty" \
"-bucketName" "$bucket_name" "-method" "PUT" "-query" "versioning="
assert_success
-}
\ No newline at end of file
+}
diff --git a/tests/test_rest_put_object.sh b/tests/test_rest_put_object.sh
index 03d7db23..c0d84145 100755
--- a/tests/test_rest_put_object.sh
+++ b/tests/test_rest_put_object.sh
@@ -30,6 +30,7 @@ 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
@@ -42,6 +43,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, Expires, invalid-header
@test "REST - PutObject - invalid 'Expires' parameter" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -54,6 +56,7 @@ export RUN_USERS=true
assert_success
}
+# tags: user, curl, PutObject
@test "REST - PutObject with user permission - admin user" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versity-specific users tests"
@@ -72,6 +75,7 @@ export RUN_USERS=true
assert_success
}
+# tags: user, curl, PutObject
@test "REST - PutObject with no permission - 'user' user" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versity-specific users tests"
@@ -89,6 +93,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, content-length, invalid-header
@test "REST - put object, missing Content-Length" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1321"
@@ -104,6 +109,7 @@ export RUN_USERS=true
assert_success
}
+# 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
@@ -116,6 +122,7 @@ export RUN_USERS=true
assert_success
}
+# 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
@@ -129,6 +136,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, If-None-Match
@test "REST - PutObject - If-None-Match - block copy" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -142,6 +150,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, If-None-Match
@test "REST - PutObject - If-None-Match - success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -155,6 +164,7 @@ export RUN_USERS=true
assert_success
}
+# 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
@@ -168,6 +178,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, If-Match, ETag
@test "REST - PutObject - If-Match - incorrect etag" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -181,6 +192,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, If-Match, ETag
@test "REST - PutObject - If-Match - correct etag" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -199,6 +211,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject
@test "PutObject - metadata keys are made lowercase" {
uppercase_key="CAPITAL"
uppercase_value="DUMMY"
@@ -218,6 +231,7 @@ export RUN_USERS=true
assert_success
}
+# tags: user, curl, PutObject
@test "REST - PutObject - user permission, bad signature" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
@@ -235,6 +249,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, Expect
@test "REST - PutObject - expect continue - success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -248,6 +263,7 @@ export RUN_USERS=true
assert_success
}
+# tags: user, curl, PutObject
@test "REST - PutObject - invalid x-amz-request-payer" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -277,6 +293,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, Content-Disposition
@test "REST - PutObject - content disposition" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -293,6 +310,7 @@ export RUN_USERS=true
assert_success
}
+# 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
@@ -307,6 +325,7 @@ export RUN_USERS=true
assert_success
}
+# 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"
@@ -325,6 +344,7 @@ export RUN_USERS=true
assert_success
}
+# 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"
@@ -347,6 +367,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, object-lock, retention, versioning, content-md5, invalid-header
@test "TEST - REST - PutObject - not allowed without content-MD5 with lock configuration" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1740"
@@ -370,6 +391,7 @@ export RUN_USERS=true
assert_success
}
+# 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
@@ -392,6 +414,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, x-amz-acl, not-implemented
@test "PutObject - x-amz-acl - not implemented" {
if [ "$DIRECT" != "true" ]; then
skip "skip for versitygw - see #1904"
@@ -420,6 +443,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, x-amz-grant-full-control, not-implemented
@test "PutObject - x-amz-grant-full-control - not implemented" {
if [ "$DIRECT" != "true" ]; then
skip "skip for versitygw - see #1904"
@@ -428,6 +452,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, x-amz-grant-read, not-implemented
@test "PutObject - x-amz-grant-read - not implemented" {
if [ "$DIRECT" != "true" ]; then
skip "skip for versitygw - see #1904"
@@ -435,6 +460,7 @@ export RUN_USERS=true
run attempt_put_object_with_specific_acl "x-amz-grant-read"
assert_success
}
+# tags: curl, PutObject, x-amz-grant-read-acp, not-implemented
@test "PutObject - x-amz-grant-read-acp - not implemented" {
if [ "$DIRECT" != "true" ]; then
skip "skip for versitygw - see #1904"
@@ -443,6 +469,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, x-amz-grant-write-acp, not-implemented
@test "PutObject - x-amz-grant-write-acp - not implemented" {
if [ "$DIRECT" != "true" ]; then
skip "skip for versitygw - see #1904"
@@ -451,6 +478,7 @@ export RUN_USERS=true
assert_success
}
+# 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"
@@ -473,6 +501,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, object-lock, legal-hold, x-amz-object-lock-legal-hold, content-md5, invalid-header
@test "PutObject - x-amz-object-lock-legal-hold - no Content-MD5" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1776"
@@ -496,6 +525,7 @@ export RUN_USERS=true
assert_success
}
+# tags: curl, PutObject, object-lock, legal-hold, x-amz-object-lock-legal-hold, content-md5
@test "PutObject - x-amz-object-lock-legal-hold - success" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -519,6 +549,7 @@ export RUN_USERS=true
assert_success
}
+# tags: openssl, PutObject
@test "REST - PutObject - openssl go non-file payload" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
diff --git a/tests/test_rest_put_object_legal_hold.sh b/tests/test_rest_put_object_legal_hold.sh
index c36ccd72..eb961247 100755
--- a/tests/test_rest_put_object_legal_hold.sh
+++ b/tests/test_rest_put_object_legal_hold.sh
@@ -20,6 +20,7 @@ load ./bats-assert/load
source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
+# tags: curl, PutObject, PutObjectLegalHold, legal-hold, object-lock, content-md5, invalid-header
@test "REST - PutObjectLegalHold - missing content-md5" {
run get_file_name
assert_success
@@ -42,6 +43,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl, PutObject, PutObjectLegalHold, legal-hold, object-lock, content-md5, invalid-query
@test "REST - PutObjectLegalHold w/o payload" {
run get_file_name
assert_success
@@ -64,6 +66,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl, PutObject, PutObjectLegalHold, legal-hold, object-lock, content-md5
@test "REST - PutObjectLegalHold - success" {
run get_file_name
assert_success
diff --git a/tests/test_rest_put_object_lock_config.sh b/tests/test_rest_put_object_lock_config.sh
index 22babf39..ed8b5b88 100755
--- a/tests/test_rest_put_object_lock_config.sh
+++ b/tests/test_rest_put_object_lock_config.sh
@@ -20,6 +20,7 @@ load ./bats-assert/load
source ./tests/setup.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
+# tags: curl, PutObjectLockConfiguration, object-lock, content-md5, invalid-query, versioning
@test "REST - PutObjectLockConfig - missing payload" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -36,6 +37,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl, PutObjectLockConfiguration, object-lock, retention, content-md5, invalid-query, versioning
@test "REST - PutObjectLockConfig - zero day config, correct error code" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -52,6 +54,7 @@ source ./tests/drivers/create_bucket/create_bucket_rest.sh
assert_success
}
+# tags: curl, PutObjectLockConfiguration, object-lock, retention, content-md5, versioning
@test "REST - PutObjectLockConfig - default retention period works" {
test_file="test_file"
diff --git a/tests/test_rest_put_object_tagging.sh b/tests/test_rest_put_object_tagging.sh
index 53c85f38..bb0df88f 100755
--- a/tests/test_rest_put_object_tagging.sh
+++ b/tests/test_rest_put_object_tagging.sh
@@ -26,6 +26,7 @@ source ./tests/setup.sh
test_file="test_file"
+# tags: curl, PutObjectTagging, tagging, content-md5
@test "REST - PutObjectTagging - content-md5 not required for object tagging" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -38,6 +39,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, PutObjectTagging, tagging, invalid-query
@test "REST - PutObjectTagging - invalid key returns invalid key in error" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1663"
@@ -53,6 +55,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, PutObjectTagging, tagging, content-md5
@test "REST - PutObjectTagging - success with content-md5" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -65,6 +68,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, PutObjectTagging, tagging, x-amz-expected-bucket-owner, invalid-header
@test "REST - PutObjectTagging - mismatched bucket owner" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -75,6 +79,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, PutObjectTagging, tagging, versioning, versionId
@test "REST -PutObjectTagging - older version" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "cannot change versioning status for static buckets"
@@ -88,4 +93,4 @@ test_file="test_file"
run tag_old_version "$bucket_name" "$test_file"
assert_success
-}
\ No newline at end of file
+}
diff --git a/tests/test_rest_retention.sh b/tests/test_rest_retention.sh
index 7668a2ad..59d34a29 100755
--- a/tests/test_rest_retention.sh
+++ b/tests/test_rest_retention.sh
@@ -22,6 +22,7 @@ source ./tests/commands/put_object_retention.sh
source ./tests/drivers/create_bucket/create_bucket_rest.sh
source ./tests/util/util_time.sh
+# tags: curl, PutObject, PutObjectRetention, object-lock, retention, content-md5
@test "test_rest_retention" {
run get_file_name
assert_success
@@ -49,6 +50,7 @@ source ./tests/util/util_time.sh
assert_success
}
+# tags: curl, PutObject, PutObjectRetention, object-lock, retention, content-md5, invalid-query
@test "REST - PutObjectRetention - w/o request body" {
run get_file_name
assert_success
@@ -70,4 +72,3 @@ source ./tests/util/util_time.sh
run retention_rest_without_request_body "$bucket_name" "$test_file"
assert_success
}
-
diff --git a/tests/test_rest_versioning.sh b/tests/test_rest_versioning.sh
index 18707152..8fc1774e 100755
--- a/tests/test_rest_versioning.sh
+++ b/tests/test_rest_versioning.sh
@@ -26,6 +26,7 @@ source ./tests/util/util_rest.sh
test_file="test_file"
+# tags: curl, versioning, PutBucketVersioning
@test "REST - check, enable, suspend versioning" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "cannot change versioning status for static buckets"
@@ -53,6 +54,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, versioning, PutBucketVersioning, PutObject, ListObjectVersions
@test "test_rest_versioning" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "cannot change versioning status for static buckets"
@@ -83,6 +85,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, versioning, PutBucketVersioning, PutObject, DeleteObject, ListObjectVersions
@test "versioning - add version, then delete and check for marker" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "cannot change versioning status for static buckets"
@@ -107,6 +110,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, versioning, PutBucketVersioning, PutObject, DeleteObject, GetObject
@test "versioning - retrieve after delete" {
run get_bucket_name "$BUCKET_ONE_NAME"
assert_success
@@ -128,6 +132,7 @@ test_file="test_file"
assert_failure
}
+# tags: curl, versioning, PutBucketVersioning, PutObject, DeleteObject, HeadObject, object-lock
@test "REST - HeadObject does not return 405 with versioning, after file deleted" {
if [ "$RECREATE_BUCKETS" == "false" ] || [[ ( -z "$VERSIONING_DIR" ) && ( "$DIRECT" != "true" ) ]]; then
skip "test isn't valid for this configuration"
@@ -152,6 +157,7 @@ test_file="test_file"
assert_success
}
+# tags: curl, versioning, PutBucketVersioning, PutObject, DeleteObject, HeadObject, object-lock, versionId
@test "REST - HeadObject returns 405 when querying DeleteMarker" {
if [ "$RECREATE_BUCKETS" == "false" ] || [[ ( -z "$VERSIONING_DIR" ) && ( "$DIRECT" != "true" ) ]]; then
skip "test isn't valid for this configuration"
diff --git a/tests/test_s3.sh b/tests/test_s3.sh
index 9333456e..468eb886 100755
--- a/tests/test_s3.sh
+++ b/tests/test_s3.sh
@@ -23,16 +23,19 @@ source ./tests/drivers/file.sh
source ./tests/test_common.sh
# complete-multipart-upload
+# tags: s3, multipart, CreateMultipartUpload, UploadPart, CompleteMultipartUpload
@test "test_complete_multipart_upload" {
test_common_multipart_upload "s3"
}
# copy-object
+# tags: s3, CopyObject, x-amz-copy-source
@test "test_copy_object" {
test_common_copy_object "s3"
}
# create-bucket
+# tags: s3, CreateBucket, DeleteBucket
@test "test_create_delete_bucket" {
test_common_create_delete_bucket "s3"
}
@@ -44,18 +47,22 @@ source ./tests/test_common.sh
# delete-objects - tested with recursive bucket delete
# get-object
+# tags: s3, PutObject, GetObject
@test "test_copy_get_object" {
test_common_put_get_object "s3"
}
+# tags: s3, PutObject
@test "test_put_object" {
test_common_put_object_no_data "s3"
}
+# tags: s3, ListBuckets
@test "test_list_buckets" {
test_common_list_buckets "s3"
}
+# tags: s3, DeleteBucket
@test "test_delete_bucket" {
if [[ $RECREATE_BUCKETS == "false" ]]; then
skip "will not test bucket deletion in static bucket test config"
@@ -68,6 +75,7 @@ source ./tests/test_common.sh
assert_success
}
+# tags: s3, ListObjects
@test "test_ls_directory_object" {
test_common_ls_directory_object "s3"
-}
\ No newline at end of file
+}
diff --git a/tests/test_s3_file_count.sh b/tests/test_s3_file_count.sh
index e7175888..92674498 100755
--- a/tests/test_s3_file_count.sh
+++ b/tests/test_s3_file_count.sh
@@ -20,6 +20,7 @@ load ./bats-assert/load
source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_controls_rest.sh
source ./tests/test_common.sh
+# tags: s3, ListObjects, max-keys
@test "test_list_objects_file_count" {
test_common_list_objects_file_count "s3"
}
diff --git a/tests/test_s3api_bucket.sh b/tests/test_s3api_bucket.sh
index a1b53cf2..c4101c32 100755
--- a/tests/test_s3api_bucket.sh
+++ b/tests/test_s3api_bucket.sh
@@ -59,6 +59,7 @@ source ./tests/util/util_object.sh
export RUN_USERS=true
+# tags: s3api, CreateBucket, invalid-query
@test "test_create_bucket_invalid_name" {
if [[ $RECREATE_BUCKETS != "true" ]]; then
return
@@ -69,6 +70,7 @@ export RUN_USERS=true
}
# create-bucket
+# tags: s3api, CreateBucket, DeleteBucket
@test "test_create_delete_bucket_s3api" {
test_common_create_delete_bucket "s3api"
}
@@ -76,6 +78,7 @@ export RUN_USERS=true
# delete-bucket - test_create_delete_bucket_s3api
# delete-bucket-policy
+# tags: s3api, policy, GetBucketPolicy, PutBucketPolicy, DeleteBucketPolicy
@test "test_get_put_delete_bucket_policy" {
if [[ -n $SKIP_POLICY ]]; then
skip "will not test policy actions with SKIP_POLICY set"
@@ -85,6 +88,7 @@ export RUN_USERS=true
# get-bucket-acl
+# tags: s3api, GetBucketAcl
@test "test_get_bucket_acl" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -94,6 +98,7 @@ export RUN_USERS=true
}
# get-bucket-location
+# tags: s3api, GetBucketLocation
@test "test_get_bucket_location" {
test_common_get_bucket_location "s3api"
}
@@ -102,6 +107,7 @@ export RUN_USERS=true
# get-bucket-tagging - test_set_get_delete_bucket_tags
+# tags: s3api, HeadBucket, minimal-request
@test "test_head_bucket" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -110,6 +116,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, HeadBucket, invalid-query
@test "test_head_bucket_doesnt_exist" {
if [ "$RECREATE_BUCKETS" == "false" ]; then
skip "skip test for static buckets"
@@ -121,6 +128,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, HeadBucket, invalid-query
@test "test_head_bucket_invalid_name" {
if head_bucket "s3api" ""; then
fail "able to get bucket info for invalid name"
@@ -128,15 +136,18 @@ export RUN_USERS=true
}
# test listing buckets on versitygw
+# tags: s3api, ListBuckets, minimal-request
@test "test_list_buckets" {
test_common_list_buckets "s3api"
}
+# tags: s3api, PutBucketAcl
@test "test_put_bucket_acl" {
test_common_put_bucket_acl "s3api"
}
# delete-bucket-tagging
+# tags: s3api, tagging, PutBucketTagging, GetBucketTagging, DeleteBucketTagging
@test "test-set-get-delete-bucket-tags" {
test_common_set_get_delete_bucket_tags "s3api"
}
diff --git a/tests/test_s3api_multipart.sh b/tests/test_s3api_multipart.sh
index e83db3c1..e915925c 100755
--- a/tests/test_s3api_multipart.sh
+++ b/tests/test_s3api_multipart.sh
@@ -34,6 +34,7 @@ source ./tests/util/util_multipart_before_completion.sh
export RUN_USERS=true
# abort-multipart-upload
+# tags: s3api, multipart, CreateMultipartUpload, AbortMultipartUpload
@test "test_abort_multipart_upload" {
run setup_bucket_and_large_file_v3 "$BUCKET_ONE_NAME"
assert_success
@@ -47,6 +48,7 @@ export RUN_USERS=true
}
# complete-multipart-upload
+# tags: s3api, multipart, CreateMultipartUpload, UploadPart, CompleteMultipartUpload, GetObject
@test "test_complete_multipart_upload" {
run setup_bucket_and_large_file_v3 "$BUCKET_ONE_NAME" 20
assert_success
@@ -60,6 +62,7 @@ export RUN_USERS=true
}
# create-multipart-upload
+# tags: s3api, multipart, CreateMultipartUpload, UploadPart, CompleteMultipartUpload, tagging, legal-hold, retention, Content-Type, x-amz-meta
@test "test_create_multipart_upload_properties" {
run get_file_name
assert_success
@@ -103,6 +106,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, multipart, UploadPartCopy, CompleteMultipartUpload
@test "test-multipart-upload-from-bucket" {
run setup_bucket_and_large_file_v3 "$BUCKET_ONE_NAME" 20
assert_success
@@ -115,6 +119,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, multipart, UploadPartCopy, range, invalid-header
@test "test_multipart_upload_from_bucket_range_too_large" {
run setup_bucket_and_large_file_v3 "$BUCKET_ONE_NAME" 20
assert_success
@@ -124,6 +129,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, multipart, UploadPartCopy, range
@test "test_multipart_upload_from_bucket_range_valid" {
run setup_bucket_and_large_file_v3 "$BUCKET_ONE_NAME" 20
assert_success
@@ -134,6 +140,7 @@ export RUN_USERS=true
}
# test multi-part upload list parts command
+# tags: s3api, multipart, CreateMultipartUpload, ListParts, AbortMultipartUpload
@test "test-multipart-upload-list-parts" {
local bucket_file="bucket-file"
run dd if=/dev/urandom of="$TEST_FILE_FOLDER/$bucket_file" bs=5M count=1
@@ -150,6 +157,7 @@ export RUN_USERS=true
}
# test listing of active uploads
+# tags: s3api, multipart, ListMultipartUploads
@test "test-multipart-upload-list-uploads" {
if [[ $RECREATE_BUCKETS == false ]]; then
run abort_all_multipart_uploads "$BUCKET_ONE_NAME"
@@ -164,4 +172,3 @@ export RUN_USERS=true
run create_list_check_multipart_uploads "$BUCKET_ONE_NAME" "$bucket_file_one" "$bucket_file_two"
assert_success
}
-
diff --git a/tests/test_s3api_object.sh b/tests/test_s3api_object.sh
index fe2f1b38..2f1e633a 100755
--- a/tests/test_s3api_object.sh
+++ b/tests/test_s3api_object.sh
@@ -54,10 +54,12 @@ source ./tests/test_s3api_root_inner.sh
export RUN_USERS=true
# copy-object
+# tags: s3api, CopyObject, x-amz-copy-source
@test "test_copy_object" {
test_common_copy_object "s3api"
}
+# tags: s3api, CopyObject, minimal-request
@test "test_copy_object_empty" {
run copy_object_empty
assert_success
@@ -66,42 +68,51 @@ export RUN_USERS=true
# delete-object - tested with bucket cleanup before or after tests
# delete-object-tagging
+# tags: s3api, DeleteObjectTagging, tagging
@test "test_delete_object_tagging" {
test_common_delete_object_tagging "s3api"
}
# delete-objects
+# tags: s3api, DeleteObject
@test "test_delete_objects" {
test_delete_objects_s3api_root
}
# get-object
+# tags: s3api, GetObject, range
@test "test_get_object_full_range" {
test_get_object_full_range_s3api_root
}
+# tags: s3api, GetObject, range, invalid-header
@test "test_get_object_invalid_range" {
test_get_object_invalid_range_s3api_root
}
# get-object-attributes
+# tags: s3api, GetObjectAttributes
@test "test_get_object_attributes" {
test_get_object_attributes_s3api_root
}
+# tags: s3api, PutObjectLegalHold, GetObjectLegalHold, object-lock, legal-hold
@test "test_get_put_object_legal_hold" {
test_get_put_object_legal_hold_s3api_root
}
+# tags: s3api, PutObjectRetention, GetObjectRetention, object-lock, retention
@test "test_get_put_object_retention" {
test_get_put_object_retention_s3api_root
}
# test listing a bucket's objects on versitygw
+# tags: s3api, ListObjects, minimal-request
@test "test_list_objects" {
test_common_list_objects "s3api"
}
+# tags: s3api, ListObjects, delimiter, prefix
@test "test-list-objects-delimiter" {
folder_name="two"
object_name="three"
@@ -119,23 +130,28 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, PutObject
@test "test_put_object" {
test_put_object_s3api_root
}
# test adding and removing an object on versitygw
+# tags: s3api, PutObject
@test "test_put_object_with_data" {
test_common_put_object_with_data "s3api"
}
+# tags: s3api, PutObject
@test "test_put_object_no_data" {
test_common_put_object_no_data "s3api"
}
+# tags: s3api, presigned-url
@test "test-presigned-url-utf8-chars" {
test_common_presigned_url_utf8_chars "s3api"
}
+# tags: s3api, PutObjectLockConfiguration, GetObjectLockConfiguration, object-lock, retention
@test "test_put_object_lock_configuration" {
bucket_name=$BUCKET_ONE_NAME
if [[ $RECREATE_BUCKETS == "true" ]]; then
@@ -155,6 +171,7 @@ export RUN_USERS=true
assert_success "error getting and checking object lock config"
}
+# tags: s3api, PutObject, x-amz-meta
@test "test_put_object_metadata" {
test_key="x-test-data"
test_value="test-value"
@@ -174,21 +191,25 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, retention, object-lock, x-amz-bypass-governance-retention
@test "test_retention_bypass" {
test_retention_bypass_s3api_root
}
# test v1 s3api list objects command
+# tags: s3api, ListObjects
@test "test-s3api-list-objects-v1" {
test_s3api_list_objects_v1_s3api_root
}
# test v2 s3api list objects command
+# tags: s3api, ListObjectsV2, list-type
@test "test-s3api-list-objects-v2" {
test_s3api_list_objects_v2_s3api_root
}
# test abilty to set and retrieve object tags
+# tags: s3api, PutObjectTagging, GetObjectTagging, tagging
@test "test-set-get-object-tags" {
test_common_set_get_object_tags "s3api"
}
@@ -218,10 +239,12 @@ export RUN_USERS=true
#}
+# tags: s3api, ListObjects
@test "test_ls_directory_object" {
test_common_ls_directory_object "s3api"
}
+# tags: s3api, PutObject, invalid-query
@test "directory objects can't contain data" {
if [ "$DIRECT" == "true" ]; then
skip "for direct, directory objects can contain data (though discouraged)"
@@ -236,6 +259,7 @@ export RUN_USERS=true
assert_output -p "Directory object contains data payload"
}
+# tags: s3api, CopyObject, invalid-query
@test "objects containing data can't be copied to directory objects with same name" {
# operation is legal (though discouraged) for direct
if [ "$DIRECT" == "true" ]; then
@@ -256,6 +280,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, CreateMultipartUpload, multipart, invalid-query
@test "directory object - create multipart upload" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -265,6 +290,7 @@ export RUN_USERS=true
assert_output -p "Directory object contains data payload"
}
+# tags: s3api, retention, object-lock, x-amz-bypass-governance-retention, invalid-header
@test "s3api - --bypass-governance-retention w/o bucket w/object lock fails" {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1218"
@@ -281,4 +307,3 @@ export RUN_USERS=true
assert_output -p "InvalidArgument"
assert_output -p "x-amz-bypass-governance-retention is only applicable"
}
-
diff --git a/tests/test_s3api_policy.sh b/tests/test_s3api_policy.sh
index 83912fdc..470a8e34 100755
--- a/tests/test_s3api_policy.sh
+++ b/tests/test_s3api_policy.sh
@@ -44,82 +44,102 @@ if [ -n "$SKIP_POLICY" ] || [ "$SKIP_USERS_TESTS" == "true" ]; then
exit 0
fi
+# tags: s3api, policy, multipart, AbortMultipartUpload, PutBucketPolicy
@test "test_policy_abort_multipart_upload" {
test_s3api_policy_abort_multipart_upload
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, GetObject
@test "test_policy_allow_deny" {
test_s3api_policy_allow_deny
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, DeleteObject
@test "test_policy_delete" {
test_s3api_policy_delete
}
+# tags: s3api, policy, PutBucketPolicy, DeleteBucketPolicy
@test "test_policy_delete_bucket_policy" {
test_s3api_policy_delete_bucket_policy
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, GetObject
@test "test_policy_deny" {
test_s3api_policy_deny
}
+# tags: s3api, policy, PutBucketPolicy, GetBucketAcl
@test "test_policy_get_bucket_acl" {
test_s3api_policy_get_bucket_acl
}
+# tags: s3api, policy, PutBucketPolicy, GetBucketPolicy
@test "test_policy_get_bucket_policy" {
test_s3api_policy_get_bucket_policy
}
+# tags: s3api, policy, PutBucketPolicy, PutBucketTagging, GetBucketTagging, tagging
@test "test_policy_get_bucket_tagging" {
test_s3api_policy_get_bucket_tagging
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, GetObject
@test "test_policy_get_object_file_wildcard" {
test_s3api_policy_get_object_file_wildcard
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, GetObject
@test "test_policy_get_object_folder_wildcard" {
test_s3api_policy_get_object_folder_wildcard
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, GetObject
@test "test_policy_get_object_specific_file" {
test_s3api_policy_get_object_specific_file
}
+# tags: s3api, policy, PutBucketPolicy, PutObject, GetObject
@test "test_policy_get_object_with_user" {
test_s3api_policy_get_object_with_user
}
+# tags: s3api, policy, multipart, PutBucketPolicy, ListMultipartUploads
@test "test_policy_list_multipart_uploads" {
test_s3api_policy_list_multipart_uploads
}
+# tags: s3api, policy, multipart, PutBucketPolicy, ListParts
@test "test_policy_list_upload_parts" {
test_s3api_policy_list_upload_parts
}
+# tags: s3api, policy, PutBucketPolicy, PutBucketAcl
@test "test_policy_put_acl" {
test_s3api_policy_put_acl
}
+# tags: s3api, policy, PutBucketPolicy
@test "test_policy_put_bucket_policy" {
test_s3api_policy_put_bucket_policy
}
+# tags: s3api, policy, PutBucketPolicy, PutBucketTagging, tagging
@test "test_policy_put_bucket_tagging" {
test_s3api_policy_put_bucket_tagging
}
+# tags: s3api, policy, PutBucketPolicy
@test "test_policy_two_principals" {
test_s3api_policy_two_principals
}
+# tags: s3api, policy, PutBucketPolicy, PutObject
@test "test_policy_put_wildcard" {
test_s3api_policy_put_wildcard
}
+# tags: s3api, policy, PutBucketPolicy, invalid-query
@test "test_put_policy_invalid_action" {
test_s3api_policy_invalid_action
}
diff --git a/tests/test_s3cmd.sh b/tests/test_s3cmd.sh
index a6b06b9a..465a7158 100755
--- a/tests/test_s3cmd.sh
+++ b/tests/test_s3cmd.sh
@@ -31,20 +31,24 @@ export RUN_S3CMD=true
export RUN_USERS=true
# complete-multipart-upload
+# tags: s3cmd, multipart, CreateMultipartUpload, UploadPart, CompleteMultipartUpload
@test "test_complete_multipart_upload" {
test_common_multipart_upload "s3cmd"
}
# copy-object
+# tags: s3cmd, CopyObject, x-amz-copy-source
@test "test_copy_object" {
test_common_copy_object "s3cmd"
}
# create-bucket
+# tags: s3cmd, CreateBucket, DeleteBucket
@test "test_create_delete_bucket" {
test_common_create_delete_bucket "s3cmd"
}
+# tags: s3cmd, CreateBucket, invalid-query
@test "test_create_bucket_invalid_name_s3cmd" {
if [[ $RECREATE_BUCKETS != "true" ]]; then
return
@@ -58,6 +62,7 @@ export RUN_USERS=true
# delete-bucket - test_create_delete_bucket
# delete-bucket-policy
+# tags: s3cmd, policy, GetBucketPolicy, PutBucketPolicy, DeleteBucketPolicy
@test "test_get_put_delete_bucket_policy" {
if [[ -n $SKIP_POLICY ]]; then
skip "will not test policy actions with SKIP_POLICY set"
@@ -73,6 +78,7 @@ export RUN_USERS=true
# get-bucket-acl - test_put_bucket_acl
# get-bucket-location
+# tags: s3cmd, GetBucketLocation
@test "test_get_bucket_location" {
test_common_get_bucket_location "s3cmd"
}
@@ -80,23 +86,28 @@ export RUN_USERS=true
# get-bucket-policy - test_get_put_delete_bucket_policy
# get-object
+# tags: s3cmd, PutObject, GetObject
@test "test_put_get_object" {
test_common_put_get_object "s3cmd"
}
+# tags: s3cmd, PutObject
@test "test_put_object_with_data" {
test_common_put_object_with_data "s3cmd"
}
+# tags: s3cmd, PutObject
@test "test_put_object_no_data" {
test_common_put_object_no_data "s3cmd"
}
+# tags: s3cmd, PutBucketAcl
@test "test_put_bucket_acl" {
skip "https://github.com/versity/versitygw/issues/963"
test_put_bucket_acl_s3cmd
}
+# tags: s3cmd, PutPublicAccessBlock
@test 's3cmd - can enable public ACLs for bucket' {
if [ "$DIRECT" != "true" ]; then
skip "https://github.com/versity/versitygw/issues/1154"
@@ -109,10 +120,12 @@ export RUN_USERS=true
}
# test listing buckets on versitygw
+# tags: s3cmd, ListBuckets, minimal-request
@test "test_list_buckets_s3cmd" {
test_common_list_buckets "s3cmd"
}
+# tags: s3cmd, ListObjects
@test "test_list_objects_s3cmd" {
test_common_list_objects "s3cmd"
}
@@ -121,6 +134,7 @@ export RUN_USERS=true
# test_common_presigned_url_utf8_chars "s3cmd"
#}
+# tags: s3cmd, HeadBucket, minimal-request
@test "test_get_bucket_info_s3cmd" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -130,6 +144,7 @@ export RUN_USERS=true
assert_output -p "s3://$BUCKET_ONE_NAME"
}
+# tags: s3cmd, HeadBucket, invalid-query
@test "test_get_bucket_info_doesnt_exist_s3cmd" {
run setup_bucket "$BUCKET_ONE_NAME"
assert_success
@@ -138,6 +153,7 @@ export RUN_USERS=true
assert_failure 1
}
+# tags: s3cmd, ListObjects
@test "test_ls_directory_object" {
test_common_ls_directory_object "s3cmd"
}
diff --git a/tests/test_s3cmd_file_count.sh b/tests/test_s3cmd_file_count.sh
index 7228489a..2a32563e 100755
--- a/tests/test_s3cmd_file_count.sh
+++ b/tests/test_s3cmd_file_count.sh
@@ -22,6 +22,7 @@ source ./tests/test_common.sh
export RUN_S3CMD=true
+# tags: s3cmd, ListObjects, max-keys
@test "test_list_objects_file_count" {
test_common_list_objects_file_count "s3cmd"
}
diff --git a/tests/test_user_aws.sh b/tests/test_user_aws.sh
index 6f85cd0a..68daed63 100755
--- a/tests/test_user_aws.sh
+++ b/tests/test_user_aws.sh
@@ -26,14 +26,17 @@ source ./tests/drivers/user.sh
export RUN_USERS=true
+# tags: s3api, user
@test "test_admin_user_aws" {
test_admin_user "aws"
}
+# tags: s3api, user, invalid-request
@test "test_create_user_already_exists_aws" {
test_create_user_already_exists "aws"
}
+# tags: s3api, user, invalid-request
@test "test_delete_user_no_access_key" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
@@ -42,14 +45,17 @@ export RUN_USERS=true
assert_failure
}
+# tags: s3api, user
@test "test_user_user_aws" {
test_user_user "aws"
}
+# tags: s3api, user
@test "test_userplus_operation_aws" {
test_userplus_operation "aws"
}
+# tags: s3api, user, GetObject, PutObject, ownershipControls
@test "test_user_get_object" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
@@ -77,6 +83,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, user, GetObject, PutObject, ownershipControls
@test "test_userplus_get_object" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
@@ -104,6 +111,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, user, DeleteObject, PutObject, ownershipControls
@test "test_user_delete_object" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
@@ -131,6 +139,7 @@ export RUN_USERS=true
assert_success
}
+# tags: s3api, user, PutObject, GetObject, DeleteObject
@test "test_admin_put_get_object" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
@@ -162,6 +171,7 @@ export RUN_USERS=true
assert_output -p "NoSuchKey"
}
+# tags: s3api, user, multipart, CreateMultipartUpload, ownershipControls
@test "test_user_create_multipart_upload" {
if [ "$SKIP_USERS_TESTS" == "true" ]; then
skip "skipping versitygw-specific users tests"
diff --git a/tests/test_user_s3cmd.sh b/tests/test_user_s3cmd.sh
index f26685ca..afebe4b2 100755
--- a/tests/test_user_s3cmd.sh
+++ b/tests/test_user_s3cmd.sh
@@ -24,18 +24,22 @@ source ./tests/test_user_common.sh
export RUN_S3CMD=true
export RUN_USERS=true
+# tags: s3cmd, user
@test "test_admin_user_s3cmd" {
test_admin_user "s3cmd"
}
+# tags: s3cmd, user, invalid-request
@test "test_create_user_already_exists_s3cmd" {
test_create_user_already_exists "s3cmd"
}
+# tags: s3cmd, user
@test "test_user_user_s3cmd" {
test_user_user "s3cmd"
}
+# tags: s3cmd, user
@test "test_userplus_operation_s3cmd" {
test_userplus_operation "s3cmd"
}
diff --git a/tests/test_xml.sh b/tests/test_xml.sh
index 931d6683..83fe2378 100755
--- a/tests/test_xml.sh
+++ b/tests/test_xml.sh
@@ -23,6 +23,7 @@ source ./tests/drivers/params.sh
source ./tests/logger.sh
source ./tests/setup_unit.sh
+# tags: unit
@test "build_xpath_string_for_element" {
run build_xpath_string_for_element
assert_failure
@@ -45,18 +46,21 @@ source ./tests/setup_unit.sh
assert_output -p "element 'XML With Space' contains a space"
}
+# tags: unit
@test "get_xml_data - missing params" {
run get_xml_data "oneparam"
assert_failure
assert_output -p "requires data file, output file"
}
+# tags: unit
@test "get_xml_data - file doesn't exist" {
run get_xml_data "/nonexistent_$$" "/tmp/out"
assert_failure
assert_output -p "does not exist"
}
+# tags: unit
@test "get_xml_data - no XML content" {
input=$(get_file_name)
printf 'HTTP/1.1 500\r\n\r\nNo XML here' > "$TEST_FILE_FOLDER/$input"
@@ -65,6 +69,7 @@ source ./tests/setup_unit.sh
assert_output -p "No XML declaration found"
}
+# tags: unit
@test "get_xml_data - valid XML with declaration" {
input=$(get_file_name)
printf 'HTTP/1.1 200\r\n\r\nOK' > "$TEST_FILE_FOLDER/$input"
@@ -72,6 +77,7 @@ source ./tests/setup_unit.sh
assert_success
}
+# tags: unit
@test "get_xml_data - valid XML without declaration" {
input=$(get_file_name)
printf 'HTTP/1.1 200\r\n\r\nAlsoOK' > "$TEST_FILE_FOLDER/$input"
@@ -79,6 +85,7 @@ source ./tests/setup_unit.sh
assert_success
}
+# tags: unit
@test "get_xml_data - XML with extra content after root" {
input=$(get_file_name)
printf 'HTTP/1.1 200\r\n\r\nAgainOKextra' > "$TEST_FILE_FOLDER/$input"
diff --git a/tests/util/util_object.sh b/tests/util/util_object.sh
index 13f418f8..58001a44 100644
--- a/tests/util/util_object.sh
+++ b/tests/util/util_object.sh
@@ -246,13 +246,18 @@ put_object_rest_checksum() {
if ! check_param_count_v2 "data file, bucket name, key, checksum type" 4 $#; then
return 1
fi
+ if ! response=$(get_file_name 2>&1); then
+ log 2 "error getting file name: $response"
+ return 1
+ fi
+ file_name="$response"
# shellcheck disable=SC2097,SC2098
- if ! result=$(COMMAND_LOG="$COMMAND_LOG" DATA_FILE="$1" BUCKET_NAME="$2" OBJECT_KEY="$3" TEST_FILE_FOLDER="$TEST_FILE_FOLDER" OUTPUT_FILE="$TEST_FILE_FOLDER/result.txt" CHECKSUM_TYPE="$4" ./tests/rest_scripts/put_object.sh 2>&1); then
+ if ! result=$(COMMAND_LOG="$COMMAND_LOG" DATA_FILE="$1" BUCKET_NAME="$2" OBJECT_KEY="$3" TEST_FILE_FOLDER="$TEST_FILE_FOLDER" OUTPUT_FILE="$TEST_FILE_FOLDER/$file_name" CHECKSUM_TYPE="$4" ./tests/rest_scripts/put_object.sh 2>&1); then
log 2 "error: $result"
return 1
fi
if [ "$result" != "200" ]; then
- log 2 "expected response code of '200', was '$result' ($(cat "$TEST_FILE_FOLDER/result.txt"))"
+ log 2 "expected response code of '200', was '$result' ($(cat "$TEST_FILE_FOLDER/$file_name"))"
return 1
fi
return 0