#!/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/)" 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)"