Browse Source

Add testConnection on JavaMailSender

Add a way to test that a particular JavaMailSender instance can connect
to the server that it is configured for.

Issue: SPR-12799
pull/755/head
Stephane Nicoll 10 years ago
parent
commit
a64532ede2
  1. 17
      spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java
  2. 75
      spring-context-support/src/test/java/org/springframework/mail/javamail/JavaMailSenderTests.java

17
spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java

@ -1,5 +1,5 @@ @@ -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 { @@ -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.

75
spring-context-support/src/test/java/org/springframework/mail/javamail/JavaMailSenderTests.java

@ -1,5 +1,5 @@ @@ -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; @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 {

Loading…
Cancel
Save