package com.baeldung; import com.baeldung.boot.Application; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.subethamail.wiser.Wiser; import org.subethamail.wiser.WiserMessage; import javax.mail.MessagingException; import java.io.IOException; import java.util.List; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = Application.class) public class SpringBootMailIntegrationTest { @Autowired private JavaMailSender javaMailSender; private Wiser wiser; private String userTo = "user2@localhost"; private String userFrom = "user1@localhost"; private String subject = "Test subject"; private String textMail = "Text subject mail"; @Before public void setUp() throws Exception { final int TEST_PORT = 8025; wiser = new Wiser(TEST_PORT); wiser.start(); } @After public void tearDown() throws Exception { wiser.stop(); } @Test public void givenMail_whenSendAndReceived_thenCorrect() throws Exception { SimpleMailMessage message = composeEmailMessage(); javaMailSender.send(message); List messages = wiser.getMessages(); assertThat(messages, hasSize(1)); WiserMessage wiserMessage = messages.get(0); assertEquals(userFrom, wiserMessage.getEnvelopeSender()); assertEquals(userTo, wiserMessage.getEnvelopeReceiver()); assertEquals(subject, getSubject(wiserMessage)); assertEquals(textMail, getMessage(wiserMessage)); } private String getMessage(WiserMessage wiserMessage) throws MessagingException, IOException { return wiserMessage.getMimeMessage().getContent().toString().trim(); } private String getSubject(WiserMessage wiserMessage) throws MessagingException { return wiserMessage.getMimeMessage().getSubject(); } private SimpleMailMessage composeEmailMessage() { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setTo(userTo); mailMessage.setReplyTo(userFrom); mailMessage.setFrom(userFrom); mailMessage.setSubject(subject); mailMessage.setText(textMail); return mailMessage; } }