diff --git a/spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java b/spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java index 9eacb1ef94..7d642be001 100644 --- a/spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java +++ b/spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -372,6 +372,21 @@ public class JavaMailSenderImpl implements JavaMailSender { } } + /** + * Validate that this instance can connect to the server that it is configured + * for. Throws a {@link MessagingException} if the connection attempt failed. + */ + public void testConnection() throws MessagingException { + Transport transport = null; + try { + transport = connectTransport(); + } + finally { + if (transport != null) { + transport.close(); + } + } + } /** * Actually send the given array of MimeMessages via JavaMail. diff --git a/spring-context-support/src/test/java/org/springframework/mail/javamail/JavaMailSenderTests.java b/spring-context-support/src/test/java/org/springframework/mail/javamail/JavaMailSenderTests.java index f2c94c59d8..4c0d2a5da0 100644 --- a/spring-context-support/src/test/java/org/springframework/mail/javamail/JavaMailSenderTests.java +++ b/spring-context-support/src/test/java/org/springframework/mail/javamail/JavaMailSenderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,20 +35,29 @@ import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; -import junit.framework.TestCase; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; import org.springframework.mail.MailParseException; import org.springframework.mail.MailSendException; import org.springframework.mail.SimpleMailMessage; import org.springframework.util.ObjectUtils; +import static org.junit.Assert.*; + /** * @author Juergen Hoeller + * @author Stephane Nicoll * @since 09.10.2004 */ -public class JavaMailSenderTests extends TestCase { +public class JavaMailSenderTests { + + @Rule + public final ExpectedException thrown = ExpectedException.none(); - public void testJavaMailSenderWithSimpleMessage() throws MessagingException, IOException { + @Test + public void javaMailSenderWithSimpleMessage() throws MessagingException, IOException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setPort(30); @@ -142,7 +151,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(mimeMessage, sender.transport.getSentMessage(0)); } - public void testJavaMailSenderWithMimeMessages() throws MessagingException { + @Test + public void javaMailSenderWithMimeMessages() throws MessagingException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -163,7 +173,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(mimeMessage2, sender.transport.getSentMessage(1)); } - public void testJavaMailSenderWithMimeMessagePreparator() { + @Test + public void javaMailSenderWithMimeMessagePreparator() { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -188,7 +199,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(messages.get(0), sender.transport.getSentMessage(0)); } - public void testJavaMailSenderWithMimeMessagePreparators() { + @Test + public void javaMailSenderWithMimeMessagePreparators() { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -221,7 +233,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(messages.get(1), sender.transport.getSentMessage(1)); } - public void testJavaMailSenderWithMimeMessageHelper() throws MessagingException { + @Test + public void javaMailSenderWithMimeMessageHelper() throws MessagingException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -242,7 +255,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(message.getMimeMessage(), sender.transport.getSentMessage(0)); } - public void testJavaMailSenderWithMimeMessageHelperAndSpecificEncoding() throws MessagingException { + @Test + public void javaMailSenderWithMimeMessageHelperAndSpecificEncoding() throws MessagingException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -265,7 +279,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(message.getMimeMessage(), sender.transport.getSentMessage(0)); } - public void testJavaMailSenderWithMimeMessageHelperAndDefaultEncoding() throws MessagingException { + @Test + public void javaMailSenderWithMimeMessageHelperAndDefaultEncoding() throws MessagingException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -289,7 +304,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(message.getMimeMessage(), sender.transport.getSentMessage(0)); } - public void testJavaMailSenderWithParseExceptionOnSimpleMessage() { + @Test + public void javaMailSenderWithParseExceptionOnSimpleMessage() { MockJavaMailSender sender = new MockJavaMailSender(); SimpleMailMessage simpleMessage = new SimpleMailMessage(); simpleMessage.setFrom(""); @@ -302,7 +318,8 @@ public class JavaMailSenderTests extends TestCase { } } - public void testJavaMailSenderWithParseExceptionOnMimeMessagePreparator() { + @Test + public void javaMailSenderWithParseExceptionOnMimeMessagePreparator() { MockJavaMailSender sender = new MockJavaMailSender(); MimeMessagePreparator preparator = new MimeMessagePreparator() { @Override @@ -319,7 +336,8 @@ public class JavaMailSenderTests extends TestCase { } } - public void testJavaMailSenderWithCustomSession() throws MessagingException { + @Test + public void javaMailSenderWithCustomSession() throws MessagingException { final Session session = Session.getInstance(new Properties()); MockJavaMailSender sender = new MockJavaMailSender() { @Override @@ -347,7 +365,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(mimeMessage, sender.transport.getSentMessage(0)); } - public void testJavaMailProperties() throws MessagingException { + @Test + public void javaMailProperties() throws MessagingException { Properties props = new Properties(); props.setProperty("bogusKey", "bogusValue"); MockJavaMailSender sender = new MockJavaMailSender() { @@ -374,7 +393,8 @@ public class JavaMailSenderTests extends TestCase { assertEquals(mimeMessage, sender.transport.getSentMessage(0)); } - public void testFailedMailServerConnect() throws Exception { + @Test + public void failedMailServerConnect() throws Exception { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost(null); sender.setUsername("username"); @@ -394,7 +414,8 @@ public class JavaMailSenderTests extends TestCase { } } - public void testFailedMailServerClose() throws Exception { + @Test + public void failedMailServerClose() throws Exception { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost(""); sender.setUsername("username"); @@ -412,7 +433,8 @@ public class JavaMailSenderTests extends TestCase { } } - public void testFailedSimpleMessage() throws Exception { + @Test + public void failedSimpleMessage() throws Exception { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -443,7 +465,8 @@ public class JavaMailSenderTests extends TestCase { } } - public void testFailedMimeMessage() throws Exception { + @Test + public void fFailedMimeMessage() throws Exception { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); @@ -474,6 +497,22 @@ public class JavaMailSenderTests extends TestCase { } } + @Test + public void testConnection() throws Exception { + MockJavaMailSender sender = new MockJavaMailSender(); + sender.setHost("host"); + sender.testConnection(); + } + + @Test + public void testConnectionWithFailure() throws Exception { + MockJavaMailSender sender = new MockJavaMailSender(); + sender.setHost(null); + + thrown.expect(MessagingException.class); + sender.testConnection(); + } + private static class MockJavaMailSender extends JavaMailSenderImpl {