package org.ovirt.engine.core.notifier.utils.mail; import static org.junit.Assert.assertTrue; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.event_audit_log_subscriber; import org.ovirt.engine.core.notifier.utils.NotificationProperties; import org.ovirt.engine.core.notifier.utils.sender.EventSenderResult; import org.ovirt.engine.core.notifier.utils.sender.mail.EventSenderMailImpl; import org.ovirt.engine.core.notifier.utils.sender.mail.JavaMailSender; /** * A tester of the {@link JavaMailSender}. Tests both secured and non-secured methods of mail sending as SMTP and SMTP * over SSL. */ public class MailSenderTest { /** * The test covers sending an email using non-secured mail client (SMTP) configuration. <br> * The test covers the following: <br> * <li>Creation of a formatted message * <li>Creating a non secured mail client * <li>Send an email to the user which contains faked data with HTML body message */ @Test public void testNonSecuredEventMailSender() { event_audit_log_subscriber eventData = new event_audit_log_subscriber(); eventData.setlog_time(new Date()); eventData.setevent_type(0); eventData.setuser_name("a test user name"); eventData.setvm_name("a fine test VM"); eventData.setvds_name("a fine test host"); eventData.setmethod_address("mailtest.redhat@gmail.com"); eventData.setvm_template_name("a test template"); eventData.setstorage_pool_name("a test storage pool name"); eventData.setstorage_domain_name("a test storage pool domain"); eventData.setseverity(3); EventSenderMailImpl mailSender = new EventSenderMailImpl(getMailProperties()); eventData.setmessage("a test message to be sent via non-secured mode"); EventSenderResult sentResult = null; try { sentResult = mailSender.send(eventData, null); } catch (Exception e) { sentResult = new EventSenderResult(); sentResult.setSent(false); } assertTrue(sentResult.isSent()); } /** * The test covers sending an email using secured mail client (SMTP over SSL) configuration. <br> * The test covers the following: <br> * <li>Creation of a formatted message * <li>Creating a non secured mail client * <li>Send an email to the user which contains faked data as a plan text message */ @Test public void testSecuredEventMailSender() { event_audit_log_subscriber eventData = new event_audit_log_subscriber(); eventData.setlog_time(new Date()); eventData.setevent_type(0); eventData.setuser_name("a test user name"); eventData.setvm_name("a fine test VM"); eventData.setvds_name("a fine test host"); eventData.setmethod_address("mailtest.redhat@gmail.com"); eventData.setvm_template_name("a test template"); eventData.setstorage_pool_name("a test storage pool name"); eventData.setstorage_domain_name("a test storage pool domain"); eventData.setseverity(3); EventSenderMailImpl mailSender = new EventSenderMailImpl(getSecuredMailProperties()); eventData.setmessage("a test message to be sent via secured mode"); mailSender.send(eventData, null); EventSenderResult sentResult = null; try { sentResult = mailSender.send(eventData, null); } catch (Exception e) { sentResult = new EventSenderResult(); sentResult.setSent(false); } assertTrue(sentResult.isSent()); } private static Map<String, String> getMailProperties() { Map<String, String> prop = new HashMap<String, String>(); prop.put(NotificationProperties.MAIL_SERVER, "smtp.redhat.com"); prop.put(NotificationProperties.MAIL_USER, "dev-null@redhat.com"); prop.put(NotificationProperties.HTML_MESSAGE_FORMAT, "true"); return prop; } private static Map<String, String> getSecuredMailProperties() { Map<String, String> prop = new HashMap<String, String>(); prop.put(NotificationProperties.MAIL_SERVER, "smtp.gmail.com"); prop.put(NotificationProperties.MAIL_PORT, "465"); prop.put(NotificationProperties.MAIL_USER, "mailtest.redhat@gmail.com"); prop.put(NotificationProperties.MAIL_PASSWORD, "q1!w2@e3#!"); prop.put(NotificationProperties.MAIL_FROM, "dev-null@redhat.com"); prop.put(NotificationProperties.MAIL_ENABLE_SSL, "true"); return prop; } }