Skip to content

Commit bdd11d7

Browse files
committed
Add email integration test
1 parent 30a52fe commit bdd11d7

File tree

4 files changed

+77
-1
lines changed

4 files changed

+77
-1
lines changed

plume-mail/pom.xml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,26 @@
5858
<artifactId>assertj-core</artifactId>
5959
<scope>test</scope>
6060
</dependency>
61+
<dependency>
62+
<groupId>com.github.kirviq</groupId>
63+
<artifactId>dumbster</artifactId>
64+
<version>1.7.1</version>
65+
<scope>test</scope>
66+
</dependency>
67+
<dependency>
68+
<groupId>org.projectlombok</groupId>
69+
<artifactId>lombok</artifactId>
70+
<scope>test</scope>
71+
</dependency>
72+
<dependency>
73+
<groupId>ch.qos.logback</groupId>
74+
<artifactId>logback-classic</artifactId>
75+
<scope>test</scope>
76+
</dependency>
77+
<dependency>
78+
<groupId>com.coreoz</groupId>
79+
<artifactId>plume-conf</artifactId>
80+
</dependency>
6181
</dependencies>
6282

6383
<dependencyManagement>
@@ -72,4 +92,4 @@
7292
</dependencies>
7393
</dependencyManagement>
7494

75-
</project>
95+
</project>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.coreoz.plume.mail;
2+
3+
import com.coreoz.plume.conf.guice.GuiceConfModule;
4+
import com.coreoz.plume.mail.guice.GuiceMailModule;
5+
import com.dumbster.smtp.SimpleSmtpServer;
6+
import com.dumbster.smtp.SmtpMessage;
7+
import com.google.inject.Guice;
8+
import lombok.SneakyThrows;
9+
import org.assertj.core.api.Assertions;
10+
import org.junit.Test;
11+
import org.simplejavamail.api.email.Email;
12+
import org.simplejavamail.api.mailer.Mailer;
13+
import org.simplejavamail.email.EmailBuilder;
14+
15+
import java.util.List;
16+
17+
public class MailIntegrationTest {
18+
@SneakyThrows
19+
@Test
20+
public void when_email_is_sent_smtp_server_must_receive_it() {
21+
Mailer mailer = Guice.createInjector(new GuiceMailModule(), new GuiceConfModule()).getInstance(Mailer.class);
22+
try (SimpleSmtpServer dumbster = SimpleSmtpServer.start(2525)) {
23+
Email newEmail = EmailBuilder
24+
.startingBlank()
25+
.to("Russell Powell", "rpowell0@whitehouse.gov")
26+
.withSubject("Plume")
27+
.withPlainText("You should check this Java library out!")
28+
.buildEmail();
29+
mailer.sendMail(newEmail, false);
30+
31+
List<SmtpMessage> emails = dumbster.getReceivedEmails();
32+
Assertions.assertThat(emails).hasSize(1);
33+
SmtpMessage email = emails.get(0);
34+
Assertions.assertThat(email.getHeaderValue("To")).isEqualTo("Russell Powell <rpowell0@whitehouse.gov>");
35+
Assertions.assertThat(email.getHeaderValue("Subject")).isEqualTo("Plume");
36+
Assertions.assertThat(email.getBody()).isEqualTo("You should check this Java library out!");
37+
}
38+
}
39+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
mail."smtp.host" = "127.0.0.1"
2+
mail."smtp.port" = 2525
3+
mail."defaults.from.address" = "contact@your-company.com"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder>
5+
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
6+
</encoder>
7+
</appender>
8+
9+
<logger name="com.coreoz" level="DEBUG"/>
10+
11+
<root level="INFO">
12+
<appender-ref ref="STDOUT" />
13+
</root>
14+
</configuration>

0 commit comments

Comments
 (0)