mirror of
https://github.com/versity/versitygw.git
synced 2026-09-04 23:26:57 +00:00
test: ListObjectsV2 REST capability, initial multi-page testing
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
source ./tests/commands/list_objects_v2.sh
|
||||
source ./tests/util/util_xml.sh
|
||||
|
||||
# Copyright 2024 Versity Software
|
||||
# This file is licensed under the Apache License, Version 2.0
|
||||
@@ -242,4 +243,61 @@ list_objects_with_user_rest_verify_success() {
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
list_objects_check_params_get_token() {
|
||||
if [ $# -ne 3 ]; then
|
||||
log 2 "'list_objects_check_params_get_token' requires bucket name, files"
|
||||
return 1
|
||||
fi
|
||||
if ! result=$(COMMAND_LOG="$COMMAND_LOG" BUCKET_NAME="$1" VERSION_TWO="TRUE" MAX_KEYS=1 OUTPUT_FILE="$TEST_FILE_FOLDER/objects.txt" ./tests/rest_scripts/list_objects.sh); then
|
||||
log 2 "error attempting to get bucket ACL response: $result"
|
||||
return 1
|
||||
fi
|
||||
log 5 "objects: $(cat "$TEST_FILE_FOLDER/objects.txt")"
|
||||
if ! list_bucket_result=$(xmllint --xpath '//*[local-name()="ListBucketResult"]' "$TEST_FILE_FOLDER/objects.txt" 2>&1); then
|
||||
log 2 "error getting list bucket result: $list_bucket_result"
|
||||
return 1
|
||||
fi
|
||||
if ! check_xml_element <(echo "$list_bucket_result") "$2" "Key"; then
|
||||
log 2 "key mismatch"
|
||||
return 1
|
||||
fi
|
||||
if ! check_xml_element <(echo "$list_bucket_result") "1" "MaxKeys"; then
|
||||
log 2 "max keys mismatch"
|
||||
return 1
|
||||
fi
|
||||
if ! check_xml_element <(echo "$list_bucket_result") "1" "KeyCount"; then
|
||||
log 2 "key count mismatch"
|
||||
return 1
|
||||
fi
|
||||
if ! check_xml_element <(echo "$list_bucket_result") "true" "IsTruncated"; then
|
||||
log 2 "key count mismatch"
|
||||
return 1
|
||||
fi
|
||||
if ! continuation_token=$(xmllint --xpath '//*[local-name()="NextContinuationToken"]/text()' <(echo "$list_bucket_result") 2>&1); then
|
||||
log 2 "error getting next continuation token: $continuation_token"
|
||||
return 1
|
||||
fi
|
||||
echo "$continuation_token"
|
||||
return 0
|
||||
}
|
||||
|
||||
list_objects_check_continuation_error() {
|
||||
if [ $# -ne 2 ]; then
|
||||
log 2 "'list_objects_check_continuation_error' requires bucket name, continuation token"
|
||||
return 1
|
||||
fi
|
||||
if ! result=$(COMMAND_LOG="$COMMAND_LOG" BUCKET_NAME="$1" VERSION_TWO="TRUE" MAX_KEYS=1 CONTINUATION_TOKEN="$2" OUTPUT_FILE="$TEST_FILE_FOLDER/objects.txt" ./tests/rest_scripts/list_objects.sh); then
|
||||
log 2 "error attempting to get bucket ACL response: $result"
|
||||
return 1
|
||||
fi
|
||||
if [ "$result" != "400" ]; then
|
||||
log 2 "expected result code of '400' was '$result'"
|
||||
return 1
|
||||
fi
|
||||
if ! check_xml_element "$TEST_FILE_FOLDER/objects.txt" "InvalidArgument" "Error" "Code"; then
|
||||
log 2 "invalid error code"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
check_xml_element() {
|
||||
if [ $# -lt 3 ]; then
|
||||
log 2 "'check_xml_element' requires data source, expected value, XML tree"
|
||||
return 1
|
||||
fi
|
||||
local xpath='//'
|
||||
for tree_val in "${@:3}"; do
|
||||
xpath+='*[local-name()="'$tree_val'"]/'
|
||||
done
|
||||
xpath+='text()'
|
||||
if ! xml_val=$(xmllint --xpath "$xpath" "$1" 2>&1); then
|
||||
log 2 "error getting XML value matching $xpath: $xml_val"
|
||||
return 1
|
||||
fi
|
||||
if [ "$2" != "$xml_val" ]; then
|
||||
log 2 "XML data mismatch, expected '$2', actual '$xml_val'"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user