mirror of
https://github.com/versity/versitygw.git
synced 2026-09-20 06:54:47 +00:00
Merge pull request #2104 from versity/test/snia_prep
test: add test tags
This commit is contained in:
+4
-1
@@ -43,4 +43,7 @@ dist/
|
||||
/LICENSE
|
||||
/NOTICE
|
||||
/CODE_OF_CONDUCT.md
|
||||
/README.md
|
||||
/README.md
|
||||
|
||||
# standard bats test file folder
|
||||
/versity-gwtest-files
|
||||
+2
-2
@@ -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**.
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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[@]}"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=)"
|
||||
|
||||
@@ -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")
|
||||
|
||||
+19
-12
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -31,4 +31,4 @@ source ./tests/setup.sh
|
||||
|
||||
run put_simple_bucket_policy "$bucket_name"
|
||||
assert_success
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
+9
-1
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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\n<?xml version="1.0"?><Value>OK</Value>' > "$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\n<Value>AlsoOK</Value>' > "$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\n<Value>AgainOK</Value>extra' > "$TEST_FILE_FOLDER/$input"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user