test: Add 8 and update 14 files
This commit is contained in:
94
testing/test_auth.sh
Executable file
94
testing/test_auth.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Test authentication with hashed tokens
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
||||
PARENT_DIR=$(cd "${SCRIPT_DIR}/.." && pwd)
|
||||
SERVER_PID=""
|
||||
|
||||
# Cleanup function
|
||||
function cleanup() {
|
||||
if [ -n "$SERVER_PID" ]; then
|
||||
echo ""
|
||||
echo "Cleaning up: Stopping server (PID: $SERVER_PID)..."
|
||||
kill $SERVER_PID 2>/dev/null || true
|
||||
wait $SERVER_PID 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
# Set up trap to ensure cleanup on exit
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
echo "Testing token authentication with bcrypt hashes..."
|
||||
|
||||
# Generate test configuration with hashed tokens
|
||||
echo "1. Generating config with bcrypt-hashed tokens..."
|
||||
source ${SCRIPT_DIR}/generate_test_config.sh
|
||||
|
||||
# Copy config to where server expects it
|
||||
mkdir -p ~/.config/simple_object_storage/
|
||||
cp ${SCRIPT_DIR}/sos_config.json ~/.config/simple_object_storage/sos_config.json
|
||||
|
||||
# Start server if not running
|
||||
if ! curl -s http://127.0.0.1:7703/status > /dev/null 2>&1; then
|
||||
echo "2. Starting server..."
|
||||
${PARENT_DIR}/output/simple-object-server > /tmp/server.log 2>&1 &
|
||||
SERVER_PID=$!
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
# Test with plaintext token (server has hashed version)
|
||||
echo "3. Testing authentication with hashed tokens..."
|
||||
RESPONSE=$(curl -s -X PUT \
|
||||
-H "Authorization: Bearer ${TEST_TOKEN1}" \
|
||||
-F "file=@${SCRIPT_DIR}/test.sh" \
|
||||
-F 'metadata={"labeltags":["test:auth1"]}' \
|
||||
"http://127.0.0.1:7703/upload")
|
||||
|
||||
if echo "$RESPONSE" | grep -q '"result":"success"'; then
|
||||
echo "✓ Token 1 authentication successful"
|
||||
HASH=$(echo "$RESPONSE" | jq -r '.hash')
|
||||
# Clean up
|
||||
curl -s -H "Authorization: Bearer ${TEST_TOKEN1}" \
|
||||
"http://127.0.0.1:7703/deleteobject?hash=${HASH}" > /dev/null
|
||||
else
|
||||
echo "✗ Token 1 authentication failed: $RESPONSE"
|
||||
fi
|
||||
|
||||
# Test with second token
|
||||
echo "4. Testing with second token..."
|
||||
RESPONSE=$(curl -s -X PUT \
|
||||
-H "Authorization: Bearer ${TEST_TOKEN2}" \
|
||||
-F "file=@${SCRIPT_DIR}/test.sh" \
|
||||
-F 'metadata={"labeltags":["test:auth2"]}' \
|
||||
"http://127.0.0.1:7703/upload")
|
||||
|
||||
if echo "$RESPONSE" | grep -q '"result":"success"'; then
|
||||
echo "✓ Token 2 authentication successful"
|
||||
HASH=$(echo "$RESPONSE" | jq -r '.hash')
|
||||
# Clean up
|
||||
curl -s -H "Authorization: Bearer ${TEST_TOKEN2}" \
|
||||
"http://127.0.0.1:7703/deleteobject?hash=${HASH}" > /dev/null
|
||||
else
|
||||
echo "✗ Token 2 authentication failed: $RESPONSE"
|
||||
fi
|
||||
|
||||
# Test with invalid token
|
||||
echo "5. Testing with invalid token (should fail)..."
|
||||
RESPONSE=$(curl -s -X PUT \
|
||||
-H "Authorization: Bearer invalid_token_12345" \
|
||||
-F "file=@${SCRIPT_DIR}/test.sh" \
|
||||
-F 'metadata={"labeltags":["test:auth3"]}' \
|
||||
"http://127.0.0.1:7703/upload")
|
||||
|
||||
if echo "$RESPONSE" | grep -q '"error"'; then
|
||||
echo "✓ Invalid token correctly rejected"
|
||||
else
|
||||
echo "✗ Invalid token was incorrectly accepted: $RESPONSE"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Authentication tests complete!"
|
||||
# Cleanup will be handled by the trap
|
Reference in New Issue
Block a user