- Add HVAC_Test_User_Factory class with: * User creation with specific roles * Multiple role support * Persona management system * Account cleanup integration - Create comprehensive test suite in HVAC_Test_User_Factory_Test.php - Update testing improvement plan documentation - Add implementation decisions to project memory bank - Restructure .gitignore with: * Whitelist approach for better file management * Explicit backup exclusions * Specific bin directory inclusions Part of the Account Management component from the testing framework improvement plan.
		
			
				
	
	
		
			153 lines
		
	
	
		
			No EOL
		
	
	
		
			5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			No EOL
		
	
	
		
			5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Get absolute path to this script's directory
 | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
 | |
| PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
 | |
| 
 | |
| # Load environment variables
 | |
| ENV_FILE="$PROJECT_ROOT/wordpress-dev/.env"
 | |
| if [ ! -f "$ENV_FILE" ]; then
 | |
|     echo "Error: .env file not found at: $ENV_FILE"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| source "$ENV_FILE"
 | |
| 
 | |
| # Verify required environment variables
 | |
| if [ -z "$UPSKILL_STAGING_IP" ] || [ -z "$UPSKILL_STAGING_SSH_USER" ] || [ -z "$UPSKILL_STAGING_PASS" ]; then
 | |
|     echo "Error: Missing required environment variables"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| REMOTE_HOST="${UPSKILL_STAGING_IP}"
 | |
| REMOTE_USER="${UPSKILL_STAGING_SSH_USER}"
 | |
| REMOTE_PATH_BASE="/home/974670.cloudwaysapps.com/uberrxmprk/public_html"
 | |
| PLUGIN_SLUG="hvac-community-events"
 | |
| REMOTE_PLUGIN_PATH="${REMOTE_PATH_BASE}/wp-content/plugins/${PLUGIN_SLUG}"
 | |
| 
 | |
| echo "=== Deploying Test Configuration ==="
 | |
| echo "Remote host: $REMOTE_HOST"
 | |
| echo "Remote user: $REMOTE_USER"
 | |
| echo "Remote plugin path: $REMOTE_PLUGIN_PATH"
 | |
| echo "==============================="
 | |
| # Verify local files exist
 | |
| LOCAL_BOOTSTRAP="$PROJECT_ROOT/wordpress-dev/tests/bootstrap-staging.php"
 | |
| LOCAL_CONFIG="$PROJECT_ROOT/wordpress-dev/tests/wp-tests-config-staging.php"
 | |
| if [ ! -f "$LOCAL_BOOTSTRAP" ] || [ ! -f "$LOCAL_CONFIG" ]; then
 | |
|     echo "✗ Required files not found:"
 | |
|     [ ! -f "$LOCAL_BOOTSTRAP" ] && echo "- Bootstrap file: $LOCAL_BOOTSTRAP"
 | |
|     [ ! -f "$LOCAL_CONFIG" ] && echo "- Config file: $LOCAL_CONFIG"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Create and verify tests directory
 | |
| echo "Creating tests directory..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "mkdir -p $REMOTE_PLUGIN_PATH/tests && \
 | |
|      [ -d $REMOTE_PLUGIN_PATH/tests ] && echo 'Directory created successfully'"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "✗ Failed to create or verify tests directory"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Set and verify directory permissions
 | |
| echo "Setting directory permissions..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "chmod 755 $REMOTE_PLUGIN_PATH/tests && \
 | |
|      [ -r $REMOTE_PLUGIN_PATH/tests ] && echo 'Permissions set successfully'"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "✗ Failed to create tests directory"
 | |
|     exit 1
 | |
| fi
 | |
| # Create and verify the bootstrap file using SSH
 | |
| echo "Creating bootstrap file..."
 | |
| REMOTE_BOOTSTRAP="$REMOTE_PLUGIN_PATH/tests/bootstrap-staging.php"
 | |
| 
 | |
| # Read local file content
 | |
| BOOTSTRAP_CONTENT=$(cat "$LOCAL_BOOTSTRAP")
 | |
| 
 | |
| # Use SSH to create the file directly
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "cat > $REMOTE_BOOTSTRAP << 'EOL'
 | |
| $BOOTSTRAP_CONTENT
 | |
| EOL"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "✗ Failed to create bootstrap file"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Verify file exists and set permissions
 | |
| echo "Setting and verifying file permissions..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "if [ -f $REMOTE_BOOTSTRAP ]; then \
 | |
|         chmod 644 $REMOTE_BOOTSTRAP && \
 | |
|         [ -r $REMOTE_BOOTSTRAP ] && \
 | |
|         echo 'File created and permissions set successfully'; \
 | |
|      else \
 | |
|         echo 'Bootstrap file not found after creation'; \
 | |
|         exit 1; \
 | |
|      fi"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "✗ Failed to verify or set file permissions"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Deploy wp-tests-config-staging.php
 | |
| echo "Deploying test configuration file..."
 | |
| REMOTE_CONFIG="$REMOTE_PLUGIN_PATH/tests/wp-tests-config-staging.php"
 | |
| 
 | |
| # Read local config content
 | |
| CONFIG_CONTENT=$(cat "$LOCAL_CONFIG")
 | |
| 
 | |
| # Use SSH to create the config file
 | |
| # Ensure tests directory exists
 | |
| echo "Creating tests directory..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "mkdir -p $REMOTE_PLUGIN_PATH/tests && chmod 755 $REMOTE_PLUGIN_PATH/tests"
 | |
| 
 | |
| # Create config file using SSH to avoid path issues
 | |
| echo "Creating config file..."
 | |
| CONFIG_CONTENT=$(cat "$LOCAL_CONFIG")
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "cat > $REMOTE_CONFIG << 'EOL'
 | |
| $CONFIG_CONTENT
 | |
| EOL"
 | |
| 
 | |
| # Set proper permissions
 | |
| echo "Setting file permissions..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "chmod 644 $REMOTE_CONFIG"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "✗ Failed to create config file"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Set config file permissions
 | |
| echo "Setting config file permissions..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "chmod 644 $REMOTE_CONFIG && \
 | |
|      [ -r $REMOTE_CONFIG ] && echo 'Config file permissions set successfully'"
 | |
| 
 | |
| if [ $? -ne 0 ]; then
 | |
|     echo "✗ Failed to set config file permissions"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| 
 | |
| # Verify deployment
 | |
| echo "Verifying deployment..."
 | |
| sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_HOST" \
 | |
|     "test -f $REMOTE_PLUGIN_PATH/tests/bootstrap-staging.php"
 | |
| 
 | |
| if [ $? -eq 0 ]; then
 | |
|     echo "✓ Test configuration deployed successfully"
 | |
|     exit 0
 | |
| else
 | |
|     echo "✗ Failed to verify test configuration deployment"
 | |
|     exit 1
 | |
| fi |