feat: Add test user creation and plugin verification scripts
This commit is contained in:
parent
9b2b574518
commit
7ac4d4b853
3 changed files with 325 additions and 0 deletions
122
wordpress-dev/bin/create-test-events-admin.sh
Executable file
122
wordpress-dev/bin/create-test-events-admin.sh
Executable file
|
|
@ -0,0 +1,122 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Load environment variables
|
||||
if [ -f "./.env" ]; then
|
||||
source ./.env
|
||||
else
|
||||
echo "Error: .env file not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configuration
|
||||
SSH_USER="${UPSKILL_STAGING_SSH_USER}"
|
||||
SSH_HOST="${UPSKILL_STAGING_IP}"
|
||||
SSH_PASS="${UPSKILL_STAGING_PASS}"
|
||||
SITE_PATH="${UPSKILL_STAGING_PATH:-/home/974670.cloudwaysapps.com/uberrxmprk/public_html}"
|
||||
|
||||
# Check if required variables are set
|
||||
if [ -z "$SSH_USER" ] || [ -z "$SSH_HOST" ] || [ -z "$SSH_PASS" ]; then
|
||||
echo "Error: Required environment variables not set. Please check your .env file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create a test event for the test_trainer user
|
||||
echo "=== Creating test event for test_trainer ==="
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp post create --post_type=tribe_events --post_title='HVAC Training Workshop' --post_content='This is a test event for HVAC training.' --post_status=publish --post_author=18 --meta_input='{\"_EventStartDate\":\"$(date -v+1d "+%Y-%m-%d 10:00:00")\",\"_EventEndDate\":\"$(date -v+1d "+%Y-%m-%d 16:00:00")\",\"_EventVenueID\":\"auto\",\"_EventURL\":\"https://upskill-staging.measurequick.com\",\"_EventCurrencySymbol\":\"$\",\"_EventCurrencyPosition\":\"prefix\",\"_EventCost\":\"99.99\",\"_EventTimezone\":\"America/New_York\"}'"
|
||||
|
||||
# Create another event with a different date
|
||||
echo "=== Creating second test event for test_trainer ==="
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp post create --post_type=tribe_events --post_title='Advanced HVAC Certification' --post_content='An advanced certification course for HVAC professionals.' --post_status=publish --post_author=18 --meta_input='{\"_EventStartDate\":\"$(date -v+7d "+%Y-%m-%d 09:00:00")\",\"_EventEndDate\":\"$(date -v+8d "+%Y-%m-%d 17:00:00")\",\"_EventVenueID\":\"auto\",\"_EventURL\":\"https://upskill-staging.measurequick.com\",\"_EventCurrencySymbol\":\"$\",\"_EventCurrencyPosition\":\"prefix\",\"_EventCost\":\"299.99\",\"_EventTimezone\":\"America/New_York\"}'"
|
||||
|
||||
# Create an event for admin_trainer
|
||||
echo "=== Creating test event for admin_trainer ==="
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp post create --post_type=tribe_events --post_title='HVAC Business Management' --post_content='Learn how to manage your HVAC business effectively.' --post_status=publish --post_author=19 --meta_input='{\"_EventStartDate\":\"$(date -v+14d "+%Y-%m-%d 13:00:00")\",\"_EventEndDate\":\"$(date -v+14d "+%Y-%m-%d 17:00:00")\",\"_EventVenueID\":\"auto\",\"_EventURL\":\"https://upskill-staging.measurequick.com\",\"_EventCurrencySymbol\":\"$\",\"_EventCurrencyPosition\":\"prefix\",\"_EventCost\":\"149.99\",\"_EventTimezone\":\"America/New_York\"}'"
|
||||
|
||||
# Create test attendees
|
||||
echo "=== Creating test attendees for the first event ==="
|
||||
# We would normally use The Events Calendar's ticket system for this
|
||||
# For now, we'll create a custom script to simulate attendees
|
||||
|
||||
cat > /tmp/create_attendees.php << 'EOL'
|
||||
<?php
|
||||
// Get the WordPress environment
|
||||
require_once('wp-load.php');
|
||||
|
||||
// Find the first event for test_trainer (ID 18)
|
||||
$events = get_posts(array(
|
||||
'post_type' => 'tribe_events',
|
||||
'author' => 18,
|
||||
'posts_per_page' => 1,
|
||||
'orderby' => 'date',
|
||||
'order' => 'DESC'
|
||||
));
|
||||
|
||||
if (empty($events)) {
|
||||
echo "No events found for test_trainer\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$event_id = $events[0]->ID;
|
||||
echo "Creating attendees for event: " . $events[0]->post_title . " (ID: $event_id)\n";
|
||||
|
||||
// Test attendee data
|
||||
$attendees = array(
|
||||
array(
|
||||
'name' => 'John Smith',
|
||||
'email' => 'john.smith@example.com',
|
||||
'phone' => '555-123-4567',
|
||||
'paid' => 99.99,
|
||||
'status' => 'checked-in'
|
||||
),
|
||||
array(
|
||||
'name' => 'Jane Doe',
|
||||
'email' => 'jane.doe@example.com',
|
||||
'phone' => '555-987-6543',
|
||||
'paid' => 99.99,
|
||||
'status' => 'checked-in'
|
||||
),
|
||||
array(
|
||||
'name' => 'Bob Johnson',
|
||||
'email' => 'bob.johnson@example.com',
|
||||
'phone' => '555-456-7890',
|
||||
'paid' => 99.99,
|
||||
'status' => 'not-checked-in'
|
||||
)
|
||||
);
|
||||
|
||||
// Create attendees (this is a simplified example - actual implementation depends on The Events Calendar)
|
||||
foreach ($attendees as $attendee_data) {
|
||||
// Check if we need to integrate with a specific ticket system
|
||||
// For now, we'll just create custom post meta to simulate attendees
|
||||
|
||||
// Create a unique ID for this attendee
|
||||
$attendee_id = 'test_' . md5($attendee_data['email'] . time());
|
||||
|
||||
// Add attendee to event (simplified approach)
|
||||
add_post_meta($event_id, '_tribe_attendee_' . $attendee_id, array(
|
||||
'name' => $attendee_data['name'],
|
||||
'email' => $attendee_data['email'],
|
||||
'phone' => $attendee_data['phone'],
|
||||
'paid' => $attendee_data['paid'],
|
||||
'status' => $attendee_data['status'],
|
||||
'created' => current_time('mysql')
|
||||
));
|
||||
|
||||
echo "Created attendee: " . $attendee_data['name'] . "\n";
|
||||
}
|
||||
|
||||
// Update attendee count in event meta
|
||||
$attendee_count = count($attendees);
|
||||
update_post_meta($event_id, '_tribe_attendee_count', $attendee_count);
|
||||
echo "Updated attendee count to $attendee_count\n";
|
||||
|
||||
echo "Done creating test attendees\n";
|
||||
EOL
|
||||
|
||||
# Upload and run the PHP script
|
||||
sshpass -p "$SSH_PASS" scp -o StrictHostKeyChecking=no /tmp/create_attendees.php "$SSH_USER@$SSH_HOST:$SITE_PATH/create_attendees.php"
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && php create_attendees.php"
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && rm create_attendees.php"
|
||||
|
||||
echo "=== Test events and attendees created successfully ==="
|
||||
echo "You can view these events on the HVAC dashboard or in the WordPress admin"
|
||||
90
wordpress-dev/bin/create-test-users.sh
Executable file
90
wordpress-dev/bin/create-test-users.sh
Executable file
|
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Load environment variables
|
||||
if [ -f "./.env" ]; then
|
||||
source ./.env
|
||||
else
|
||||
echo "Error: .env file not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Configuration
|
||||
SSH_USER="${UPSKILL_STAGING_SSH_USER}"
|
||||
SSH_HOST="${UPSKILL_STAGING_IP}"
|
||||
SSH_PASS="${UPSKILL_STAGING_PASS}"
|
||||
SITE_PATH="${UPSKILL_STAGING_PATH:-/home/974670.cloudwaysapps.com/uberrxmprk/public_html}"
|
||||
|
||||
# Check if required variables are set
|
||||
if [ -z "$SSH_USER" ] || [ -z "$SSH_HOST" ] || [ -z "$SSH_PASS" ]; then
|
||||
echo "Error: Required environment variables not set. Please check your .env file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to create a user with the trainer role
|
||||
create_test_user() {
|
||||
local username=$1
|
||||
local email=$2
|
||||
local password=$3
|
||||
local first_name=$4
|
||||
local last_name=$5
|
||||
local role=$6
|
||||
local business_name=$7
|
||||
local business_phone=$8
|
||||
local business_email=$9
|
||||
|
||||
echo "Creating user: $username ($email) with role: $role"
|
||||
|
||||
# Check if user already exists
|
||||
USER_EXISTS=$(sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user get $username --field=ID 2>/dev/null || echo ''")
|
||||
|
||||
if [ -n "$USER_EXISTS" ]; then
|
||||
echo "User $username already exists with ID: $USER_EXISTS"
|
||||
|
||||
# Update user if exists
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user update $USER_EXISTS --user_pass='$password' --first_name='$first_name' --last_name='$last_name' --role='$role'"
|
||||
echo "Updated user password, name, and role"
|
||||
else
|
||||
# Create user
|
||||
USER_ID=$(sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user create $username $email --user_pass='$password' --first_name='$first_name' --last_name='$last_name' --role='$role' --porcelain")
|
||||
|
||||
if [ -z "$USER_ID" ]; then
|
||||
echo "Error: Failed to create user $username"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Created user $username with ID: $USER_ID"
|
||||
fi
|
||||
|
||||
# Add user meta for business details
|
||||
if [ -n "$business_name" ]; then
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user meta update $username business_name '$business_name'"
|
||||
fi
|
||||
|
||||
if [ -n "$business_phone" ]; then
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user meta update $username business_phone '$business_phone'"
|
||||
fi
|
||||
|
||||
if [ -n "$business_email" ]; then
|
||||
sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user meta update $username business_email '$business_email'"
|
||||
fi
|
||||
|
||||
echo "Updated business details for $username"
|
||||
return 0
|
||||
}
|
||||
|
||||
# Create test_trainer user
|
||||
echo "=== Creating test trainer user ==="
|
||||
create_test_user "test_trainer" "test_trainer@example.com" "Test123!" "Test" "Trainer" "hvac_trainer" "Test HVAC Training" "555-0123" "business@testtraining.com"
|
||||
echo ""
|
||||
|
||||
# Create admin_trainer user
|
||||
echo "=== Creating admin trainer user ==="
|
||||
create_test_user "admin_trainer" "admin_trainer@example.com" "Admin123!" "Admin" "Trainer" "administrator" "Admin HVAC Training" "555-0124" "admin@testtraining.com"
|
||||
echo ""
|
||||
|
||||
# Create pending_trainer user
|
||||
echo "=== Creating pending trainer user ==="
|
||||
create_test_user "pending_trainer" "pending_trainer@example.com" "Pending123!" "Pending" "Trainer" "subscriber" "Pending HVAC Training" "555-0125" "pending@testtraining.com"
|
||||
echo ""
|
||||
|
||||
echo "Test users created successfully!"
|
||||
113
wordpress-dev/tests/e2e/verify-plugin-status.test.ts
Normal file
113
wordpress-dev/tests/e2e/verify-plugin-status.test.ts
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test.describe('Plugin Status Verification', () => {
|
||||
test('verify HVAC Community Events plugin status on staging', async ({ page }) => {
|
||||
console.log('Starting plugin status verification...');
|
||||
|
||||
// First check if we can access the site
|
||||
await page.goto('https://upskill-staging.measurequick.com/');
|
||||
await expect(page).toHaveTitle(/Upskill HVAC/);
|
||||
console.log('✓ Site is accessible');
|
||||
|
||||
// Try to access WordPress admin
|
||||
await page.goto('https://upskill-staging.measurequick.com/wp-admin/');
|
||||
|
||||
// Check if we're redirected to login
|
||||
await page.waitForLoadState('networkidle');
|
||||
const url = page.url();
|
||||
console.log(`Current URL: ${url}`);
|
||||
|
||||
if (url.includes('wp-login')) {
|
||||
console.log('Need to login to access admin');
|
||||
|
||||
// Try to login with admin credentials if available
|
||||
try {
|
||||
await page.fill('#user_login', 'admin');
|
||||
await page.fill('#user_pass', 'admin'); // Common staging password
|
||||
await page.click('#wp-submit');
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Check if login was successful
|
||||
if (page.url().includes('wp-admin') && !page.url().includes('wp-login')) {
|
||||
console.log('✓ Successfully logged into admin');
|
||||
|
||||
// Navigate to plugins page
|
||||
await page.goto('https://upskill-staging.measurequick.com/wp-admin/plugins.php');
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Check for HVAC plugin
|
||||
const hvacPlugin = page.locator('tr[data-slug="hvac-community-events"], tr:has-text("HVAC Community Events")');
|
||||
const pluginExists = await hvacPlugin.count() > 0;
|
||||
|
||||
if (pluginExists) {
|
||||
console.log('✓ HVAC Community Events plugin found in plugins list');
|
||||
|
||||
// Check if it's active
|
||||
const isActive = await page.locator('tr[data-slug="hvac-community-events"] .plugin-title strong, tr:has-text("HVAC Community Events") .plugin-title strong').count() > 0;
|
||||
console.log(`Plugin active status: ${isActive}`);
|
||||
|
||||
// Get plugin details
|
||||
const pluginRow = page.locator('tr[data-slug="hvac-community-events"], tr:has-text("HVAC Community Events")').first();
|
||||
const pluginText = await pluginRow.textContent();
|
||||
console.log(`Plugin details: ${pluginText?.substring(0, 200)}...`);
|
||||
} else {
|
||||
console.log('✗ HVAC Community Events plugin NOT found in plugins list');
|
||||
|
||||
// List all plugins to see what's installed
|
||||
const allPlugins = await page.locator('#the-list tr .plugin-title strong').allTextContents();
|
||||
console.log('Installed plugins:', allPlugins);
|
||||
}
|
||||
|
||||
// Check if we can access HVAC menu items
|
||||
const hvacMenu = page.locator('#adminmenu a:has-text("HVAC")');
|
||||
const menuExists = await hvacMenu.count() > 0;
|
||||
console.log(`HVAC admin menu exists: ${menuExists}`);
|
||||
|
||||
} else {
|
||||
console.log('✗ Login failed or redirected');
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('Login attempt failed:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// Check frontend for plugin indicators
|
||||
await page.goto('https://upskill-staging.measurequick.com/');
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Look for HVAC-specific CSS classes, scripts, or content
|
||||
const hvacIndicators = {
|
||||
cssFiles: await page.locator('link[href*="hvac"]').count(),
|
||||
jsFiles: await page.locator('script[src*="hvac"]').count(),
|
||||
hvacClasses: await page.locator('[class*="hvac"]').count(),
|
||||
communityPages: await page.locator('a[href*="community"]').count(),
|
||||
trainerPages: await page.locator('a[href*="trainer"]').count()
|
||||
};
|
||||
|
||||
console.log('Frontend HVAC indicators:', hvacIndicators);
|
||||
|
||||
// Check if community registration page exists
|
||||
try {
|
||||
await page.goto('https://upskill-staging.measurequick.com/community-registration/');
|
||||
await page.waitForLoadState('networkidle');
|
||||
const pageTitle = await page.title();
|
||||
const pageExists = !pageTitle.includes('Page not found') && !pageTitle.includes('404');
|
||||
console.log(`Community registration page exists: ${pageExists}`);
|
||||
console.log(`Page title: ${pageTitle}`);
|
||||
} catch (error) {
|
||||
console.log('Community registration page not accessible');
|
||||
}
|
||||
|
||||
// Check if trainer dashboard exists
|
||||
try {
|
||||
await page.goto('https://upskill-staging.measurequick.com/trainer-dashboard/');
|
||||
await page.waitForLoadState('networkidle');
|
||||
const pageTitle = await page.title();
|
||||
const pageExists = !pageTitle.includes('Page not found') && !pageTitle.includes('404');
|
||||
console.log(`Trainer dashboard page exists: ${pageExists}`);
|
||||
console.log(`Page title: ${pageTitle}`);
|
||||
} catch (error) {
|
||||
console.log('Trainer dashboard page not accessible');
|
||||
}
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue