My Unit Test for class for email through Greenmail
public class GreenMailTest {
private GreenMail greenMail;
private EmailServiceImpl emailService = new EmailServiceImpl();
private MessageTemplateService messageTemplateService;
private EmailProperties emailProperties;
private Properties props;
private static final String USER_PASSWORD = "abcdef123";
private static final String USER_NAME = "hascode";
private static final String EMAIL_USER_ADDRESS = "hascode@localhost";
private static final String EMAIL_TO = "someone@localhost.com";
private static final String EMAIL_SUBJECT = "Test E-Mail";
private static final String EMAIL_TEXT = "This is a test e-mail.";
private static final String LOCALHOST = "localhost";
// private GreenMail mailServer;
@Before
public void testSmtpInit() {
//ServerSetup setup = new ServerSetup();
greenMail = new GreenMail(ServerSetupTest.SMTP);
greenMail.start();
messageTemplateService = mock(MessageTemplateService.class);
emailProperties = mock(EmailProperties.class);
emailService.setEmailProperties(emailProperties);
}
@Test
public void testEmail() throws InterruptedException, IOException {
greenMail.setUser(EMAIL_USER_ADDRESS, USER_NAME, USER_PASSWORD);
// create the javax.mail stack with session, message and transport ..
Properties props = System.getProperties();
props.put("mail.smtp.host", LOCALHOST);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", ServerSetupTest.SMTP.getPort());
Session session = Session.getInstance(props, null);
Message msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(EMAIL_TO));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(EMAIL_USER_ADDRESS, false));
msg.setSubject(EMAIL_SUBJECT);
msg.setText(EMAIL_TEXT);
msg.setSentDate(new Date());
Transport t = session.getTransport("smtp");
t.connect(EMAIL_USER_ADDRESS, USER_PASSWORD);
t.sendMessage(msg, msg.getAllRecipients());
// assertEquals("250 OK\n", t.getLastServerResponse());
t.close();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// fetch messages from server
MimeMessage[] messages = greenMail.getReceivedMessages();
I used this code to test the email server on junit.
But the server does not return any message
what i did wrong.
I change the code please review it
GreenMail is running at localhost. Adjust your smtp host accordingly:
props.put("mail.smtp.host", "localhost");
Edit
To summarize the large number of comments: The additional problem came from fact that mock-javamail
was on the classpath.