Fix EmailNotificationChannelTest

* Use SubEthaSMTP instead of Dumbster
* Enable test on Mac OS X
This commit is contained in:
Evgeny Mandrikov 2011-10-24 19:24:17 +04:00
parent 4cade605cd
commit 176e46458b
2 changed files with 50 additions and 45 deletions

View File

@ -40,9 +40,9 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>dumbster</groupId> <groupId>org.subethamail</groupId>
<artifactId>dumbster</artifactId> <artifactId>subethasmtp</artifactId>
<version>1.6</version> <version>3.1.6</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -21,38 +21,38 @@ package org.sonar.plugins.emailnotifications;
import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.nullValue;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.junit.Assume.assumeThat;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import java.io.IOException; import java.io.IOException;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.util.List;
import javax.mail.internet.MimeMessage;
import org.apache.commons.lang.SystemUtils;
import org.apache.commons.mail.EmailException; import org.apache.commons.mail.EmailException;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.sonar.plugins.emailnotifications.api.EmailMessage; import org.sonar.plugins.emailnotifications.api.EmailMessage;
import org.subethamail.wiser.Wiser;
import com.dumbster.smtp.SimpleSmtpServer; import org.subethamail.wiser.WiserMessage;
import com.dumbster.smtp.SmtpMessage;
public class EmailNotificationChannelTest { public class EmailNotificationChannelTest {
private static int port; private static int port;
private SimpleSmtpServer server; private Wiser server;
private EmailConfiguration configuration; private EmailConfiguration configuration;
private EmailNotificationChannel channel; private EmailNotificationChannel channel;
@BeforeClass @BeforeClass
public static void selectPort() { public static void selectPort() {
assumeThat(SystemUtils.IS_OS_MAC_OSX, is(false));
port = getNextAvailablePort(); port = getNextAvailablePort();
} }
@ -69,16 +69,17 @@ public class EmailNotificationChannelTest {
@Before @Before
public void setUp() { public void setUp() {
server = SimpleSmtpServer.start(port); server = new Wiser();
server.setPort(port);
server.start();
configuration = mock(EmailConfiguration.class); configuration = mock(EmailConfiguration.class);
channel = new EmailNotificationChannel(configuration, null, null); channel = new EmailNotificationChannel(configuration, null, null);
} }
@After @After
public void tearDown() { public void tearDown() {
if (!server.isStopped()) { server.stop();
server.stop();
}
} }
@Test @Test
@ -86,15 +87,15 @@ public class EmailNotificationChannelTest {
configure(); configure();
channel.sendTestEmail("user@nowhere", "Test Message from Sonar", "This is a test message from Sonar."); channel.sendTestEmail("user@nowhere", "Test Message from Sonar", "This is a test message from Sonar.");
assertThat(server.getReceivedEmailSize(), is(1)); List<WiserMessage> messages = server.getMessages();
SmtpMessage email = (SmtpMessage) server.getReceivedEmail().next(); assertThat(messages.size(), is(1));
assertThat(email.getHeaderValue("Content-Type"), is("text/plain; charset=UTF-8")); MimeMessage email = messages.get(0).getMimeMessage();
assertThat(email.getHeader("Content-Type", null), is("text/plain; charset=UTF-8"));
assertThat(email.getHeaderValue("From"), is("Sonar <server@nowhere>")); assertThat(email.getHeader("From", ","), is("Sonar <server@nowhere>"));
assertThat(email.getHeaderValue("To"), is("<user@nowhere>")); assertThat(email.getHeader("To", null), is("<user@nowhere>"));
assertThat(email.getHeaderValue("Subject"), is("[SONAR] Test Message from Sonar")); assertThat(email.getHeader("Subject", null), is("[SONAR] Test Message from Sonar"));
assertThat(email.getBody(), is("This is a test message from Sonar.")); assertThat((String) email.getContent(), startsWith("This is a test message from Sonar."));
} }
@Test @Test
@ -117,7 +118,7 @@ public class EmailNotificationChannelTest {
.setSubject("Foo") .setSubject("Foo")
.setMessage("Bar"); .setMessage("Bar");
channel.deliver(emailMessage); channel.deliver(emailMessage);
assertThat(server.getReceivedEmailSize(), is(0)); assertThat(server.getMessages().size(), is(0));
} }
@Test @Test
@ -131,21 +132,23 @@ public class EmailNotificationChannelTest {
.setMessage("I'll take care of this violation."); .setMessage("I'll take care of this violation.");
channel.deliver(emailMessage); channel.deliver(emailMessage);
assertThat(server.getReceivedEmailSize(), is(1)); List<WiserMessage> messages = server.getMessages();
SmtpMessage email = (SmtpMessage) server.getReceivedEmail().next(); assertThat(messages.size(), is(1));
assertThat(email.getHeaderValue("Content-Type"), is("text/plain; charset=UTF-8")); MimeMessage email = messages.get(0).getMimeMessage();
assertThat(email.getHeaderValue("In-Reply-To"), is("<reviews/view/1@nemo.sonarsource.org>")); assertThat(email.getHeader("Content-Type", null), is("text/plain; charset=UTF-8"));
assertThat(email.getHeaderValue("References"), is("<reviews/view/1@nemo.sonarsource.org>"));
assertThat(email.getHeaderValue("List-ID"), is("Sonar <sonar.nemo.sonarsource.org>")); assertThat(email.getHeader("In-Reply-To", null), is("<reviews/view/1@nemo.sonarsource.org>"));
assertThat(email.getHeaderValue("List-Archive"), is("http://nemo.sonarsource.org")); assertThat(email.getHeader("References", null), is("<reviews/view/1@nemo.sonarsource.org>"));
assertThat(email.getHeaderValue("From"), is("\"Full Username (Sonar)\" <server@nowhere>")); assertThat(email.getHeader("List-ID", null), is("Sonar <sonar.nemo.sonarsource.org>"));
assertThat(email.getHeaderValue("To"), is("<user@nowhere>")); assertThat(email.getHeader("List-Archive", null), is("http://nemo.sonarsource.org"));
assertThat(email.getHeaderValue("Subject"), is("[SONAR] Review #3"));
assertThat(email.getBody(), is("I'll take care of this violation.")); assertThat(email.getHeader("From", ","), is("\"Full Username (Sonar)\" <server@nowhere>"));
assertThat(email.getHeader("To", null), is("<user@nowhere>"));
assertThat(email.getHeader("Subject", null), is("[SONAR] Review #3"));
assertThat((String) email.getContent(), startsWith("I'll take care of this violation."));
} }
@Test @Test
@ -157,21 +160,23 @@ public class EmailNotificationChannelTest {
.setMessage("Bar"); .setMessage("Bar");
channel.deliver(emailMessage); channel.deliver(emailMessage);
assertThat(server.getReceivedEmailSize(), is(1)); List<WiserMessage> messages = server.getMessages();
SmtpMessage email = (SmtpMessage) server.getReceivedEmail().next(); assertThat(messages.size(), is(1));
assertThat(email.getHeaderValue("Content-Type"), is("text/plain; charset=UTF-8")); MimeMessage email = messages.get(0).getMimeMessage();
assertThat(email.getHeaderValue("In-Reply-To"), nullValue()); assertThat(email.getHeader("Content-Type", null), is("text/plain; charset=UTF-8"));
assertThat(email.getHeaderValue("References"), nullValue());
assertThat(email.getHeaderValue("List-ID"), is("Sonar <sonar.nemo.sonarsource.org>")); assertThat(email.getHeader("In-Reply-To", null), nullValue());
assertThat(email.getHeaderValue("List-Archive"), is("http://nemo.sonarsource.org")); assertThat(email.getHeader("References", null), nullValue());
assertThat(email.getHeaderValue("From"), is("Sonar <server@nowhere>")); assertThat(email.getHeader("List-ID", null), is("Sonar <sonar.nemo.sonarsource.org>"));
assertThat(email.getHeaderValue("To"), is("<user@nowhere>")); assertThat(email.getHeader("List-Archive", null), is("http://nemo.sonarsource.org"));
assertThat(email.getHeaderValue("Subject"), is("[SONAR] Foo"));
assertThat(email.getBody(), is("Bar")); assertThat(email.getHeader("From", null), is("Sonar <server@nowhere>"));
assertThat(email.getHeader("To", null), is("<user@nowhere>"));
assertThat(email.getHeader("Subject", null), is("[SONAR] Foo"));
assertThat((String) email.getContent(), startsWith("Bar"));
} }
@Test @Test