Files
ginxsom/Trash/test_admin_api.sh

80 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Test script for Admin API functionality
# Demonstrates the new unified config system with automatic cache refresh
set -e
echo "=== Admin API Configuration Test ==="
echo
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Test the GET config API
echo -e "${BLUE}1. Getting current configuration:${NC}"
curl -s "http://localhost:9001/api/config" | jq '.' || echo "jq not available, showing raw output:"
curl -s "http://localhost:9001/api/config"
echo
echo
# Test setting auth_rules_enabled to false
echo -e "${BLUE}2. Disabling authentication (auth_rules_enabled=false):${NC}"
response=$(curl -s -X PUT \
-H "Content-Type: application/json" \
-d '{"value": "false"}' \
"http://localhost:9001/api/config/auth_rules_enabled")
echo "$response"
echo
# Verify database was updated
echo -e "${BLUE}3. Verifying database update:${NC}"
sqlite3 db/ginxsom.db "SELECT key, value, updated_at FROM config WHERE key = 'auth_rules_enabled'"
echo
# Test that cache refresh worked by attempting upload without auth
echo -e "${BLUE}4. Testing cache refresh - upload without authentication:${NC}"
upload_result=$(echo "test content" | curl -s -X PUT -H "Content-Type: text/plain" -d @- http://localhost:9001/upload)
echo "$upload_result"
if echo "$upload_result" | grep -q "authorization_required"; then
echo -e "${GREEN}✅ Cache refresh working - authentication correctly disabled${NC}"
else
echo -e "${RED}❌ Cache refresh may not be working${NC}"
fi
echo
# Test setting auth_rules_enabled back to true
echo -e "${BLUE}5. Re-enabling authentication (auth_rules_enabled=true):${NC}"
response=$(curl -s -X PUT \
-H "Content-Type: application/json" \
-d '{"value": "true"}' \
"http://localhost:9001/api/config/auth_rules_enabled")
echo "$response"
echo
# Test another config setting
echo -e "${BLUE}6. Testing another config key (max_file_size):${NC}"
response=$(curl -s -X PUT \
-H "Content-Type: application/json" \
-d '{"value": "104857600"}' \
"http://localhost:9001/api/config/max_file_size")
echo "$response"
echo
# Show final config state
echo -e "${BLUE}7. Final configuration state:${NC}"
echo "Database content:"
sqlite3 db/ginxsom.db "SELECT key, value, updated_at FROM config ORDER BY updated_at DESC LIMIT 5"
echo
echo -e "${GREEN}=== Admin API Test Complete ===${NC}"
echo "The admin API is working with:"
echo "- ✅ Unified config table (no more dual server_config/auth_config)"
echo "- ✅ Individual key endpoints (PUT /api/config/<key>)"
echo "- ✅ JSON request body parsing ({\"value\": \"...\"})"
echo "- ✅ Automatic cache refresh after updates"
echo "- ✅ Environment variable cache control support"
echo "- ⏳ Admin authentication (temporarily disabled for testing)"