upskill-event-manager/wordpress-dev/bin/test-certificate-email.sh
bengizmo 42138339cb test: Add certificate generation tests and deployment tools
- Add E2E test for certificate generation functionality
- Create deployment configuration script for staging server
- Add certificate email testing script
- Update composer.lock with TCPDF dependencies

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-20 15:32:29 -03:00

149 lines
No EOL
5.6 KiB
Bash
Executable file

#!/bin/bash
# Script to test certificate email functionality on staging server
# Load configuration
source bin/deploy-config.sh
# Set email address to test with
TEST_EMAIL="ben@tealmaker.com"
echo "=== Testing Certificate Email Functionality ==="
echo "Remote host: $REMOTE_HOST"
echo "Remote user: $REMOTE_USER"
echo "WordPress path: $REMOTE_PATH_BASE"
echo "Test email: $TEST_EMAIL"
echo "==============================="
# Connect to the remote server and run a WP-CLI command to create a test event, attendee, and certificate
ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_PATH_BASE && \
wp eval '
// Create a test event if needed
\$event_exists = get_posts(array(
\"post_type\" => \"tribe_events\",
\"meta_key\" => \"_test_certificate_event\",
\"meta_value\" => \"yes\",
\"posts_per_page\" => 1
));
if (empty(\$event_exists)) {
\$event_id = wp_insert_post(array(
\"post_title\" => \"Test Certificate Event\",
\"post_content\" => \"This is a test event for certificate generation\",
\"post_status\" => \"publish\",
\"post_type\" => \"tribe_events\"
));
update_post_meta(\$event_id, \"_test_certificate_event\", \"yes\");
echo \"Created test event with ID: {\$event_id}\\n\";
} else {
\$event_id = \$event_exists[0]->ID;
echo \"Using existing test event with ID: {\$event_id}\\n\";
}
// Create a test attendee
\$attendee_exists = get_posts(array(
\"post_type\" => \"tribe_rsvp_attendees\",
\"meta_key\" => \"_tribe_tickets_email\",
\"meta_value\" => \"$TEST_EMAIL\",
\"posts_per_page\" => 1
));
if (empty(\$attendee_exists)) {
\$attendee_id = wp_insert_post(array(
\"post_title\" => \"Test Attendee\",
\"post_status\" => \"publish\",
\"post_type\" => \"tribe_rsvp_attendees\"
));
update_post_meta(\$attendee_id, \"_tribe_tickets_email\", \"$TEST_EMAIL\");
update_post_meta(\$attendee_id, \"_tribe_tickets_full_name\", \"Test Attendee\");
update_post_meta(\$attendee_id, \"_tribe_rsvp_event\", \$event_id);
update_post_meta(\$attendee_id, \"_tribe_rsvp_status\", \"yes\");
update_post_meta(\$attendee_id, \"_tribe_tickets_attendee_status\", \"yes\");
update_post_meta(\$attendee_id, \"check_in\", \"1\");
echo \"Created test attendee with ID: {\$attendee_id}\\n\";
} else {
\$attendee_id = \$attendee_exists[0]->ID;
echo \"Using existing attendee with ID: {\$attendee_id}\\n\";
}
// Load certificate manager
require_once WP_PLUGIN_DIR . \"/hvac-community-events/includes/certificates/class-certificate-manager.php\";
require_once WP_PLUGIN_DIR . \"/hvac-community-events/includes/certificates/class-certificate-generator.php\";
\$certificate_manager = HVAC_Certificate_Manager::instance();
\$certificate_generator = HVAC_Certificate_Generator::instance();
// Generate certificate
\$certificate_exists = \$certificate_manager->get_certificate_by_attendee(\$event_id, \$attendee_id);
if (!\$certificate_exists) {
\$result = \$certificate_generator->generate_certificate(\$event_id, \$attendee_id);
if (\$result) {
\$certificate = \$certificate_manager->get_certificate_by_attendee(\$event_id, \$attendee_id);
echo \"Generated certificate with ID: {\$certificate->certificate_id}\\n\";
} else {
echo \"Failed to generate certificate\\n\";
}
} else {
echo \"Using existing certificate with ID: {\$certificate_exists->certificate_id}\\n\";
}
// Get existing certificate
\$certificate = \$certificate_manager->get_certificate_by_attendee(\$event_id, \$attendee_id);
if (!\$certificate) {
echo \"No certificate found\\n\";
exit;
}
// Email certificate
require_once WP_PLUGIN_DIR . \"/hvac-community-events/includes/certificates/class-certificate-security.php\";
\$certificate_security = HVAC_Certificate_Security::instance();
// Generate secure download URL
\$event = get_post(\$certificate->event_id);
\$attendee_name = get_post_meta(\$certificate->attendee_id, \"_tribe_tickets_full_name\", true);
\$certificate_data = array(
\"file_path\" => \$certificate->file_path,
\"event_name\" => \$event->post_title,
\"attendee_name\" => \$attendee_name
);
\$download_url = \$certificate_security->generate_download_token(\$certificate->certificate_id, \$certificate_data, 7 * DAY_IN_SECONDS);
if (!\$download_url) {
echo \"Failed to generate download URL\\n\";
exit;
}
// Email subject
\$subject = sprintf(
\"Your Certificate for %s\",
\$event->post_title
);
// Email body
\$message = sprintf(
\"Hello %s,\\n\\nThank you for attending %s.\\n\\nYour certificate of completion is now available. Please click the link below to download your certificate:\\n\\n%s\\n\\nThis link will expire in 7 days.\\n\\nRegards,\\nTest System\",
\$attendee_name,
\$event->post_title,
\$download_url
);
// Send email
\$headers = array(\"Content-Type: text/plain; charset=UTF-8\");
\$sent = wp_mail(\"$TEST_EMAIL\", \$subject, \$message, \$headers);
if (\$sent) {
// Record email sent
\$certificate_manager->mark_certificate_emailed(\$certificate->certificate_id);
echo \"Certificate email sent successfully to $TEST_EMAIL\\n\";
} else {
echo \"Failed to send certificate email\\n\";
}
'
"
echo "Email verification complete. Please check $TEST_EMAIL for the certificate email."