diff --git a/endpoints/citrus-mail/src/main/java/org/citrusframework/mail/server/MailServer.java b/endpoints/citrus-mail/src/main/java/org/citrusframework/mail/server/MailServer.java index 2d17d0afa8..9d3a72d285 100644 --- a/endpoints/citrus-mail/src/main/java/org/citrusframework/mail/server/MailServer.java +++ b/endpoints/citrus-mail/src/main/java/org/citrusframework/mail/server/MailServer.java @@ -16,14 +16,6 @@ package org.citrusframework.mail.server; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Stack; -import java.util.stream.Collectors; -import javax.xml.transform.Source; - import com.icegreen.greenmail.mail.MailAddress; import com.icegreen.greenmail.user.GreenMailUser; import com.icegreen.greenmail.user.UserException; @@ -38,18 +30,19 @@ import org.citrusframework.mail.message.CitrusMailMessageHeaders; import org.citrusframework.mail.message.MailMessage; import org.citrusframework.mail.message.MailMessageConverter; -import org.citrusframework.mail.model.AcceptResponse; -import org.citrusframework.mail.model.AttachmentPart; -import org.citrusframework.mail.model.BodyPart; -import org.citrusframework.mail.model.MailMarshaller; -import org.citrusframework.mail.model.MailRequest; -import org.citrusframework.mail.model.MailResponse; +import org.citrusframework.mail.model.*; import org.citrusframework.message.Message; import org.citrusframework.server.AbstractServer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.mail.javamail.MimeMailMessage; +import javax.xml.transform.Source; +import java.util.*; +import java.util.stream.Collectors; + +import static java.util.Objects.isNull; + /** * Mail server implementation starts new SMTP server instance and listens for incoming mail messages. Incoming mail messages * are converted to XML representation and forwarded to some message endpoint adapter (e.g. forwarding mail content to @@ -66,41 +59,63 @@ */ public class MailServer extends AbstractServer { - /** Logger */ + /** + * Logger + */ private static final Logger logger = LoggerFactory.getLogger(MailServer.class); - /** Server port */ + /** + * Server port + */ private int port = 25; - /** XML message mapper */ + /** + * XML message mapper + */ private MailMarshaller marshaller = new MailMarshaller(); - /** Mail message converter */ + /** + * Mail message converter + */ private MailMessageConverter messageConverter = new MailMessageConverter(); - /** Java mail session */ + /** + * Java mail session + */ private Session mailSession; - /** Java mail properties */ + /** + * Java mail properties + */ private Properties javaMailProperties = new Properties(); - /** Should accept automatically or handled via test case */ + /** + * Should accept automatically or handled via test case + */ private boolean autoAccept = true; - /** Requires users to properly authenticate with the server */ + /** + * Requires users to properly authenticate with the server + */ private boolean authRequired = true; - /** Should split multipart messages for each mime part */ + /** + * Should split multipart messages for each mime part + */ private boolean splitMultipart = false; private final List knownUsers = new ArrayList<>(); - /** Smtp server instance */ + /** + * Smtp server instance + */ private GreenMail smtpServer; @Override protected void startup() { - smtpServer = new GreenMail(new ServerSetup(port, null, "smtp")); + if (isNull(smtpServer)) { + smtpServer = new GreenMail(new ServerSetup(port, null, "smtp")); + } if (!authRequired) { smtpServer.getManagers().getSmtpManager().getUserManager().setAuthRequired(false); @@ -131,26 +146,26 @@ protected void startup() { private void addKnownUsers(UserManager userManager) { knownUsers.stream() - .map(userSpec -> userSpec.split(":")) - .map(credentials -> { - if (credentials.length > 3) { - return new String[] { credentials[0], credentials[1], credentials[2] }; - } else if (credentials.length == 2) { - return new String[] { credentials[0], credentials[1], credentials[0] }; - } else if (credentials.length == 1) { - return new String[] { credentials[0], credentials[0], credentials[0] }; - } else { - return credentials; - } - }) - .filter(credentials -> credentials.length == 3) - .forEach(credentials -> { - try { - userManager.createUser(credentials[0], credentials[1], credentials[2]); - } catch (UserException e) { - logger.warn(String.format("Failed to create known user: %s:%s:%s", credentials[0], credentials[1], credentials[2])); - } - }); + .map(userSpec -> userSpec.split(":")) + .map(credentials -> { + if (credentials.length > 3) { + return new String[]{credentials[0], credentials[1], credentials[2]}; + } else if (credentials.length == 2) { + return new String[]{credentials[0], credentials[1], credentials[0]}; + } else if (credentials.length == 1) { + return new String[]{credentials[0], credentials[0], credentials[0]}; + } else { + return credentials; + } + }) + .filter(credentials -> credentials.length == 3) + .forEach(credentials -> { + try { + userManager.createUser(credentials[0], credentials[1], credentials[2]); + } catch (UserException e) { + logger.warn(String.format("Failed to create known user: %s:%s:%s", credentials[0], credentials[1], credentials[2])); + } + }); } @Override @@ -165,7 +180,7 @@ public boolean accept(String from, List recipients) { Message response = getEndpointAdapter().handleMessage( MailMessage.accept(from, recipients.stream().map(MailAddress::getEmail).collect(Collectors.joining(","))) - .marshaller(marshaller)); + .marshaller(marshaller)); if (response == null || response.getPayload() == null) { throw new CitrusRuntimeException("Did not receive accept response. Missing accept response because autoAccept is disabled."); @@ -271,6 +286,7 @@ public synchronized Session getSession() { /** * Users must authenticate properly with the server. + * * @return */ public boolean isAuthRequired() { @@ -279,6 +295,7 @@ public boolean isAuthRequired() { /** * Enable/disable the user authentication on this server. + * * @param authRequired */ public void setAuthRequired(boolean authRequired) { @@ -385,6 +402,7 @@ public void setMessageConverter(MailMessageConverter messageConverter) { /** * Gets the known users. + * * @return */ public List getKnownUsers() { @@ -393,6 +411,7 @@ public List getKnownUsers() { /** * Sets the known users. + * * @param knownUsers */ public void setKnownUsers(List knownUsers) { @@ -401,6 +420,7 @@ public void setKnownUsers(List knownUsers) { /** * Adds a new user known to this mail server. + * * @param email * @param login * @param password diff --git a/endpoints/citrus-mail/src/test/java/org/citrusframework/mail/server/MailServerTest.java b/endpoints/citrus-mail/src/test/java/org/citrusframework/mail/server/MailServerTest.java index 0c7f0b3c31..480323185d 100644 --- a/endpoints/citrus-mail/src/test/java/org/citrusframework/mail/server/MailServerTest.java +++ b/endpoints/citrus-mail/src/test/java/org/citrusframework/mail/server/MailServerTest.java @@ -16,12 +16,9 @@ package org.citrusframework.mail.server; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Date; - +import com.icegreen.greenmail.Managers; import com.icegreen.greenmail.mail.MailAddress; +import com.icegreen.greenmail.util.GreenMail; import jakarta.mail.MessagingException; import jakarta.mail.internet.MimeMessage; import org.citrusframework.endpoint.EndpointAdapter; @@ -33,15 +30,18 @@ import org.citrusframework.util.FileUtils; import org.citrusframework.util.TestUtils; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.when; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.Date; + +import static org.mockito.Mockito.*; +import static org.mockito.MockitoAnnotations.openMocks; +import static org.testng.Assert.*; /** * @author Christoph Deppisch @@ -53,39 +53,52 @@ public class MailServerTest { @Mock private EndpointAdapter endpointAdapterMock; + @Mock + private GreenMail greenMailMock; + private MailServer fixture; @BeforeMethod void beforeMethodSetup() { - mockitoContext = MockitoAnnotations.openMocks(this); + mockitoContext = openMocks(this); fixture = new MailServer(); fixture.setEndpointAdapter(endpointAdapterMock); } @Test - void testTextMessage() throws IOException, MessagingException { + void startupRespectsCustomGreenMail() { + doReturn(new Managers()).when(greenMailMock).getManagers(); + fixture.setSmtpServer(greenMailMock); + + fixture.startup(); + + assertEquals(fixture.getSmtpServer(), greenMailMock); + } + + @Test + void testTextMessage() throws MessagingException { doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com,copy@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "foobar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), "secret@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "reply@mail.com"); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Testmail"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain"); + assertNotNull(message.getPayload()); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com,copy@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "foobar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), "secret@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "reply@mail.com"); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Testmail"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain"); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("text_mail.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("text_mail.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; @@ -96,43 +109,43 @@ void testTextMessage() throws IOException, MessagingException { fixture.deliver(message); // Because of autoAccept = true - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test - void testMultipartMessage() throws IOException, MessagingException { + void testMultipartMessage() throws MessagingException { final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "foo@mail.com"); + assertNotNull(message.getPayload()); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "foo@mail.com"); // compare the Date as a Date rather than a String, otherwise this test fails outside the "+1" timezone - Date actualDate = dateFormat.parse((String)message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + Date actualDate = dateFormat.parse((String) message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); Date expectedDateDate = dateFormat.parse("2006-10-26T13:10:50+0200"); - Assert.assertEquals(actualDate, expectedDateDate); + assertEquals(actualDate, expectedDateDate); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Multipart Testmail"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "multipart/mixed"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Multipart Testmail"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "multipart/mixed"); try { - Assert.assertEquals( + assertEquals( TestUtils.normalizeLineEndings( - message.getPayload(String.class).replaceAll("\\s", "") + message.getPayload(String.class).replaceAll("\\s", "") ), TestUtils.normalizeLineEndings( - FileUtils.readToString(Resources.create("multipart_mail.xml", MailServer.class)).replaceAll("\\s", "") + FileUtils.readToString(Resources.create("multipart_mail.xml", MailServer.class)).replaceAll("\\s", "") ) ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; @@ -142,39 +155,39 @@ void testMultipartMessage() throws IOException, MessagingException { fixture.deliver(message); // Because of autoAccept = true - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test - void testBinaryMessage() throws IOException, MessagingException { + void testBinaryMessage() throws MessagingException { final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID), "<52A1988D.2060403@foo.bar>"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "Foo "); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "FooBar "); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "Foo "); + assertNotNull(message.getPayload()); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID), "<52A1988D.2060403@foo.bar>"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "Foo "); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "FooBar "); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "Foo "); // compare the Date as a Date rather than a String, otherwsie this test fails outside the "+1" timezone - Date actualDate = dateFormat.parse((String)message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + Date actualDate = dateFormat.parse((String) message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); Date expectedDateDate = dateFormat.parse("2013-12-06T10:27:41+0100"); - Assert.assertEquals(actualDate, expectedDateDate); + assertEquals(actualDate, expectedDateDate); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "This is brand_logo.png"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "multipart/mixed"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "This is brand_logo.png"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "multipart/mixed"); try { - Assert.assertEquals( + assertEquals( message.getPayload(String.class).replaceAll("\\s", ""), FileUtils.readToString(Resources.create("binary_mail.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; @@ -184,7 +197,7 @@ void testBinaryMessage() throws IOException, MessagingException { fixture.deliver(message); // Because of autoAccept = true - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test @@ -192,24 +205,24 @@ void testAutoAcceptDisabled() { doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); + assertNotNull(message.getPayload()); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("accept-request.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("accept-request.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return new DefaultMessage( - FileUtils.readToString(Resources.create("accept-response.xml",MailServer.class)) + FileUtils.readToString(Resources.create("accept-response.xml", MailServer.class)) ); }).when(endpointAdapterMock).handleMessage(any(Message.class)); fixture.setAutoAccept(false); - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test @@ -219,9 +232,9 @@ void testAutoAcceptDisabledWithTimeout() { try { fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com"))); - Assert.fail("Missing runtime exception due to missing accept response"); + fail("Missing runtime exception due to missing accept response"); } catch (CitrusRuntimeException e) { - Assert.assertTrue(e.getMessage().startsWith("Did not receive accept response")); + assertTrue(e.getMessage().startsWith("Did not receive accept response")); } } @@ -232,37 +245,37 @@ void testAutoAcceptDisabledWithInvalidAcceptResponse() { try { fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com"))); - Assert.fail("Missing runtime exception due to invalid accept response"); + fail("Missing runtime exception due to invalid accept response"); } catch (CitrusRuntimeException e) { - Assert.assertTrue(e.getMessage().startsWith("Unable to read accept response")); + assertTrue(e.getMessage().startsWith("Unable to read accept response")); } } @Test - void testTextMessageSplitting() throws IOException, MessagingException { + void testTextMessageSplitting() throws MessagingException { fixture.setSplitMultipart(true); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com,copy@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "foobar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), "secret@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "reply@mail.com"); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Testmail"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain"); + assertNotNull(message.getPayload()); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com,copy@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "foobar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), "secret@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "reply@mail.com"); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Testmail"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain"); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("text_mail.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("text_mail.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; @@ -272,11 +285,11 @@ void testTextMessageSplitting() throws IOException, MessagingException { fixture.deliver(message); // Because of autoAccept = true - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test - void testMultipartMessageSplitting() throws IOException, MessagingException { + void testMultipartMessageSplitting() throws MessagingException { final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); fixture.setSplitMultipart(true); @@ -284,63 +297,63 @@ void testMultipartMessageSplitting() throws IOException, MessagingException { doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "foo@mail.com"); + assertNotNull(message.getPayload()); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "foo@mail.com"); // compare dates as Date rather than String otherwise this test fails outside the "+1" timezone - Date actualDate = dateFormat.parse((String)message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + Date actualDate = dateFormat.parse((String) message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); Date expectedDateDate = dateFormat.parse("2006-10-26T13:10:50+0200"); - Assert.assertEquals(actualDate, expectedDateDate); + assertEquals(actualDate, expectedDateDate); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Multipart Testmail"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain; charset=utf-8"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Multipart Testmail"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain; charset=utf-8"); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("multipart_mail_1.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("multipart_mail_1.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; }).doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "foo@mail.com"); + assertNotNull(message.getPayload()); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "foo@mail.com"); // compare dates as Date rather than String otherwise this test fails outside the "+1" timezone - Date actualDate = dateFormat.parse((String)message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + Date actualDate = dateFormat.parse((String) message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); Date expectedDateDate = dateFormat.parse("2006-10-26T13:10:50+0200"); - Assert.assertEquals(actualDate, expectedDateDate); + assertEquals(actualDate, expectedDateDate); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Multipart Testmail"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/html; charset=utf-8"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FILENAME), "index.html"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Multipart Testmail"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/html; charset=utf-8"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FILENAME), "index.html"); try { - Assert.assertEquals( + assertEquals( TestUtils.normalizeLineEndings( - message.getPayload(String.class).replaceAll("\\s", "") + message.getPayload(String.class).replaceAll("\\s", "") ), TestUtils.normalizeLineEndings( - FileUtils.readToString(Resources.create("multipart_mail_2.xml", MailServer.class)).replaceAll("\\s", "") + FileUtils.readToString(Resources.create("multipart_mail_2.xml", MailServer.class)).replaceAll("\\s", "") ) ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; @@ -350,11 +363,11 @@ void testMultipartMessageSplitting() throws IOException, MessagingException { fixture.deliver(message); // Because of autoAccept = true - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test - void testBinaryMessageSplitting() throws IOException, MessagingException { + void testBinaryMessageSplitting() throws MessagingException { final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); fixture.setSplitMultipart(true); @@ -362,59 +375,59 @@ void testBinaryMessageSplitting() throws IOException, MessagingException { doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID), "<52A1988D.2060403@foo.bar>"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "Foo "); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "FooBar "); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "Foo "); + assertNotNull(message.getPayload()); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID), "<52A1988D.2060403@foo.bar>"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "Foo "); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "FooBar "); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "Foo "); // compare dates as Date rather than String otherwise this test fails outside the "+1" timezone - Date actualDate = dateFormat.parse((String)message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + Date actualDate = dateFormat.parse((String) message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); Date expectedDateDate = dateFormat.parse("2013-12-06T10:27:41+0100"); - Assert.assertEquals(actualDate, expectedDateDate); + assertEquals(actualDate, expectedDateDate); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "This is brand_logo.png"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain; charset=ISO-8859-15; format=flowed"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "This is brand_logo.png"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain; charset=ISO-8859-15; format=flowed"); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("binary_mail_1.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("binary_mail_1.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; }).doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID), "<52A1988D.2060403@foo.bar>"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "Foo "); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "FooBar "); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "Foo "); + assertNotNull(message.getPayload()); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID), "<52A1988D.2060403@foo.bar>"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "Foo "); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "FooBar "); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), ""); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "Foo "); // compare dates as Date rather than String otherwise this test fails outside the "+1" timezone - Date actualDate = dateFormat.parse((String)message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + Date actualDate = dateFormat.parse((String) message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); Date expectedDateDate = dateFormat.parse("2013-12-06T10:27:41+0100"); - Assert.assertEquals(actualDate, expectedDateDate); + assertEquals(actualDate, expectedDateDate); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "This is brand_logo.png"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "image/png"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FILENAME), "brand_logo.png"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "This is brand_logo.png"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "image/png"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FILENAME), "brand_logo.png"); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("binary_mail_2.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("binary_mail_2.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return null; @@ -424,32 +437,32 @@ void testBinaryMessageSplitting() throws IOException, MessagingException { fixture.deliver(message); // Because of autoAccept = true - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); } @Test - void testSimulateError() throws IOException, MessagingException { + void testSimulateError() throws MessagingException { doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; - Assert.assertNotNull(message.getPayload()); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com,copy@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "foobar@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), "secret@mail.com"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "reply@mail.com"); - Assert.assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Testmail"); - Assert.assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain"); + assertNotNull(message.getPayload()); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_MESSAGE_ID)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_FROM), "foo@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_TO), "bar@mail.com,copy@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CC), "foobar@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_BCC), "secret@mail.com"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_REPLY_TO), "reply@mail.com"); + assertNull(message.getHeader(CitrusMailMessageHeaders.MAIL_DATE)); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_SUBJECT), "Testmail"); + assertEquals(message.getHeader(CitrusMailMessageHeaders.MAIL_CONTENT_TYPE), "text/plain"); try { - Assert.assertEquals( - message.getPayload(String.class).replaceAll("\\s", ""), - FileUtils.readToString(Resources.create("text_mail.xml", MailServer.class)).replaceAll("\\s", "") + assertEquals( + message.getPayload(String.class).replaceAll("\\s", ""), + FileUtils.readToString(Resources.create("text_mail.xml", MailServer.class)).replaceAll("\\s", "") ); } catch (IOException e) { - Assert.fail(e.getMessage()); + fail(e.getMessage()); } return new DefaultMessage( @@ -457,13 +470,13 @@ void testSimulateError() throws IOException, MessagingException { }).when(endpointAdapterMock).handleMessage(any(Message.class)); MimeMessage message = new MimeMessage(fixture.getSession(), Resources.create("text_mail.txt", MailServer.class).getInputStream()); - Assert.assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); + assertTrue(fixture.accept("foo@mail.com", Collections.singletonList(new MailAddress("bar@mail.com")))); try { fixture.deliver(message); throw new CitrusRuntimeException("Missing reject exception due to simulated error"); } catch (CitrusRuntimeException e) { - Assert.assertEquals(e.getMessage(), "443 Failed!"); + assertEquals(e.getMessage(), "443 Failed!"); } }