Files
bookmarksite/backend/tests/test-email-service.js
2025-07-20 20:43:06 +02:00

68 lines
3.1 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const emailService = require('./src/services/EmailService');
require('dotenv').config();
async function testEmailService() {
console.log('Testing Email Service...\n');
// Test 1: Check service status
console.log('1. Checking service status:');
const status = emailService.getStatus();
console.log('Status:', status);
console.log('Configured:', status.configured);
// Test 2: Test configuration
console.log('\n2. Testing configuration:');
try {
const configTest = await emailService.testConfiguration();
console.log('Configuration test result:', configTest);
} catch (error) {
console.log('Configuration test failed:', error.message);
}
// Test 3: Generate tokens
console.log('\n3. Testing token generation:');
const verificationToken = emailService.generateSecureToken();
console.log('Verification token length:', verificationToken.length);
console.log('Verification token sample:', verificationToken.substring(0, 16) + '...');
const resetTokenData = emailService.generateResetToken(1);
console.log('Reset token length:', resetTokenData.token.length);
console.log('Reset token expires:', resetTokenData.expires);
console.log('Reset token sample:', resetTokenData.token.substring(0, 16) + '...');
// Test 4: Create email templates
console.log('\n4. Testing email templates:');
const verificationTemplate = emailService.createVerificationEmailTemplate('test@example.com', verificationToken);
console.log('Verification email subject:', verificationTemplate.subject);
console.log('Verification email has HTML:', !!verificationTemplate.html);
console.log('Verification email has text:', !!verificationTemplate.text);
const resetTemplate = emailService.createPasswordResetEmailTemplate('test@example.com', resetTokenData.token);
console.log('Reset email subject:', resetTemplate.subject);
console.log('Reset email has HTML:', !!resetTemplate.html);
console.log('Reset email has text:', !!resetTemplate.text);
// Test 5: Simulate email sending (without actually sending)
console.log('\n5. Email service methods available:');
console.log('- sendVerificationEmail:', typeof emailService.sendVerificationEmail);
console.log('- sendPasswordResetEmail:', typeof emailService.sendPasswordResetEmail);
console.log('- sendNotificationEmail:', typeof emailService.sendNotificationEmail);
console.log('\n✅ Email service tests completed successfully!');
// Note about actual email sending
if (!status.configured) {
console.log('\n⚠ Note: Email service is not configured. To test actual email sending:');
console.log(' 1. Set up EMAIL_* environment variables in .env file');
console.log(' 2. Use a valid SMTP service (Gmail, SendGrid, etc.)');
console.log(' 3. Run the service with proper credentials');
} else {
console.log('\n✅ Email service is configured and ready to send emails!');
}
}
// Run the test
testEmailService().catch(error => {
console.error('Test failed:', error);
process.exit(1);
});