mirror of
https://github.com/versity/versitygw.git
synced 2026-08-18 13:16:31 +00:00
test: test_common.sh updates, bucket/file creation updates, hardcode fixes
This commit is contained in:
@@ -37,12 +37,12 @@ create_bucket() {
|
||||
elif [[ $1 == "mc" ]]; then
|
||||
error=$(send_command mc --insecure mb "$MC_ALIAS"/"$2" --region "$AWS_REGION" 2>&1) || exit_code=$?
|
||||
else
|
||||
log 2 "invalid command type $1"
|
||||
return 1
|
||||
error="invalid command type $1"
|
||||
exit_code=1
|
||||
fi
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
log 2 "error creating bucket: $error"
|
||||
return 1
|
||||
printf "error creating bucket: %s\n" "$error" >&2
|
||||
return $exit_code
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ get_bucket_policy_mc() {
|
||||
if ! check_param_count "get_bucket_policy_mc" "bucket" 1 $#; then
|
||||
return 1
|
||||
fi
|
||||
bucket_policy=$(send_command mc --insecure anonymous get-json "$MC_ALIAS/$1") || get_result=$?
|
||||
bucket_policy=$(send_command mc --insecure anonymous get-json "$MC_ALIAS/$1" 2>&1) || get_result=$?
|
||||
if [[ $get_result -ne 0 ]]; then
|
||||
log 2 "error getting policy: $bucket_policy"
|
||||
return 1
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
source ./tests/drivers/file.sh
|
||||
source ./tests/report.sh
|
||||
|
||||
# params: client, bucket name
|
||||
@@ -24,7 +25,7 @@ source ./tests/report.sh
|
||||
head_bucket() {
|
||||
log 6 "head_bucket '$1' '$2'"
|
||||
if ! check_param_count "head_bucket" "client, bucket name" 2 $#; then
|
||||
return 1
|
||||
return 2
|
||||
fi
|
||||
local exit_code=0
|
||||
if [[ $1 == 's3api' ]] || [[ $1 == 's3' ]]; then
|
||||
@@ -34,7 +35,7 @@ head_bucket() {
|
||||
elif [[ $1 == 'mc' ]]; then
|
||||
bucket_info=$(send_command mc --insecure stat "$MC_ALIAS"/"$2" 2>&1) || exit_code=$?
|
||||
elif [[ $1 == 'rest' ]]; then
|
||||
bucket_info=$(head_bucket_rest "$2") || exit_code=$?
|
||||
bucket_info=$(head_bucket_rest "$2" 2>&1) || exit_code=$?
|
||||
log 5 "head bucket rest exit code: $exit_code"
|
||||
return $exit_code
|
||||
else
|
||||
@@ -42,12 +43,13 @@ head_bucket() {
|
||||
fi
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
if [[ "$bucket_info" == *"404"* ]] || [[ "$bucket_info" == *"does not exist"* ]]; then
|
||||
return 1
|
||||
exit_code=1
|
||||
else
|
||||
exit_code=2
|
||||
fi
|
||||
log 2 "error getting bucket info: $bucket_info"
|
||||
return 2
|
||||
echo "error getting bucket info: $bucket_info" >&2
|
||||
return $exit_code
|
||||
fi
|
||||
bucket_info="$(echo -n "$bucket_info" | grep -v "InsecureRequestWarning")"
|
||||
echo "$bucket_info"
|
||||
return 0
|
||||
}
|
||||
@@ -57,20 +59,30 @@ head_bucket_rest() {
|
||||
if ! check_param_count_gt "bucket, callback, params (optional)" 1 $#; then
|
||||
return 2
|
||||
fi
|
||||
if ! result=$(COMMAND_LOG="$COMMAND_LOG" BUCKET_NAME="$1" OUTPUT_FILE="$TEST_FILE_FOLDER/result.txt" ./tests/rest_scripts/head_bucket.sh 2>&1); then
|
||||
if ! result_file=$(get_file_name 2>&1); then
|
||||
log 2 "error getting result file: $result_file"
|
||||
return 1
|
||||
fi
|
||||
if ! result=$(COMMAND_LOG="$COMMAND_LOG" BUCKET_NAME="$1" OUTPUT_FILE="$TEST_FILE_FOLDER/$result_file" ./tests/rest_scripts/head_bucket.sh 2>&1); then
|
||||
log 2 "error getting head bucket: $result"
|
||||
return 2
|
||||
fi
|
||||
local callback_code=0
|
||||
if [ "$2" != "" ]; then
|
||||
callback_result="$($2 "$result" "$TEST_FILE_FOLDER/$result_file" 2>&1)" || callback_code=$?
|
||||
echo "$callback_result"
|
||||
return "$callback_code"
|
||||
fi
|
||||
response_data="$(cat "$TEST_FILE_FOLDER/$result_file")"
|
||||
if [ "$result" == "200" ]; then
|
||||
bucket_info="$(cat "$TEST_FILE_FOLDER/result.txt")"
|
||||
echo "$bucket_info"
|
||||
log 5 "bucket info: $bucket_info"
|
||||
echo "$response_data"
|
||||
return 0
|
||||
elif [ "$result" == "404" ]; then
|
||||
log 5 "bucket '$1' not found"
|
||||
fi
|
||||
if [ "$result" == "404" ]; then
|
||||
echo "$response_data"
|
||||
return 1
|
||||
fi
|
||||
log 2 "unexpected response code '$result' ($(cat "$TEST_FILE_FOLDER/result.txt"))"
|
||||
echo "unexpected response code '$result' ($(cat "$TEST_FILE_FOLDER/$result_file"))" >&2
|
||||
return 2
|
||||
}
|
||||
|
||||
|
||||
@@ -158,6 +158,31 @@ setup_bucket_v2() {
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_v3() {
|
||||
if ! check_param_count_v2 "bucket env var" 1 $#; then
|
||||
return 1
|
||||
fi
|
||||
if ! error=$(bucket_cleanup_if_bucket_exists_v2 "$1" 2>&1); then
|
||||
log 2 "error cleaning up bucket(s), if it/they exist(s): $error"
|
||||
return 1
|
||||
fi
|
||||
if [ "$RECREATE_BUCKETS" == "false" ]; then
|
||||
echo "$1"
|
||||
return 0
|
||||
else
|
||||
if ! bucket_name=$(get_bucket_name "$1" 2>&1); then
|
||||
log 2 "error getting bucket name: $bucket_name"
|
||||
return 1
|
||||
fi
|
||||
if ! error=$(create_bucket_rest_expect_success "$bucket_name" "" 2>&1); then
|
||||
log 2 "error creating bucket named '$bucket_name': $error"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
echo "$bucket_name"
|
||||
return 0
|
||||
}
|
||||
|
||||
# params: client, bucket name(s)
|
||||
# return 0 for success, 1 for failure
|
||||
setup_buckets() {
|
||||
@@ -186,6 +211,22 @@ setup_buckets_v2() {
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_buckets_v3() {
|
||||
if ! check_param_count_gt "minimum of 1 bucket env var" 1 $#; then
|
||||
return 1
|
||||
fi
|
||||
local buckets=()
|
||||
for name in "$@"; do
|
||||
if ! bucket=$(setup_bucket_v3 "$name" 2>&1); then
|
||||
log 2 "error setting up bucket '$name': $bucket"
|
||||
return 1
|
||||
fi
|
||||
buckets+=("$bucket")
|
||||
done
|
||||
echo "${buckets[*]}"
|
||||
return 0
|
||||
}
|
||||
|
||||
get_bucket_name() {
|
||||
if ! check_param_count_v2 "bucket" 1 $#; then
|
||||
return 1
|
||||
@@ -194,7 +235,14 @@ get_bucket_name() {
|
||||
echo "$1"
|
||||
return 0
|
||||
fi
|
||||
echo "$1-$(date +%Y%m%d%H%M%S)"
|
||||
if ! uuid=$(uuidgen 2>&1); then
|
||||
log 2 "error getting UUID: $uuid"
|
||||
return 1
|
||||
fi
|
||||
local bucket_name
|
||||
bucket_name="$1-${uuid,,}"
|
||||
echo "${bucket_name:0:63}"
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_object_lock_enabled_v2() {
|
||||
|
||||
+85
-1
@@ -33,12 +33,28 @@ setup_bucket_and_file_v2() {
|
||||
return 1
|
||||
fi
|
||||
if ! setup_bucket_and_file_base "$1" "setup_bucket_and_files_v2" "$2"; then
|
||||
log 2 "error setting up bucket and files"
|
||||
log 2 "error setting up bucket and file"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_and_file_v3() {
|
||||
if ! check_param_count_v2 "bucket env var" 1 $#; then
|
||||
return 1
|
||||
fi
|
||||
if ! bucket_name=$(setup_bucket_v3 "$1" 2>&1); then
|
||||
log 2 "error setting up bucket and file: $bucket_name"
|
||||
return 1
|
||||
fi
|
||||
if ! test_file=$(create_test_file_v2 2>&1); then
|
||||
log 2 "error creating test file: $test_file"
|
||||
return 1
|
||||
fi
|
||||
echo "$bucket_name $test_file"
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_and_file_base() {
|
||||
if ! check_param_count_v2 "bucket, function, file name" 3 $#; then
|
||||
return 1
|
||||
@@ -72,6 +88,27 @@ setup_bucket_and_files_v2() {
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_and_files_v3() {
|
||||
if ! check_param_count_v2 "bucket env var, file count" 2 $#; then
|
||||
return 1
|
||||
fi
|
||||
local bucket_and_files=()
|
||||
if ! bucket_name=$(setup_bucket_v3 "$1" 2>&1); then
|
||||
log 2 "error setting up bucket"
|
||||
return 1
|
||||
fi
|
||||
bucket_and_files=("$bucket_name")
|
||||
for ((i=0;i<$2;i++)); do
|
||||
if ! file_name=$(create_test_file_v2 2>&1); then
|
||||
log 2 "error creating test file: $file_name"
|
||||
return 1
|
||||
fi
|
||||
bucket_and_files+=("$file_name")
|
||||
done
|
||||
echo "${bucket_and_files[*]}"
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_and_files_base() {
|
||||
if ! check_param_count_gt "bucket, setup bucket function, file name" 3 $#; then
|
||||
return 1
|
||||
@@ -124,6 +161,22 @@ setup_bucket_and_large_file_v2() {
|
||||
return 0
|
||||
}
|
||||
|
||||
setup_bucket_and_large_file_v3() {
|
||||
if ! check_param_count_v2 "bucket env var" 1 $#; then
|
||||
return 1
|
||||
fi
|
||||
if ! bucket_name=$(setup_bucket_v3 "$1" 2>&1); then
|
||||
log 2 "error setting up bucket: $bucket_name"
|
||||
return 1
|
||||
fi
|
||||
if ! file_name=$(create_large_file_v2 "$file_name" 2>&1); then
|
||||
log 2 "error creating large file: $file_name"
|
||||
return 1
|
||||
fi
|
||||
echo "$bucket_name $file_name"
|
||||
return 0
|
||||
}
|
||||
|
||||
chunked_upload_trailer_success() {
|
||||
if ! check_param_count_v2 "checksum" 1 $#; then
|
||||
return 1
|
||||
@@ -204,3 +257,34 @@ create_folder_if_needed_and_file() {
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# optional parameter - file size
|
||||
# shellcheck disable=SC2120
|
||||
create_test_file_v2() {
|
||||
if ! file_name=$(get_file_name 2>&1); then
|
||||
log 2 "error getting file name: $file_name"
|
||||
return 1
|
||||
fi
|
||||
if ! error=$(create_test_file "$file_name" "$1" 2>&1); then
|
||||
log 2 "error creating test file: $error"
|
||||
return 1
|
||||
fi
|
||||
echo "$file_name"
|
||||
return 0
|
||||
}
|
||||
|
||||
get_file_names() {
|
||||
if ! check_param_count_v2 "file name count" 1 $#; then
|
||||
return 1
|
||||
fi
|
||||
file_names=()
|
||||
for ((i=0;i<$1;i++)); do
|
||||
if ! file_name=$(get_file_name 2>&1); then
|
||||
log 2 "error getting file name: $file_name"
|
||||
return 1
|
||||
fi
|
||||
file_names+=("$file_name")
|
||||
done
|
||||
echo "${file_names[*]}"
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -18,16 +18,23 @@ bucket_exists() {
|
||||
if ! check_param_count "bucket_exists" "bucket name" 1 $#; then
|
||||
return 2
|
||||
fi
|
||||
local exists=0
|
||||
head_bucket "rest" "$1" || exists=$?
|
||||
log 5 "bucket exists response code: $exists"
|
||||
# shellcheck disable=SC2181
|
||||
if [ $exists -eq 2 ]; then
|
||||
log 2 "unexpected error checking if bucket exists"
|
||||
return 2
|
||||
local response_code=0
|
||||
exists=$(head_bucket_rest "$1" "check_bucket_existence_callback" 2>&1) || response_code=$?
|
||||
echo "$exists"
|
||||
return "$response_code"
|
||||
}
|
||||
|
||||
check_bucket_existence_callback() {
|
||||
if ! check_param_count_v2 "response code, response data" 2 $#; then
|
||||
return 1
|
||||
fi
|
||||
if [ $exists -eq 0 ]; then
|
||||
if [ "$1" -eq 200 ]; then
|
||||
echo "true"
|
||||
return 0
|
||||
elif [ "$1" -eq 404 ]; then
|
||||
echo "false"
|
||||
return 1
|
||||
fi
|
||||
return 1
|
||||
echo "error checking if bucket exists (data: $2)"
|
||||
return 2
|
||||
}
|
||||
|
||||
+48
-5
@@ -14,21 +14,64 @@
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
# return 0 for match, 1 for set or replace, 2 for error
|
||||
check_for_alias() {
|
||||
local alias_result
|
||||
aliases=$(mc alias list)
|
||||
if [[ $alias_result -ne 0 ]]; then
|
||||
if ! aliases=$(mc alias list 2>&1); then
|
||||
log 2 "error checking for aliases: $aliases"
|
||||
return 2
|
||||
fi
|
||||
local alias_match="false" check_result=0
|
||||
while IFS= read -r line; do
|
||||
if echo "$line" | grep -w "$MC_ALIAS "; then
|
||||
check_mc_aliases_line "$line" "$alias_match" || local check_result=$?
|
||||
if [ "$check_result" -eq 4 ]; then
|
||||
return 2
|
||||
elif [ "$check_result" -eq 3 ]; then
|
||||
continue
|
||||
elif [ "$check_result" -eq 2 ]; then
|
||||
return 1
|
||||
elif [ "$check_result" -eq 1 ]; then
|
||||
return 0
|
||||
else
|
||||
alias_match="true"
|
||||
fi
|
||||
done <<< "$aliases"
|
||||
return 1
|
||||
}
|
||||
|
||||
# return 0 for alias name match, 1 for alias key match, 2 for alias key mismatch, 3 for keep looking, 4 for error
|
||||
check_mc_aliases_line() {
|
||||
if ! check_param_count_v2 "line, alias found" 2 $#; then
|
||||
return 4
|
||||
fi
|
||||
if [ "$2" == "true" ]; then
|
||||
check_alias_access_key "$1" || local check_result=$?
|
||||
return "$((check_result+1))"
|
||||
else
|
||||
if echo "$1" | grep -w "$MC_ALIAS "; then
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# return 0 for match, 1 for mismatch, 2 for keep looking, 3 for error
|
||||
check_alias_access_key() {
|
||||
if ! check_param_count_v2 "line" 1 $#; then
|
||||
return 3
|
||||
fi
|
||||
if [[ "$1" =~ ^[[:space:]]*$ ]]; then
|
||||
return 3
|
||||
fi
|
||||
alias_access_key_id=$(echo -n "$1" | awk -F': *' '/^AccessKey[[:space:]]*:/ {print $2; exit}')
|
||||
if [ "$alias_access_key_id" == "" ]; then
|
||||
return 2
|
||||
fi
|
||||
if [ "$alias_access_key_id" == "$AWS_ACCESS_KEY_ID" ]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
check_add_mc_alias() {
|
||||
check_for_alias || alias_result=$?
|
||||
if [[ $alias_result -eq 2 ]]; then
|
||||
@@ -45,4 +88,4 @@ check_add_mc_alias() {
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
+111
-96
@@ -29,6 +29,7 @@ source ./tests/commands/put_bucket_tagging.sh
|
||||
source ./tests/commands/put_object_tagging.sh
|
||||
source ./tests/commands/put_object.sh
|
||||
source ./tests/commands/put_public_access_block.sh
|
||||
source ./tests/drivers/create_bucket/create_bucket_rest.sh
|
||||
source ./tests/drivers/file.sh
|
||||
source ./tests/drivers/params.sh
|
||||
source ./tests/util/util_file.sh
|
||||
@@ -43,16 +44,16 @@ test_common_multipart_upload() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
bucket_file="largefile"
|
||||
run setup_bucket_and_large_file "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run setup_bucket_and_large_file_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
read -r bucket_name bucket_file <<< "$output"
|
||||
|
||||
if [ "$1" == 's3' ]; then
|
||||
run copy_file_locally "$TEST_FILE_FOLDER/$bucket_file" "$TEST_FILE_FOLDER/$bucket_file-copy"
|
||||
assert_success
|
||||
fi
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$bucket_file" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$bucket_file" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
if [ "$1" == 's3' ]; then
|
||||
@@ -60,7 +61,8 @@ test_common_multipart_upload() {
|
||||
assert_success
|
||||
fi
|
||||
|
||||
run download_and_compare_file "$TEST_FILE_FOLDER/$bucket_file" "$BUCKET_ONE_NAME" "$bucket_file" "$TEST_FILE_FOLDER/$bucket_file-copy"
|
||||
log 5 "file: $TEST_FILE_FOLDER/$bucket_file, bucket: $bucket_name"
|
||||
run download_and_compare_file "$TEST_FILE_FOLDER/$bucket_file" "$bucket_name" "$bucket_file" "$TEST_FILE_FOLDER/$bucket_file-copy"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -71,49 +73,58 @@ test_common_create_delete_bucket() {
|
||||
if [[ $RECREATE_BUCKETS != "true" ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
run bucket_cleanup_if_bucket_exists "$BUCKET_ONE_NAME"
|
||||
run bucket_cleanup_if_bucket_exists_v2 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
|
||||
run create_bucket "$1" "$BUCKET_ONE_NAME"
|
||||
run get_bucket_name "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name="$output"
|
||||
|
||||
run create_bucket "$1" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run bucket_exists "$BUCKET_ONE_NAME"
|
||||
run bucket_exists "$bucket_name"
|
||||
assert_success
|
||||
assert_output "true"
|
||||
|
||||
run delete_bucket "$1" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run delete_bucket "$1" "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
run bucket_exists "$bucket_name"
|
||||
assert_failure 1
|
||||
assert_output "false"
|
||||
}
|
||||
|
||||
test_common_copy_object() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
local object_name="test-object"
|
||||
run create_test_file "$object_name"
|
||||
run create_test_file_v2
|
||||
assert_success
|
||||
object_name=$output
|
||||
|
||||
run setup_buckets "$BUCKET_ONE_NAME" "$BUCKET_TWO_NAME"
|
||||
run setup_buckets_v3 "$BUCKET_ONE_NAME" "$BUCKET_TWO_NAME"
|
||||
assert_success
|
||||
read -r bucket_one bucket_two <<< "$output"
|
||||
|
||||
if [[ $1 == 's3' ]]; then
|
||||
run copy_object "$1" "$TEST_FILE_FOLDER/$object_name" "$BUCKET_ONE_NAME" "$object_name"
|
||||
run copy_object "$1" "$TEST_FILE_FOLDER/$object_name" "$bucket_one" "$object_name"
|
||||
assert_success
|
||||
else
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$object_name" "$BUCKET_ONE_NAME" "$object_name"
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$object_name" "$bucket_one" "$object_name"
|
||||
assert_success
|
||||
fi
|
||||
if [[ $1 == 's3' ]]; then
|
||||
run copy_object "$1" "s3://$BUCKET_ONE_NAME/$object_name" "$BUCKET_TWO_NAME" "$object_name"
|
||||
run copy_object "$1" "s3://$bucket_one/$object_name" "$bucket_two" "$object_name"
|
||||
assert_success
|
||||
else
|
||||
run copy_object "$1" "$BUCKET_ONE_NAME/$object_name" "$BUCKET_TWO_NAME" "$object_name"
|
||||
run copy_object "$1" "$bucket_one/$object_name" "$bucket_two" "$object_name"
|
||||
assert_success
|
||||
fi
|
||||
run download_and_compare_file "$TEST_FILE_FOLDER/$object_name" "$BUCKET_TWO_NAME" "$object_name" "$TEST_FILE_FOLDER/$object_name-copy"
|
||||
run download_and_compare_file "$TEST_FILE_FOLDER/$object_name" "$bucket_two" "$object_name" "$TEST_FILE_FOLDER/$object_name-copy"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -123,9 +134,9 @@ test_common_put_object_with_data() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
local object_name="test-object"
|
||||
run create_test_file "$object_name"
|
||||
run create_test_file_v2
|
||||
assert_success
|
||||
object_name=$output
|
||||
|
||||
test_common_put_object "$1" "$object_name"
|
||||
}
|
||||
@@ -136,9 +147,9 @@ test_common_put_object_no_data() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
local object_name="test-object"
|
||||
run create_test_file "$object_name" 0
|
||||
run create_test_file_v2 0
|
||||
assert_success
|
||||
object_name="$output"
|
||||
|
||||
test_common_put_object "$1" "$object_name"
|
||||
}
|
||||
@@ -149,8 +160,9 @@ test_common_put_object() {
|
||||
run assert_param_count "client type, file" 2 "$#"
|
||||
assert_success
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name=$output
|
||||
|
||||
# s3 erases file locally, so we need to copy it first
|
||||
if [ "$1" == 's3' ]; then
|
||||
@@ -158,7 +170,7 @@ test_common_put_object() {
|
||||
assert_success
|
||||
fi
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$2" "$BUCKET_ONE_NAME" "$2"
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$2" "$bucket_name" "$2"
|
||||
assert_success
|
||||
|
||||
if [ "$1" == 's3' ]; then
|
||||
@@ -166,13 +178,13 @@ test_common_put_object() {
|
||||
assert_success
|
||||
fi
|
||||
|
||||
run download_and_compare_file "$TEST_FILE_FOLDER/$2" "$BUCKET_ONE_NAME" "$2" "$TEST_FILE_FOLDER/${2}-copy"
|
||||
run download_and_compare_file "$TEST_FILE_FOLDER/$2" "$bucket_name" "$2" "$TEST_FILE_FOLDER/${2}-copy"
|
||||
assert_success
|
||||
|
||||
run delete_object "$1" "$BUCKET_ONE_NAME" "$2"
|
||||
run delete_object "$1" "$bucket_name" "$2"
|
||||
assert_success
|
||||
|
||||
run object_exists "$1" "$BUCKET_ONE_NAME" "$2"
|
||||
run object_exists "$1" "$bucket_name" "$2"
|
||||
assert_failure 1
|
||||
}
|
||||
|
||||
@@ -208,10 +220,11 @@ test_common_list_buckets() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
run setup_buckets "$BUCKET_ONE_NAME" "$BUCKET_TWO_NAME"
|
||||
run setup_buckets_v3 "$BUCKET_ONE_NAME" "$BUCKET_TWO_NAME"
|
||||
assert_success
|
||||
read -r bucket_one bucket_two <<< "$output"
|
||||
|
||||
run list_and_check_buckets "$1" "$BUCKET_ONE_NAME" "$BUCKET_TWO_NAME"
|
||||
run list_and_check_buckets "$1" "$bucket_one" "$bucket_two"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -219,18 +232,17 @@ test_common_list_objects() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
object_one="test-file-one"
|
||||
object_two="test-file-two"
|
||||
run setup_bucket_and_files "$BUCKET_ONE_NAME" "$object_one" "$object_two"
|
||||
run setup_bucket_and_files_v3 "$BUCKET_ONE_NAME" 2
|
||||
assert_success
|
||||
read -r bucket_name object_one object_two <<< "$output"
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$object_one" "$bucket_name" "$object_one"
|
||||
assert_success
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/$object_one "$BUCKET_ONE_NAME" "$object_one"
|
||||
run put_object "$1" "$TEST_FILE_FOLDER/$object_two" "$bucket_name" "$object_two"
|
||||
assert_success
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/$object_two "$BUCKET_ONE_NAME" "$object_two"
|
||||
assert_success
|
||||
|
||||
run list_check_objects_common "$1" "$BUCKET_ONE_NAME" "$object_one" "$object_two"
|
||||
run list_check_objects_common "$1" "$bucket_name" "$object_one" "$object_two"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -241,22 +253,23 @@ test_common_set_get_delete_bucket_tags() {
|
||||
local key="test_key"
|
||||
local value="test_value"
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name=$output
|
||||
|
||||
run verify_no_bucket_tags "$1" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run verify_no_bucket_tags "$1" "$BUCKET_ONE_NAME"
|
||||
run put_bucket_tagging "$1" "$bucket_name" $key $value
|
||||
assert_success
|
||||
|
||||
run put_bucket_tagging "$1" "$BUCKET_ONE_NAME" $key $value
|
||||
run get_and_check_bucket_tags "$bucket_name" "$key" "$value"
|
||||
assert_success
|
||||
|
||||
run get_and_check_bucket_tags "$BUCKET_ONE_NAME" "$key" "$value"
|
||||
run delete_bucket_tagging "$1" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run delete_bucket_tagging "$1" "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
|
||||
run verify_no_bucket_tags "$1" "$BUCKET_ONE_NAME"
|
||||
run verify_no_bucket_tags "$1" "$bucket_name"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -264,23 +277,23 @@ test_common_set_get_object_tags() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
local bucket_file="bucket-file"
|
||||
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
read -r bucket_name bucket_file <<< "$output"
|
||||
|
||||
local key="test_key"
|
||||
local value="test_value"
|
||||
|
||||
run setup_bucket_and_file "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/"$bucket_file" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/"$bucket_file" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run verify_no_object_tags "$1" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run verify_no_object_tags "$1" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run put_object_tagging "$1" "$bucket_name" "$bucket_file" "$key" "$value"
|
||||
assert_success
|
||||
|
||||
run put_object_tagging "$1" "$BUCKET_ONE_NAME" $bucket_file $key $value
|
||||
assert_success
|
||||
|
||||
run check_verify_object_tags "$1" "$BUCKET_ONE_NAME" "$bucket_file" "$key" "$value"
|
||||
run check_verify_object_tags "$1" "$bucket_name" "$bucket_file" "$key" "$value"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -288,21 +301,25 @@ test_common_presigned_url_utf8_chars() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
local bucket_file="my-$%^&*;"
|
||||
local bucket_file_copy="bucket-file-copy"
|
||||
run get_file_names 2
|
||||
assert_success
|
||||
read -r file_header bucket_file_copy <<< "$output"
|
||||
|
||||
local bucket_file="${file_header}-$%^&*;"
|
||||
run create_test_file "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run dd if=/dev/urandom of="$TEST_FILE_FOLDER/$bucket_file" bs=5M count=1
|
||||
assert_success
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name="$output"
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/"$bucket_file" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/"$bucket_file" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run create_check_presigned_url "$1" "$BUCKET_ONE_NAME" "$bucket_file" "$TEST_FILE_FOLDER/$bucket_file_copy"
|
||||
run create_check_presigned_url "$1" "$bucket_name" "$bucket_file" "$TEST_FILE_FOLDER/$bucket_file_copy"
|
||||
assert_success
|
||||
|
||||
run compare_files "$TEST_FILE_FOLDER"/"$bucket_file" "$TEST_FILE_FOLDER"/"$bucket_file_copy"
|
||||
@@ -316,13 +333,14 @@ test_common_list_objects_file_count() {
|
||||
run create_test_file_count 1001
|
||||
assert_success
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name=$output
|
||||
|
||||
run put_object_multiple "$1" "$TEST_FILE_FOLDER/file_*" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run put_object_multiple "$1" "$TEST_FILE_FOLDER/file_*" "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
|
||||
run list_objects_check_file_count "$1" "$BUCKET_ONE_NAME" 1001
|
||||
run list_objects_check_file_count "$1" "$bucket_name" 1001
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -330,26 +348,26 @@ test_common_delete_object_tagging() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
bucket_file="bucket_file"
|
||||
tag_key="key"
|
||||
tag_value="value"
|
||||
|
||||
run setup_bucket_and_file "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run setup_bucket_and_file_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
read -r bucket_name bucket_file <<< "$output"
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/"$bucket_file" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run put_object "$1" "$TEST_FILE_FOLDER"/"$bucket_file" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run put_object_tagging "$1" "$bucket_name" "$bucket_file" "$tag_key" "$tag_value"
|
||||
assert_success
|
||||
|
||||
run put_object_tagging "$1" "$BUCKET_ONE_NAME" "$bucket_file" "$tag_key" "$tag_value"
|
||||
run get_and_verify_object_tags "$1" "$bucket_name" "$bucket_file" "$tag_key" "$tag_value"
|
||||
assert_success
|
||||
|
||||
run get_and_verify_object_tags "$1" "$BUCKET_ONE_NAME" "$bucket_file" "$tag_key" "$tag_value"
|
||||
run delete_object_tagging "$1" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run delete_object_tagging "$1" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
assert_success
|
||||
|
||||
run check_object_tags_empty "$1" "$BUCKET_ONE_NAME" "$bucket_file"
|
||||
run check_object_tags_empty "$1" "$bucket_name" "$bucket_file"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -357,10 +375,11 @@ test_common_get_bucket_location() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name=$output
|
||||
|
||||
run get_check_bucket_location_various "$1" "$BUCKET_ONE_NAME"
|
||||
run get_check_bucket_location_various "$1" "$bucket_name"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -368,36 +387,32 @@ test_common_get_put_delete_bucket_policy() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
policy_file="policy_file"
|
||||
|
||||
run create_test_file "$policy_file"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name=$output
|
||||
|
||||
effect="Allow"
|
||||
principal="*"
|
||||
action="s3:GetObject"
|
||||
resource="arn:aws:s3:::$BUCKET_ONE_NAME/*"
|
||||
resource="arn:aws:s3:::$bucket_name/*"
|
||||
|
||||
run setup_policy_with_single_statement "$TEST_FILE_FOLDER/$policy_file" "2012-10-17" "$effect" "$principal" "$action" "$resource"
|
||||
run setup_policy_with_single_statement_v2 "2012-10-17" "$effect" "$principal" "$action" "$resource"
|
||||
assert_success
|
||||
log 5 "POLICY: $(cat "$TEST_FILE_FOLDER/$policy_file")"
|
||||
policy_file="$output"
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run check_for_empty_policy "$1" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run check_for_empty_policy "$1" "$BUCKET_ONE_NAME"
|
||||
run put_bucket_policy "$1" "$bucket_name" "$TEST_FILE_FOLDER"/"$policy_file"
|
||||
assert_success
|
||||
|
||||
run put_bucket_policy "$1" "$BUCKET_ONE_NAME" "$TEST_FILE_FOLDER"/"$policy_file"
|
||||
run get_and_check_policy "$1" "$bucket_name" "$effect" "$principal" "$action" "$resource"
|
||||
assert_success
|
||||
|
||||
run get_and_check_policy "$1" "$BUCKET_ONE_NAME" "$effect" "$principal" "$action" "$resource"
|
||||
run delete_bucket_policy "$1" "$bucket_name"
|
||||
assert_success
|
||||
|
||||
run delete_bucket_policy "$1" "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
|
||||
run check_for_empty_policy "$1" "$BUCKET_ONE_NAME"
|
||||
run check_for_empty_policy "$1" "$bucket_name"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -405,22 +420,22 @@ test_common_ls_directory_object() {
|
||||
run assert_param_count "client type" 1 "$#"
|
||||
assert_success
|
||||
|
||||
test_file="a"
|
||||
|
||||
run create_test_file "$test_file" 0
|
||||
run create_test_file_v2 0
|
||||
assert_success
|
||||
test_file="$output"
|
||||
|
||||
run setup_bucket "$BUCKET_ONE_NAME"
|
||||
run setup_bucket_v3 "$BUCKET_ONE_NAME"
|
||||
assert_success
|
||||
bucket_name="$output"
|
||||
|
||||
if [ "$1" == 's3cmd' ]; then
|
||||
put_object_client="s3api"
|
||||
else
|
||||
put_object_client="$1"
|
||||
fi
|
||||
run put_object "$put_object_client" "$TEST_FILE_FOLDER/$test_file" "$BUCKET_ONE_NAME" "$test_file/"
|
||||
run put_object "$put_object_client" "$TEST_FILE_FOLDER/$test_file" "$bucket_name" "$test_file/"
|
||||
assert_success "error putting test file folder"
|
||||
|
||||
run list_and_check_directory_obj "$1" "$test_file"
|
||||
run list_and_check_directory_obj "$1" "$bucket_name" "$test_file"
|
||||
assert_success "error listing and checking directory object"
|
||||
}
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
load ./bats-support/load
|
||||
load ./bats-assert/load
|
||||
|
||||
source ./tests/drivers/create_bucket/create_bucket_rest.sh
|
||||
source ./tests/drivers/put_bucket_ownership_controls/put_bucket_ownership_controls_rest.sh
|
||||
source ./tests/drivers/file.sh
|
||||
source ./tests/util/util_file.sh
|
||||
source ./tests/test_common.sh
|
||||
|
||||
|
||||
@@ -219,6 +219,19 @@ create_large_file() {
|
||||
return 0
|
||||
}
|
||||
|
||||
create_large_file_v2() {
|
||||
if ! file_name=$(get_file_name 2>&1); then
|
||||
log 2 "error getting file name: $file_name"
|
||||
return 1
|
||||
fi
|
||||
if ! create_large_file_with_size "$file_name" 160; then
|
||||
log 2 "error creating 160MB file with name '$file_name'"
|
||||
return 1
|
||||
fi
|
||||
echo "$file_name"
|
||||
return 0
|
||||
}
|
||||
|
||||
create_large_file_with_size() {
|
||||
if ! check_param_count_v2 "file name, size in MB" 2 $#; then
|
||||
return 1
|
||||
|
||||
@@ -192,10 +192,10 @@ copy_file() {
|
||||
|
||||
list_and_check_directory_obj() {
|
||||
log 6 "list_and_check_directory_obj"
|
||||
if ! check_param_count "list_and_check_directory_obj" "client, file name" 2 $#; then
|
||||
if ! check_param_count "list_and_check_directory_obj" "client, bucket, file name" 3 $#; then
|
||||
return 1
|
||||
fi
|
||||
if ! list_objects_with_prefix "$1" "$BUCKET_ONE_NAME" "$2/"; then
|
||||
if ! list_objects_with_prefix "$1" "$2" "$3/"; then
|
||||
log 2 "error listing objects with prefix"
|
||||
return 1
|
||||
fi
|
||||
@@ -205,15 +205,15 @@ list_and_check_directory_obj() {
|
||||
log 2 "error getting key: $key"
|
||||
return 1
|
||||
fi
|
||||
if [ "$key" != "$2/" ]; then
|
||||
log 2 "key mismatch ($key, $2)"
|
||||
if [ "$key" != "$3/" ]; then
|
||||
log 2 "key mismatch ($key, $3)"
|
||||
return 1
|
||||
fi
|
||||
elif [ "$1" == "s3" ]; then
|
||||
log 5 "$objects"
|
||||
filename=$(echo "$objects" | grep -v "InsecureRequestWarning" | awk '{print $4}')
|
||||
if [ "$filename" != "$2" ]; then
|
||||
log 2 "filename mismatch ($filename, $2)"
|
||||
if [ "$filename" != "$3" ]; then
|
||||
log 2 "filename mismatch ($filename, $3)"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -130,6 +130,22 @@ setup_policy_with_single_statement() {
|
||||
log 5 "policy data: $(cat "$1")"
|
||||
}
|
||||
|
||||
setup_policy_with_single_statement_v2() {
|
||||
if ! check_param_count_v2 "version, effect, principal, action, resource" 5 $#; then
|
||||
return 1
|
||||
fi
|
||||
if ! policy_file=$(get_file_name 2>&1); then
|
||||
log 2 "error getting policy file name"
|
||||
return 1
|
||||
fi
|
||||
if ! setup_policy_with_single_statement "$TEST_FILE_FOLDER/$policy_file" "$1" "$2" "$3" "$4" "$5"; then
|
||||
log 2 "error setting up policy"
|
||||
return 1
|
||||
fi
|
||||
echo "$policy_file"
|
||||
return 0
|
||||
}
|
||||
|
||||
# params: file, version, two sets: effect, principal, action, resource
|
||||
# return 0 on success, 1 on error
|
||||
setup_policy_with_double_statement() {
|
||||
@@ -174,7 +190,7 @@ get_and_check_policy() {
|
||||
if ! check_param_count "get_and_check_policy" "client, bucket, expected effect, principal, action, resource" 6 $#; then
|
||||
return 1
|
||||
fi
|
||||
if ! get_bucket_policy "$1" "$BUCKET_ONE_NAME"; then
|
||||
if ! get_bucket_policy "$1" "$2"; then
|
||||
log 2 "error getting bucket policy after setting"
|
||||
return 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user