85 lines
2.2 KiB
Bash
Executable File
85 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Simple test to verify authentication works with hashed tokens
|
|
|
|
set -euo pipefail
|
|
|
|
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 "Simple authentication test with bcrypt hashes"
|
|
|
|
TEST_TOKEN="test123"
|
|
HASH=$(../output/hash_token -c 10 -q "${TEST_TOKEN}")
|
|
echo "Generated hash for '${TEST_TOKEN}': ${HASH:0:20}..."
|
|
|
|
# Create config with hashed token
|
|
cat > ~/.config/simple_object_storage/sos_config.json << EOF
|
|
{
|
|
"write_tokens": ["$HASH"],
|
|
"rate_limiting": {
|
|
"auth_rate_limit": 5,
|
|
"auth_window_seconds": 2
|
|
},
|
|
"port": 7703,
|
|
"host": "127.0.0.1"
|
|
}
|
|
EOF
|
|
|
|
# Make sure no server is running
|
|
fuser -k 7703/tcp 2>/dev/null || true
|
|
sleep 1
|
|
|
|
# Start server with hashed config
|
|
echo "Starting server with hashed token..."
|
|
../output/simple-object-server &
|
|
SERVER_PID=$!
|
|
sleep 2
|
|
|
|
# Test with plaintext token (server has hash)
|
|
echo "Testing with plaintext token against hashed config..."
|
|
RESPONSE=$(curl -s -X PUT \
|
|
-H "Authorization: Bearer ${TEST_TOKEN}" \
|
|
-F "file=@test.sh" \
|
|
-F 'metadata={"labeltags":["test:hashed"]}' \
|
|
"http://127.0.0.1:7703/upload")
|
|
|
|
if echo "$RESPONSE" | grep -q '"result":"success"'; then
|
|
echo "✓ Authentication successful"
|
|
HASH_RETURNED=$(echo "$RESPONSE" | jq -r '.hash')
|
|
# Clean up
|
|
curl -s -H "Authorization: Bearer ${TEST_TOKEN}" \
|
|
"http://127.0.0.1:7703/deleteobject?hash=${HASH_RETURNED}" > /dev/null
|
|
else
|
|
echo "✗ Authentication failed: $RESPONSE"
|
|
fi
|
|
|
|
# Test with wrong token
|
|
echo "Testing with wrong token (should fail)..."
|
|
RESPONSE=$(curl -s -X PUT \
|
|
-H "Authorization: Bearer wrongtoken" \
|
|
-F "file=@test.sh" \
|
|
-F 'metadata={"labeltags":["test:wrong"]}' \
|
|
"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 "Test complete!"
|
|
# Cleanup will be handled by the trap |