upskill-event-manager/wordpress-dev/bin/deploy-test-config.sh
bengizmo d6211ee364 feat(testing): Implement HVAC_Test_User_Factory and update .gitignore
- 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.
2025-04-14 17:41:36 -03:00

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