WiserAssertionsTest: added
Signed-off-by: Paul Campbell <pcampbell@kemitix.net>
This commit is contained in:
parent
1215fe8fa9
commit
bee688fe9f
1 changed files with 288 additions and 0 deletions
|
@ -0,0 +1,288 @@
|
||||||
|
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;
|
||||||
|
import javax.mail.internet.MimeMessage;
|
||||||
|
import javax.mail.internet.MimeMultipart;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link WiserAssertions}.
|
||||||
|
*
|
||||||
|
* @author pcampbell
|
||||||
|
*/
|
||||||
|
public class WiserAssertionsTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logger.
|
||||||
|
*/
|
||||||
|
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.
|
||||||
|
*
|
||||||
|
* @param from the sender
|
||||||
|
* @param to the recipient
|
||||||
|
* @param subject the subject of the email
|
||||||
|
* @param body the body of the email
|
||||||
|
*/
|
||||||
|
private void sendMimeMultipartMessage(
|
||||||
|
final String from,
|
||||||
|
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);
|
||||||
|
message.setFrom(new InternetAddress(from));
|
||||||
|
message.setRecipients(Message.RecipientType.TO, to);
|
||||||
|
message.setSubject(subject, "UTF-8");
|
||||||
|
final Multipart mimeMultipart = new MimeMultipart();
|
||||||
|
final MimeBodyPart mimeBodyPart = new MimeBodyPart();
|
||||||
|
mimeBodyPart.setText(body);
|
||||||
|
mimeMultipart.addBodyPart(mimeBodyPart);
|
||||||
|
message.setContent(mimeMultipart);
|
||||||
|
Transport.send(message);
|
||||||
|
} catch (MessagingException ex) {
|
||||||
|
LOG.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testContentMatches() {
|
||||||
|
//given
|
||||||
|
final String body = "message body";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", "subject", body);
|
||||||
|
//then
|
||||||
|
getAssertions().withContent(body);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withContent(java.lang.String)} where the
|
||||||
|
* content of the email does not match.
|
||||||
|
*/
|
||||||
|
@Test(expected = AssertionError.class)
|
||||||
|
public void testContentNotMatches() {
|
||||||
|
//given
|
||||||
|
final String body = "message body";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", "subject", body);
|
||||||
|
//then
|
||||||
|
getAssertions().withContent("Other body");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withContentContains(String)} where the
|
||||||
|
* content of the email matches.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testContentContainsMatches() {
|
||||||
|
//given
|
||||||
|
final String body = "message body";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", "subject", body);
|
||||||
|
//then
|
||||||
|
getAssertions().withContentContains("age bo");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withContentContains(String)} where the
|
||||||
|
* content of the email does not match.
|
||||||
|
*/
|
||||||
|
@Test(expected = AssertionError.class)
|
||||||
|
public void testContentContainsNotMatches() {
|
||||||
|
//given
|
||||||
|
final String body = "message body";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", "subject", body);
|
||||||
|
//then
|
||||||
|
getAssertions().withContentContains("agebo");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#from(java.lang.String)} can detect when mail
|
||||||
|
* is sent from a user.
|
||||||
|
*
|
||||||
|
* @throws java.io.IOException if error delivering test message
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testFromMatches() throws IOException {
|
||||||
|
//given
|
||||||
|
final String from = "bob@a.com";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage(from, "to", "subject", "body");
|
||||||
|
//then
|
||||||
|
getAssertions().from(from);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#from(java.lang.String)} can detect when mail
|
||||||
|
* is not sent from a user.
|
||||||
|
*/
|
||||||
|
@Test(expected = AssertionError.class)
|
||||||
|
public void testFromNotMatches() {
|
||||||
|
//given
|
||||||
|
final String from = "bob@a.com";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage(from, "to", "subject", "body");
|
||||||
|
//then
|
||||||
|
getAssertions().from("lisa@c.com");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#assertReceivedMessage(Wiser)} creates and
|
||||||
|
* returns a WiserAssertions instance.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testInstantiate() {
|
||||||
|
assertNotNull(getAssertions());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withSubjectContains(java.lang.String)} where
|
||||||
|
* the subject contains the expected fragment.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSubjectContainsMatches() {
|
||||||
|
//given
|
||||||
|
final String fragment = "foo";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", "subject " + fragment + " tail", "body");
|
||||||
|
//then
|
||||||
|
getAssertions().withSubjectContains(fragment);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withSubjectContains(java.lang.String)} where
|
||||||
|
* the subject does not contain the expected fragment.
|
||||||
|
*/
|
||||||
|
@Test(expected = AssertionError.class)
|
||||||
|
public void testSubjectContainsNotMatches() {
|
||||||
|
//given
|
||||||
|
final String fragment = "foo";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", "subject tail", "body");
|
||||||
|
//then
|
||||||
|
getAssertions().withSubjectContains(fragment);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withSubject(java.lang.String)} where the
|
||||||
|
* message has the subject expected.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSubjectMatches() {
|
||||||
|
//given
|
||||||
|
final String subject = "message subject";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", subject, "body");
|
||||||
|
//then
|
||||||
|
getAssertions().withSubject(subject);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#withSubject(java.lang.String)} where the
|
||||||
|
* message does not have the subject expected.
|
||||||
|
*/
|
||||||
|
@Test(expected = AssertionError.class)
|
||||||
|
public void testSubjectNotMatches() {
|
||||||
|
//given
|
||||||
|
final String subject = "message subject";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", "to", subject, "body");
|
||||||
|
//then
|
||||||
|
getAssertions().withSubject("other subject");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#from(java.lang.String)} can detect when mail
|
||||||
|
* is sent to a user.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testToMatches() {
|
||||||
|
//given
|
||||||
|
final String to = "carl@b.com";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", to, "subject", "body");
|
||||||
|
//then
|
||||||
|
getAssertions().to(to);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test {@link WiserAssertions#from(java.lang.String)} can detect when mail
|
||||||
|
* is not sent from a user.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Test(expected = AssertionError.class)
|
||||||
|
public void testToNotMatches() {
|
||||||
|
//given
|
||||||
|
final String to = "carl@b.com";
|
||||||
|
//when
|
||||||
|
sendMimeMultipartMessage("from", to, "subject", "body");
|
||||||
|
//then
|
||||||
|
getAssertions().to("bob@a.com");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue