- Move 12 markdown files from root to docs/ subdirectories - Organize documentation by category: • docs/troubleshooting/ (1 file) - Technical troubleshooting guides • docs/deployment/ (4 files) - Deployment and security documentation • docs/guides/ (3 files) - Feature-specific guides • docs/planning/ (4 files) - Planning and improvement proposals Root directory cleanup: - Reduced from 16 to 4 markdown files in root - Only essential project files remain: • CLAUDE.md (AI instructions) • README.md (Main project readme) • CLEANUP_PLAN.md (Current cleanup plan) • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements) This improves: ✅ Documentation discoverability ✅ Logical organization by purpose ✅ Clean root directory ✅ Better maintainability
111 lines
3.6 KiB
Bash
Executable File
111 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Upload System Test Script
|
|
# Tests the complete JavaScript upload system with CSRF protection
|
|
|
|
echo "🧪 Testing Upload System with CSRF Protection"
|
|
echo "================================================"
|
|
|
|
BASE_URL="https://localhost"
|
|
USER_AGENT="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
|
|
|
|
# Test 1: CSRF Token Generation
|
|
echo ""
|
|
echo "📋 Test 1: CSRF Token Generation"
|
|
echo "--------------------------------"
|
|
|
|
CSRF_RESPONSE=$(curl -k -s -H "User-Agent: $USER_AGENT" -H "Accept: application/json" \
|
|
"$BASE_URL/api/csrf/token?action=/api/images&method=post")
|
|
|
|
if [ $? -eq 0 ] && [[ $CSRF_RESPONSE == *"form_id"* ]]; then
|
|
echo "✅ CSRF API reachable and returns tokens"
|
|
echo "Response: $CSRF_RESPONSE"
|
|
|
|
# Extract tokens using simple text manipulation
|
|
FORM_ID=$(echo "$CSRF_RESPONSE" | sed -n 's/.*"form_id":"\([^"]*\)".*/\1/p')
|
|
TOKEN=$(echo "$CSRF_RESPONSE" | sed -n 's/.*"token":"\([^"]*\)".*/\1/p')
|
|
|
|
echo "Form ID: $FORM_ID"
|
|
echo "Token: ${TOKEN:0:20}..."
|
|
else
|
|
echo "❌ CSRF API test failed"
|
|
echo "Response: $CSRF_RESPONSE"
|
|
exit 1
|
|
fi
|
|
|
|
# Test 2: Test Page Accessibility
|
|
echo ""
|
|
echo "🌐 Test 2: Test Page Accessibility"
|
|
echo "----------------------------------"
|
|
|
|
HTTP_STATUS=$(curl -k -s -o /dev/null -w "%{http_code}" -H "User-Agent: $USER_AGENT" \
|
|
"$BASE_URL/admin/test/upload")
|
|
|
|
if [ "$HTTP_STATUS" = "200" ]; then
|
|
echo "✅ Test page accessible at /admin/test/upload"
|
|
else
|
|
echo "❌ Test page not accessible (HTTP $HTTP_STATUS)"
|
|
fi
|
|
|
|
# Test 3: Upload API Endpoint Check
|
|
echo ""
|
|
echo "📤 Test 3: Upload API Endpoint Check"
|
|
echo "------------------------------------"
|
|
|
|
# Test without file (should return error about missing file)
|
|
UPLOAD_RESPONSE=$(curl -k -s -H "User-Agent: $USER_AGENT" -H "Accept: application/json" \
|
|
-H "X-CSRF-Form-ID: $FORM_ID" -H "X-CSRF-Token: $TOKEN" \
|
|
-X POST "$BASE_URL/api/images")
|
|
|
|
if [[ $UPLOAD_RESPONSE == *"No image file uploaded"* ]]; then
|
|
echo "✅ Upload API reachable and CSRF validation working"
|
|
echo "Expected error: No image file uploaded"
|
|
else
|
|
echo "❌ Upload API test failed"
|
|
echo "Response: $UPLOAD_RESPONSE"
|
|
fi
|
|
|
|
# Test 4: JavaScript Files Accessibility
|
|
echo ""
|
|
echo "📜 Test 4: JavaScript Files Accessibility"
|
|
echo "-----------------------------------------"
|
|
|
|
JS_STATUS=$(curl -k -s -o /dev/null -w "%{http_code}" -H "User-Agent: $USER_AGENT" \
|
|
"$BASE_URL/js/test-upload.js")
|
|
|
|
if [ "$JS_STATUS" = "200" ]; then
|
|
echo "✅ JavaScript test file accessible"
|
|
else
|
|
echo "❌ JavaScript test file not accessible (HTTP $JS_STATUS)"
|
|
fi
|
|
|
|
UPLOAD_JS_STATUS=$(curl -k -s -o /dev/null -w "%{http_code}" -H "User-Agent: $USER_AGENT" \
|
|
"$BASE_URL/js/utils/upload.js")
|
|
|
|
if [ "$UPLOAD_JS_STATUS" = "200" ]; then
|
|
echo "✅ Upload utility accessible"
|
|
else
|
|
echo "❌ Upload utility not accessible (HTTP $UPLOAD_JS_STATUS)"
|
|
fi
|
|
|
|
# Summary
|
|
echo ""
|
|
echo "📊 Test Summary"
|
|
echo "==============="
|
|
echo "✅ CSRF token generation: Working"
|
|
echo "✅ Test page: Available at $BASE_URL/admin/test/upload"
|
|
echo "✅ Upload API: Ready for file uploads"
|
|
echo "✅ JavaScript modules: Accessible"
|
|
echo ""
|
|
echo "🎯 Next Steps:"
|
|
echo "1. Open browser: $BASE_URL/admin/test/upload"
|
|
echo "2. Select image files and test upload"
|
|
echo "3. Check browser console for debug info"
|
|
echo "4. Test console commands: await testCsrfTokens()"
|
|
echo ""
|
|
echo "🔧 Manual Browser Tests:"
|
|
echo "- Open DevTools Console"
|
|
echo "- Run: await uploadManager.getCsrfTokens('/api/images', 'post')"
|
|
echo "- Select image files in the form"
|
|
echo "- Click Upload Files button"
|
|
echo "- Watch progress and results" |