Skip to content

Commit a64532e

Browse files
committed
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
1 parent 73e8021 commit a64532e

File tree

2 files changed

+73
-19
lines changed

2 files changed

+73
-19
lines changed

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2014 the original author or authors.
2+
* Copyright 2002-2015 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -372,6 +372,21 @@ public void send(MimeMessagePreparator... mimeMessagePreparators) throws MailExc
372372
}
373373
}
374374

375+
/**
376+
* Validate that this instance can connect to the server that it is configured
377+
* for. Throws a {@link MessagingException} if the connection attempt failed.
378+
*/
379+
public void testConnection() throws MessagingException {
380+
Transport transport = null;
381+
try {
382+
transport = connectTransport();
383+
}
384+
finally {
385+
if (transport != null) {
386+
transport.close();
387+
}
388+
}
389+
}
375390

376391
/**
377392
* Actually send the given array of MimeMessages via JavaMail.

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

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2014 the original author or authors.
2+
* Copyright 2002-2015 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -35,20 +35,29 @@
3535
import javax.mail.internet.InternetAddress;
3636
import javax.mail.internet.MimeMessage;
3737

38-
import junit.framework.TestCase;
38+
import org.junit.Rule;
39+
import org.junit.Test;
40+
import org.junit.rules.ExpectedException;
3941

4042
import org.springframework.mail.MailParseException;
4143
import org.springframework.mail.MailSendException;
4244
import org.springframework.mail.SimpleMailMessage;
4345
import org.springframework.util.ObjectUtils;
4446

47+
import static org.junit.Assert.*;
48+
4549
/**
4650
* @author Juergen Hoeller
51+
* @author Stephane Nicoll
4752
* @since 09.10.2004
4853
*/
49-
public class JavaMailSenderTests extends TestCase {
54+
public class JavaMailSenderTests {
55+
56+
@Rule
57+
public final ExpectedException thrown = ExpectedException.none();
5058

51-
public void testJavaMailSenderWithSimpleMessage() throws MessagingException, IOException {
59+
@Test
60+
public void javaMailSenderWithSimpleMessage() throws MessagingException, IOException {
5261
MockJavaMailSender sender = new MockJavaMailSender();
5362
sender.setHost("host");
5463
sender.setPort(30);
@@ -142,7 +151,8 @@ public void testJavaMailSenderWithMimeMessage() throws MessagingException {
142151
assertEquals(mimeMessage, sender.transport.getSentMessage(0));
143152
}
144153

145-
public void testJavaMailSenderWithMimeMessages() throws MessagingException {
154+
@Test
155+
public void javaMailSenderWithMimeMessages() throws MessagingException {
146156
MockJavaMailSender sender = new MockJavaMailSender();
147157
sender.setHost("host");
148158
sender.setUsername("username");
@@ -163,7 +173,8 @@ public void testJavaMailSenderWithMimeMessages() throws MessagingException {
163173
assertEquals(mimeMessage2, sender.transport.getSentMessage(1));
164174
}
165175

166-
public void testJavaMailSenderWithMimeMessagePreparator() {
176+
@Test
177+
public void javaMailSenderWithMimeMessagePreparator() {
167178
MockJavaMailSender sender = new MockJavaMailSender();
168179
sender.setHost("host");
169180
sender.setUsername("username");
@@ -188,7 +199,8 @@ public void prepare(MimeMessage mimeMessage) throws MessagingException {
188199
assertEquals(messages.get(0), sender.transport.getSentMessage(0));
189200
}
190201

191-
public void testJavaMailSenderWithMimeMessagePreparators() {
202+
@Test
203+
public void javaMailSenderWithMimeMessagePreparators() {
192204
MockJavaMailSender sender = new MockJavaMailSender();
193205
sender.setHost("host");
194206
sender.setUsername("username");
@@ -221,7 +233,8 @@ public void prepare(MimeMessage mimeMessage) throws MessagingException {
221233
assertEquals(messages.get(1), sender.transport.getSentMessage(1));
222234
}
223235

224-
public void testJavaMailSenderWithMimeMessageHelper() throws MessagingException {
236+
@Test
237+
public void javaMailSenderWithMimeMessageHelper() throws MessagingException {
225238
MockJavaMailSender sender = new MockJavaMailSender();
226239
sender.setHost("host");
227240
sender.setUsername("username");
@@ -242,7 +255,8 @@ public void testJavaMailSenderWithMimeMessageHelper() throws MessagingException
242255
assertEquals(message.getMimeMessage(), sender.transport.getSentMessage(0));
243256
}
244257

245-
public void testJavaMailSenderWithMimeMessageHelperAndSpecificEncoding() throws MessagingException {
258+
@Test
259+
public void javaMailSenderWithMimeMessageHelperAndSpecificEncoding() throws MessagingException {
246260
MockJavaMailSender sender = new MockJavaMailSender();
247261
sender.setHost("host");
248262
sender.setUsername("username");
@@ -265,7 +279,8 @@ public void testJavaMailSenderWithMimeMessageHelperAndSpecificEncoding() throws
265279
assertEquals(message.getMimeMessage(), sender.transport.getSentMessage(0));
266280
}
267281

268-
public void testJavaMailSenderWithMimeMessageHelperAndDefaultEncoding() throws MessagingException {
282+
@Test
283+
public void javaMailSenderWithMimeMessageHelperAndDefaultEncoding() throws MessagingException {
269284
MockJavaMailSender sender = new MockJavaMailSender();
270285
sender.setHost("host");
271286
sender.setUsername("username");
@@ -289,7 +304,8 @@ public void testJavaMailSenderWithMimeMessageHelperAndDefaultEncoding() throws M
289304
assertEquals(message.getMimeMessage(), sender.transport.getSentMessage(0));
290305
}
291306

292-
public void testJavaMailSenderWithParseExceptionOnSimpleMessage() {
307+
@Test
308+
public void javaMailSenderWithParseExceptionOnSimpleMessage() {
293309
MockJavaMailSender sender = new MockJavaMailSender();
294310
SimpleMailMessage simpleMessage = new SimpleMailMessage();
295311
simpleMessage.setFrom("");
@@ -302,7 +318,8 @@ public void testJavaMailSenderWithParseExceptionOnSimpleMessage() {
302318
}
303319
}
304320

305-
public void testJavaMailSenderWithParseExceptionOnMimeMessagePreparator() {
321+
@Test
322+
public void javaMailSenderWithParseExceptionOnMimeMessagePreparator() {
306323
MockJavaMailSender sender = new MockJavaMailSender();
307324
MimeMessagePreparator preparator = new MimeMessagePreparator() {
308325
@Override
@@ -319,7 +336,8 @@ public void prepare(MimeMessage mimeMessage) throws MessagingException {
319336
}
320337
}
321338

322-
public void testJavaMailSenderWithCustomSession() throws MessagingException {
339+
@Test
340+
public void javaMailSenderWithCustomSession() throws MessagingException {
323341
final Session session = Session.getInstance(new Properties());
324342
MockJavaMailSender sender = new MockJavaMailSender() {
325343
@Override
@@ -347,7 +365,8 @@ protected Transport getTransport(Session sess) throws NoSuchProviderException {
347365
assertEquals(mimeMessage, sender.transport.getSentMessage(0));
348366
}
349367

350-
public void testJavaMailProperties() throws MessagingException {
368+
@Test
369+
public void javaMailProperties() throws MessagingException {
351370
Properties props = new Properties();
352371
props.setProperty("bogusKey", "bogusValue");
353372
MockJavaMailSender sender = new MockJavaMailSender() {
@@ -374,7 +393,8 @@ protected Transport getTransport(Session sess) throws NoSuchProviderException {
374393
assertEquals(mimeMessage, sender.transport.getSentMessage(0));
375394
}
376395

377-
public void testFailedMailServerConnect() throws Exception {
396+
@Test
397+
public void failedMailServerConnect() throws Exception {
378398
MockJavaMailSender sender = new MockJavaMailSender();
379399
sender.setHost(null);
380400
sender.setUsername("username");
@@ -394,7 +414,8 @@ public void testFailedMailServerConnect() throws Exception {
394414
}
395415
}
396416

397-
public void testFailedMailServerClose() throws Exception {
417+
@Test
418+
public void failedMailServerClose() throws Exception {
398419
MockJavaMailSender sender = new MockJavaMailSender();
399420
sender.setHost("");
400421
sender.setUsername("username");
@@ -412,7 +433,8 @@ public void testFailedMailServerClose() throws Exception {
412433
}
413434
}
414435

415-
public void testFailedSimpleMessage() throws Exception {
436+
@Test
437+
public void failedSimpleMessage() throws Exception {
416438
MockJavaMailSender sender = new MockJavaMailSender();
417439
sender.setHost("host");
418440
sender.setUsername("username");
@@ -443,7 +465,8 @@ public void testFailedSimpleMessage() throws Exception {
443465
}
444466
}
445467

446-
public void testFailedMimeMessage() throws Exception {
468+
@Test
469+
public void fFailedMimeMessage() throws Exception {
447470
MockJavaMailSender sender = new MockJavaMailSender();
448471
sender.setHost("host");
449472
sender.setUsername("username");
@@ -474,6 +497,22 @@ public void testFailedMimeMessage() throws Exception {
474497
}
475498
}
476499

500+
@Test
501+
public void testConnection() throws Exception {
502+
MockJavaMailSender sender = new MockJavaMailSender();
503+
sender.setHost("host");
504+
sender.testConnection();
505+
}
506+
507+
@Test
508+
public void testConnectionWithFailure() throws Exception {
509+
MockJavaMailSender sender = new MockJavaMailSender();
510+
sender.setHost(null);
511+
512+
thrown.expect(MessagingException.class);
513+
sender.testConnection();
514+
}
515+
477516

478517
private static class MockJavaMailSender extends JavaMailSenderImpl {
479518

0 commit comments

Comments
 (0)