Merge pull request #5 from kemitix/issue-1-nested-multipart-mails
Issue #1: Add support for nested multipart messages
This commit is contained in:
commit
e9adcbb872
5 changed files with 115 additions and 48 deletions
6
pom.xml
6
pom.xml
|
@ -57,6 +57,12 @@
|
|||
<version>1.10.19</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codemonkey.simplejavamail</groupId>
|
||||
<artifactId>simple-java-mail</artifactId>
|
||||
<version>2.5.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -269,7 +269,12 @@ public final class WiserAssertions {
|
|||
throws MessagingException, IOException {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < mimeMultipart.getCount(); i++) {
|
||||
sb.append(mimeMultipart.getBodyPart(i).getContent());
|
||||
Object content = mimeMultipart.getBodyPart(i).getContent();
|
||||
if (content instanceof MimeMultipart) {
|
||||
sb.append(getMimeMultipartAsString((MimeMultipart) content));
|
||||
} else {
|
||||
sb.append(content);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
package net.kemitix.wiser.assertions;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.subethamail.wiser.Wiser;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.mail.Session;
|
||||
|
||||
/**
|
||||
* Abstract base class for wiser tests.
|
||||
*
|
||||
* @author pcampbell
|
||||
*/
|
||||
public abstract class AbstractWiserTest {
|
||||
|
||||
/**
|
||||
* Test mail server port.
|
||||
*/
|
||||
protected static final int PORT = 12345;
|
||||
|
||||
/**
|
||||
* Test mail server.
|
||||
*/
|
||||
private Wiser wiser;
|
||||
|
||||
/**
|
||||
* Prepare each test.
|
||||
*/
|
||||
@Before
|
||||
@SuppressWarnings("magicnumber")
|
||||
public void setUp() {
|
||||
wiser = new Wiser(PORT);
|
||||
wiser.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up after each test.
|
||||
*/
|
||||
@After
|
||||
public void tearDown() {
|
||||
wiser.stop();
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates the WiserAssertions.
|
||||
*
|
||||
* @return the wiser assertions
|
||||
*/
|
||||
protected WiserAssertions getAssertions() {
|
||||
return WiserAssertions.assertReceivedMessage(wiser);
|
||||
}
|
||||
|
||||
protected Session getSession() {
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("mail.transport.protocol", "smtp");
|
||||
properties.setProperty("mail.smtp.host", "localhost");
|
||||
properties.setProperty("mail.smtp.port", "" + WiserAssertionsTest.PORT);
|
||||
Session session = Session.getDefaultInstance(properties);
|
||||
return session;
|
||||
}
|
||||
|
||||
}
|
37
src/test/java/net/kemitix/wiser/assertions/Issue1Test.java
Normal file
37
src/test/java/net/kemitix/wiser/assertions/Issue1Test.java
Normal file
|
@ -0,0 +1,37 @@
|
|||
package net.kemitix.wiser.assertions;
|
||||
|
||||
import org.codemonkey.simplejavamail.Email;
|
||||
import org.codemonkey.simplejavamail.Mailer;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.mail.Message;
|
||||
|
||||
/**
|
||||
* Regression test for issue #1.
|
||||
*
|
||||
* @see https://github.com/kemitix/wiser-assertions/issues/1
|
||||
* @author pcampbell
|
||||
*/
|
||||
public class Issue1Test extends AbstractWiserTest {
|
||||
|
||||
/**
|
||||
* Test {@link WiserAssertions#withContentContains(String)} where the nested
|
||||
* multi-part message contains the expected text.
|
||||
*/
|
||||
@Test
|
||||
public void shouldParseNestedMultiPartEmails() {
|
||||
//given
|
||||
final Email email = new Email();
|
||||
email.addRecipient("Carl", "carl@b.com",
|
||||
Message.RecipientType.TO);
|
||||
email.setFromAddress("Bob", "bob@a.com");
|
||||
email.setSubject("Subject");
|
||||
email.setText("Hi Carl,\n\nA new message was just posted.");
|
||||
Mailer mailer = new Mailer(getSession());
|
||||
//when
|
||||
mailer.sendMail(email);
|
||||
//then
|
||||
getAssertions().withContentContains("Hi Carl");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,21 +1,17 @@
|
|||
package net.kemitix.wiser.assertions;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.subethamail.wiser.Wiser;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.mail.Message;
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.Multipart;
|
||||
import javax.mail.Session;
|
||||
import javax.mail.Transport;
|
||||
import javax.mail.internet.InternetAddress;
|
||||
import javax.mail.internet.MimeBodyPart;
|
||||
|
@ -27,7 +23,7 @@ import javax.mail.internet.MimeMultipart;
|
|||
*
|
||||
* @author pcampbell
|
||||
*/
|
||||
public class WiserAssertionsTest {
|
||||
public class WiserAssertionsTest extends AbstractWiserTest {
|
||||
|
||||
/**
|
||||
* Logger.
|
||||
|
@ -35,34 +31,6 @@ public class WiserAssertionsTest {
|
|||
private static final Logger LOG
|
||||
= Logger.getLogger(WiserAssertionsTest.class.getName());
|
||||
|
||||
/**
|
||||
* Test mail server.
|
||||
*/
|
||||
private Wiser wiser;
|
||||
|
||||
/**
|
||||
* Prepare each test.
|
||||
*/
|
||||
@Before
|
||||
@SuppressWarnings("magicnumber")
|
||||
public void setUp() {
|
||||
wiser = new Wiser(PORT);
|
||||
wiser.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test mail server port.
|
||||
*/
|
||||
private static final int PORT = 12345;
|
||||
|
||||
/**
|
||||
* Clean up after each test.
|
||||
*/
|
||||
@After
|
||||
public void tearDown() {
|
||||
wiser.stop();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a mime multipart message to the Wiser server.
|
||||
*
|
||||
|
@ -76,12 +44,8 @@ public class WiserAssertionsTest {
|
|||
final String to,
|
||||
final String subject,
|
||||
final String body) {
|
||||
Properties properties = new Properties();
|
||||
properties.setProperty("mail.smtp.host", "localhost");
|
||||
properties.setProperty("mail.smtp.port", "" + PORT);
|
||||
Session session = Session.getDefaultInstance(properties);
|
||||
try {
|
||||
MimeMessage message = new MimeMessage(session);
|
||||
MimeMessage message = new MimeMessage(getSession());
|
||||
message.setFrom(new InternetAddress(from));
|
||||
message.setRecipients(Message.RecipientType.TO, to);
|
||||
message.setSubject(subject, "UTF-8");
|
||||
|
@ -96,15 +60,6 @@ public class WiserAssertionsTest {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates the WiserAssertions.
|
||||
*
|
||||
* @return the wiser assertions
|
||||
*/
|
||||
private WiserAssertions getAssertions() {
|
||||
return WiserAssertions.assertReceivedMessage(wiser);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test {@link WiserAssertions#withContent(java.lang.String)} where the
|
||||
* content of the email matches.
|
||||
|
|
Loading…
Reference in a new issue