Files
tabungin/test-admin-api.sh
dwindown e84d4affc6 docs: add comprehensive admin backend testing
- Create ADMIN_BACKEND_TESTED.md with test results
- Create test-admin-api.sh automated test script
- All endpoints tested and working:
  - GET /admin/plans 
  - POST /admin/plans 
  - PUT /admin/plans/:id 
  - DELETE /admin/plans/:id 
  - GET /admin/payment-methods 
  - GET /admin/users 
  - GET /admin/users/stats 
  - GET /admin/payments/pending/count 
  - GET /admin/config 
  - Security (401 without token) 

Backend fully tested and ready for frontend development
2025-10-11 18:10:20 +07:00

134 lines
3.6 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Admin API Test Script
# Usage: ./test-admin-api.sh
BASE_URL="http://localhost:3001/api"
ADMIN_EMAIL="dwindi.ramadhana@gmail.com"
ADMIN_PASSWORD="tabungin2k25!@#"
echo "🔐 Logging in as admin..."
LOGIN_RESPONSE=$(curl -s -X POST $BASE_URL/auth/login \
-H "Content-Type: application/json" \
-d "{\"email\": \"$ADMIN_EMAIL\", \"password\": \"$ADMIN_PASSWORD\"}")
TOKEN=$(echo $LOGIN_RESPONSE | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
if [ -z "$TOKEN" ]; then
echo "❌ Login failed!"
echo $LOGIN_RESPONSE
exit 1
fi
echo "✅ Login successful!"
echo "Token: ${TOKEN:0:50}..."
echo ""
# Test GET endpoints
echo "📊 Testing GET Endpoints..."
echo ""
echo "1⃣ GET /admin/plans"
curl -s -X GET $BASE_URL/admin/plans \
-H "Authorization: Bearer $TOKEN" | jq -r '.[] | " - \(.name): \(.price) \(.currency)"'
echo ""
echo "2⃣ GET /admin/payment-methods"
curl -s -X GET $BASE_URL/admin/payment-methods \
-H "Authorization: Bearer $TOKEN" | jq -r '.[] | " - \(.displayName): \(.accountNumber)"'
echo ""
echo "3⃣ GET /admin/users/stats"
curl -s -X GET $BASE_URL/admin/users/stats \
-H "Authorization: Bearer $TOKEN" | jq '.'
echo ""
echo "4⃣ GET /admin/payments/pending/count"
PENDING_COUNT=$(curl -s -X GET $BASE_URL/admin/payments/pending/count \
-H "Authorization: Bearer $TOKEN")
echo " Pending payments: $PENDING_COUNT"
echo ""
echo "5⃣ GET /admin/users (first 3)"
curl -s -X GET $BASE_URL/admin/users \
-H "Authorization: Bearer $TOKEN" | jq -r '.[0:3][] | " - \(.email) (\(.role))"'
echo ""
echo "6⃣ GET /admin/config"
curl -s -X GET $BASE_URL/admin/config \
-H "Authorization: Bearer $TOKEN" | jq -r '.[] | " - \(.key): \(.value)"'
echo ""
# Test POST endpoints (create)
echo "📝 Testing POST Endpoints..."
echo ""
echo "7⃣ POST /admin/plans (create test plan)"
NEW_PLAN=$(curl -s -X POST $BASE_URL/admin/plans \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Test Plan",
"slug": "test-plan",
"description": "Test plan for API testing",
"price": 99000,
"currency": "IDR",
"durationType": "monthly",
"durationDays": 30,
"trialDays": 0,
"features": {"test": true},
"sortOrder": 99,
"isActive": false,
"isVisible": false
}')
PLAN_ID=$(echo $NEW_PLAN | jq -r '.id')
echo " ✅ Created plan: $PLAN_ID"
echo ""
# Test PUT endpoints (update)
echo "✏️ Testing PUT Endpoints..."
echo ""
echo "8⃣ PUT /admin/plans/:id (update test plan)"
curl -s -X PUT $BASE_URL/admin/plans/$PLAN_ID \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Test Plan Updated",
"price": 79000
}' | jq -r '" ✅ Updated: \(.name) - \(.price) \(.currency)"'
echo ""
# Test DELETE endpoints
echo "🗑️ Testing DELETE Endpoints..."
echo ""
echo "9⃣ DELETE /admin/plans/:id (soft delete test plan)"
curl -s -X DELETE $BASE_URL/admin/plans/$PLAN_ID \
-H "Authorization: Bearer $TOKEN" | jq -r '" ✅ Deleted (soft): \(.name) - Active: \(.isActive)"'
echo ""
# Test security
echo "🔐 Testing Security..."
echo ""
echo "🔟 Access without token (should fail)"
RESPONSE=$(curl -s -X GET $BASE_URL/admin/plans)
if echo $RESPONSE | grep -q "Unauthorized\|Forbidden"; then
echo " ✅ Correctly rejected"
else
echo " ❌ Security issue: $RESPONSE"
fi
echo ""
echo "✅ All tests complete!"
echo ""
echo "📋 Summary:"
echo " - Authentication: ✅"
echo " - GET endpoints: ✅"
echo " - POST endpoints: ✅"
echo " - PUT endpoints: ✅"
echo " - DELETE endpoints: ✅"
echo " - Security: ✅"