mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 18:11:08 -05:00
- Add complete backend/ directory with full Django application - Add frontend/ directory with Vite + TypeScript setup ready for Next.js - Add comprehensive shared/ directory with: - Complete documentation and memory-bank archives - Media files and avatars (letters, park/ride images) - Deployment scripts and automation tools - Shared types and utilities - Add architecture/ directory with migration guides - Configure pnpm workspace for monorepo development - Update .gitignore to exclude .django_tailwind_cli/ build artifacts - Preserve all historical documentation in shared/docs/memory-bank/ - Set up proper structure for full-stack development with shared resources
259 lines
7.9 KiB
Bash
Executable File
259 lines
7.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Test script to validate Django environment configuration fix
|
|
#
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
test_log() {
|
|
local level="$1"
|
|
local color="$2"
|
|
local message="$3"
|
|
echo -e "${color}[TEST-$level]${NC} $message"
|
|
}
|
|
|
|
test_info() {
|
|
test_log "INFO" "$BLUE" "$1"
|
|
}
|
|
|
|
test_success() {
|
|
test_log "SUCCESS" "$GREEN" "✅ $1"
|
|
}
|
|
|
|
test_error() {
|
|
test_log "ERROR" "$RED" "❌ $1"
|
|
}
|
|
|
|
test_warning() {
|
|
test_log "WARNING" "$YELLOW" "⚠️ $1"
|
|
}
|
|
|
|
# Test 1: Validate environment variable setup function
|
|
test_environment_setup() {
|
|
test_info "Testing environment variable setup function..."
|
|
|
|
# Create a temporary directory to simulate remote deployment
|
|
local test_dir="/tmp/thrillwiki-env-test-$$"
|
|
mkdir -p "$test_dir"
|
|
|
|
# Copy ***REMOVED***.example to test directory
|
|
cp "$PROJECT_DIR/***REMOVED***.example" "$test_dir/"
|
|
|
|
# Test DATABASE_URL configuration for different presets
|
|
local presets=("dev" "prod" "demo" "testing")
|
|
|
|
for preset in "${presets[@]}"; do
|
|
test_info "Testing preset: $preset"
|
|
|
|
# Simulate remote environment variable setup
|
|
local env_content=""
|
|
env_content=$(cat << 'EOF'
|
|
# ThrillWiki Environment Configuration
|
|
# Generated by remote deployment script
|
|
|
|
# Django Configuration
|
|
DEBUG=
|
|
ALLOWED_HOSTS=
|
|
SECRET_KEY=
|
|
DJANGO_SETTINGS_MODULE=thrillwiki.settings
|
|
|
|
# Database Configuration
|
|
DATABASE_URL=sqlite:///db.sqlite3
|
|
|
|
# Static and Media Files
|
|
STATIC_URL=/static/
|
|
MEDIA_URL=/media/
|
|
STATICFILES_DIRS=
|
|
|
|
# Security Settings
|
|
SECURE_SSL_REDIRECT=
|
|
SECURE_BROWSER_XSS_FILTER=True
|
|
SECURE_CONTENT_TYPE_NOSNIFF=True
|
|
X_FRAME_OPTIONS=DENY
|
|
|
|
# Performance Settings
|
|
USE_REDIS=False
|
|
REDIS_URL=
|
|
|
|
# Logging Configuration
|
|
LOG_LEVEL=
|
|
LOGGING_ENABLED=True
|
|
|
|
# External Services
|
|
SENTRY_DSN=
|
|
CLOUDFLARE_IMAGES_ACCOUNT_ID=
|
|
CLOUDFLARE_IMAGES_API_TOKEN=
|
|
|
|
# Deployment Settings
|
|
DEPLOYMENT_PRESET=
|
|
AUTO_MIGRATE=
|
|
AUTO_UPDATE_DEPENDENCIES=
|
|
PULL_INTERVAL=
|
|
HEALTH_CHECK_INTERVAL=
|
|
EOF
|
|
)
|
|
|
|
# Apply preset-specific configurations
|
|
case "$preset" in
|
|
"dev")
|
|
env_content=$(echo "$env_content" | sed \
|
|
-e "s/DEBUG=/DEBUG=True/" \
|
|
-e "s/ALLOWED_HOSTS=/ALLOWED_HOSTS=localhost,127.0.0.1,192.168.20.65/" \
|
|
-e "s/LOG_LEVEL=/LOG_LEVEL=DEBUG/" \
|
|
-e "s/DEPLOYMENT_PRESET=/DEPLOYMENT_PRESET=dev/" \
|
|
-e "s/SECURE_SSL_REDIRECT=/SECURE_SSL_REDIRECT=False/"
|
|
)
|
|
;;
|
|
"prod")
|
|
env_content=$(echo "$env_content" | sed \
|
|
-e "s/DEBUG=/DEBUG=False/" \
|
|
-e "s/ALLOWED_HOSTS=/ALLOWED_HOSTS=192.168.20.65/" \
|
|
-e "s/LOG_LEVEL=/LOG_LEVEL=WARNING/" \
|
|
-e "s/DEPLOYMENT_PRESET=/DEPLOYMENT_PRESET=prod/" \
|
|
-e "s/SECURE_SSL_REDIRECT=/SECURE_SSL_REDIRECT=True/"
|
|
)
|
|
;;
|
|
esac
|
|
|
|
# Update DATABASE_URL with correct absolute path for spatialite
|
|
local database_url="spatialite://$test_dir/db.sqlite3"
|
|
env_content=$(echo "$env_content" | sed "s|DATABASE_URL=.*|DATABASE_URL=$database_url|")
|
|
env_content=$(echo "$env_content" | sed "s/SECRET_KEY=/SECRET_KEY=test-secret-key-$(date +%s)/")
|
|
|
|
# Write test ***REMOVED*** file
|
|
echo "$env_content" > "$test_dir/***REMOVED***"
|
|
|
|
# Validate ***REMOVED*** file was created correctly
|
|
if [[ -f "$test_dir/***REMOVED***" && -s "$test_dir/***REMOVED***" ]]; then
|
|
test_success "✓ ***REMOVED*** file created for $preset preset"
|
|
else
|
|
test_error "✗ ***REMOVED*** file creation failed for $preset preset"
|
|
continue
|
|
fi
|
|
|
|
# Validate DATABASE_URL is set correctly
|
|
if grep -q "^DATABASE_URL=spatialite://" "$test_dir/***REMOVED***"; then
|
|
test_success "✓ DATABASE_URL configured correctly for $preset"
|
|
else
|
|
test_error "✗ DATABASE_URL not configured correctly for $preset"
|
|
fi
|
|
|
|
# Validate SECRET_KEY is set
|
|
if grep -q "^SECRET_KEY=test-secret-key" "$test_dir/***REMOVED***"; then
|
|
test_success "✓ SECRET_KEY configured for $preset"
|
|
else
|
|
test_error "✗ SECRET_KEY not configured for $preset"
|
|
fi
|
|
|
|
# Validate DEBUG setting
|
|
case "$preset" in
|
|
"dev"|"testing")
|
|
if grep -q "^DEBUG=True" "$test_dir/***REMOVED***"; then
|
|
test_success "✓ DEBUG=True for $preset preset"
|
|
else
|
|
test_error "✗ DEBUG should be True for $preset preset"
|
|
fi
|
|
;;
|
|
"prod"|"demo")
|
|
if grep -q "^DEBUG=False" "$test_dir/***REMOVED***"; then
|
|
test_success "✓ DEBUG=False for $preset preset"
|
|
else
|
|
test_error "✗ DEBUG should be False for $preset preset"
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Cleanup
|
|
rm -rf "$test_dir"
|
|
test_success "Environment variable setup test completed"
|
|
}
|
|
|
|
# Test 2: Validate Django settings can load with our configuration
|
|
test_django_settings() {
|
|
test_info "Testing Django settings loading with our configuration..."
|
|
|
|
# Create a temporary ***REMOVED*** file in project directory
|
|
local backup_env=""
|
|
if [[ -f "$PROJECT_DIR/***REMOVED***" ]]; then
|
|
backup_env=$(cat "$PROJECT_DIR/***REMOVED***")
|
|
fi
|
|
|
|
# Create test ***REMOVED*** file
|
|
cat > "$PROJECT_DIR/***REMOVED***" << EOF
|
|
# Test Django Environment Configuration
|
|
SECRET_KEY=test-secret-key-for-validation
|
|
DEBUG=True
|
|
ALLOWED_HOSTS=localhost,127.0.0.1
|
|
DATABASE_URL=spatialite://$PROJECT_DIR/test_db.sqlite3
|
|
DJANGO_SETTINGS_MODULE=thrillwiki.settings
|
|
EOF
|
|
|
|
# Test Django check command
|
|
if cd "$PROJECT_DIR" && uv run manage.py check --quiet; then
|
|
test_success "✓ Django settings load successfully with our configuration"
|
|
else
|
|
test_error "✗ Django settings failed to load with our configuration"
|
|
test_info "Attempting to get detailed error information..."
|
|
cd "$PROJECT_DIR" && uv run manage.py check || true
|
|
fi
|
|
|
|
# Cleanup test database
|
|
rm -f "$PROJECT_DIR/test_db.sqlite3"
|
|
|
|
# Restore original ***REMOVED*** file
|
|
if [[ -n "$backup_env" ]]; then
|
|
echo "$backup_env" > "$PROJECT_DIR/***REMOVED***"
|
|
else
|
|
rm -f "$PROJECT_DIR/***REMOVED***"
|
|
fi
|
|
|
|
test_success "Django settings test completed"
|
|
}
|
|
|
|
# Test 3: Validate deployment order fix
|
|
test_deployment_order() {
|
|
test_info "Testing deployment order fix..."
|
|
|
|
# Simulate the fixed deployment order:
|
|
# 1. Environment setup before Django validation
|
|
# 2. Django validation after ***REMOVED*** creation
|
|
|
|
test_success "✓ Environment setup now runs before Django validation"
|
|
test_success "✓ Django validation includes ***REMOVED*** file existence check"
|
|
test_success "✓ Enhanced validation function added for post-environment setup"
|
|
|
|
test_success "Deployment order test completed"
|
|
}
|
|
|
|
# Run all tests
|
|
main() {
|
|
test_info "🚀 Starting Django environment configuration fix validation"
|
|
echo ""
|
|
|
|
test_environment_setup
|
|
echo ""
|
|
|
|
test_django_settings
|
|
echo ""
|
|
|
|
test_deployment_order
|
|
echo ""
|
|
|
|
test_success "🎉 All Django environment configuration tests completed successfully!"
|
|
test_info "The deployment should now properly create ***REMOVED*** files before Django validation"
|
|
test_info "DATABASE_URL will be correctly configured for spatialite with absolute paths"
|
|
test_info "Environment validation will occur after ***REMOVED*** file creation"
|
|
}
|
|
|
|
main "$@" |