80 lines
2.7 KiB
Bash
Executable File
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)" |