- 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 |