Skip to content

Commit fa1f8a4

Browse files
committed
Some ImapMailReceiverTests improvements
* Fix typo in the `ImapIdleChannelAdapter` log message for not reconnecting error
1 parent 5e34809 commit fa1f8a4

File tree

2 files changed

+30
-29
lines changed

2 files changed

+30
-29
lines changed

spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapIdleChannelAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public void run() {
252252
else {
253253
logger.warn(ex,
254254
"Failed to execute IDLE task. " +
255-
"Won't resubmit since not a 'shouldReconnectAutomatically'" +
255+
"Won't resubmit since not a 'shouldReconnectAutomatically' " +
256256
"or not a 'jakarta.mail.MessagingException'");
257257
ImapIdleChannelAdapter.this.receivingTaskTrigger.stop();
258258
}

spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.logging.LogManager;
3232
import java.util.logging.LogRecord;
3333

34+
import com.icegreen.greenmail.store.FolderException;
3435
import com.icegreen.greenmail.user.GreenMailUser;
3536
import com.icegreen.greenmail.util.GreenMail;
3637
import com.icegreen.greenmail.util.GreenMailUtil;
@@ -52,7 +53,8 @@
5253
import jakarta.mail.search.AndTerm;
5354
import jakarta.mail.search.FlagTerm;
5455
import jakarta.mail.search.FromTerm;
55-
import org.junit.jupiter.api.AfterEach;
56+
import org.junit.jupiter.api.AfterAll;
57+
import org.junit.jupiter.api.BeforeAll;
5658
import org.junit.jupiter.api.BeforeEach;
5759
import org.junit.jupiter.api.Test;
5860
import org.mockito.Mockito;
@@ -107,45 +109,46 @@
107109
@DirtiesContext
108110
public class ImapMailReceiverTests {
109111

110-
private AtomicInteger failed;
112+
private final static ImapSearchLoggingHandler imapSearches = new ImapSearchLoggingHandler();
111113

112-
private GreenMail imapIdleServer;
114+
private static GreenMail imapIdleServer;
113115

114-
private GreenMailUser user;
116+
private static GreenMailUser user;
117+
118+
private final AtomicInteger failed = new AtomicInteger(0);
115119

116120
@Autowired
117121
private ApplicationContext context;
118122

119-
static {
123+
@BeforeAll
124+
static void startImapServer() {
120125
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
121-
}
122-
123-
private final ImapSearchLoggingHandler imapSearches = new ImapSearchLoggingHandler();
124-
125-
@BeforeEach
126-
public void setup() {
127126
LogManager.getLogManager().getLogger("").setLevel(Level.ALL);
128127
imapSearches.searches.clear();
129128
imapSearches.stores.clear();
130129
LogManager.getLogManager().getLogger("").addHandler(imapSearches);
131-
failed = new AtomicInteger(0);
132130
ServerSetup imap = ServerSetupTest.IMAP.dynamicPort();
133131
imap.setServerStartupTimeout(10000);
134132
imapIdleServer = new GreenMail(imap);
135133
user = imapIdleServer.setUser("user", "pw");
136134
imapIdleServer.start();
137135
}
138136

139-
@AfterEach
140-
public void tearDown() {
141-
this.imapIdleServer.stop();
137+
@BeforeEach
138+
void cleanup() throws FolderException {
139+
imapIdleServer.getManagers().getImapHostManager().getInbox(user).deleteAllMessages();
140+
}
141+
142+
@AfterAll
143+
static void stopImapServer() {
144+
imapIdleServer.stop();
142145
LogManager.getLogManager().getLogger("").removeHandler(imapSearches);
143146
}
144147

145148
@Test
146149
public void testIdleWithServerCustomSearch() throws Exception {
147150
ImapMailReceiver receiver =
148-
new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getImap().getPort() + "/INBOX");
151+
new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getImap().getPort() + "/INBOX");
149152
receiver.setSearchTermStrategy((supportedFlags, folder) -> {
150153
try {
151154
FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz"));
@@ -161,23 +164,23 @@ public void testIdleWithServerCustomSearch() throws Exception {
161164
@Test
162165
public void testIdleWithServerDefaultSearch() throws Exception {
163166
ImapMailReceiver receiver =
164-
new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getImap().getPort() + "/INBOX");
167+
new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getImap().getPort() + "/INBOX");
165168
testIdleWithServerGuts(receiver, false);
166169
assertThat(imapSearches.searches.get(0)).contains("testSIUserFlag");
167170
}
168171

169172
@Test
170173
public void testIdleWithMessageMapping() throws Exception {
171174
ImapMailReceiver receiver =
172-
new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getImap().getPort() + "/INBOX");
175+
new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getImap().getPort() + "/INBOX");
173176
receiver.setHeaderMapper(new DefaultMailHeaderMapper());
174177
testIdleWithServerGuts(receiver, true);
175178
}
176179

177180
@Test
178181
public void testIdleWithServerDefaultSearchSimple() throws Exception {
179182
ImapMailReceiver receiver =
180-
new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getImap().getPort() + "/INBOX");
183+
new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getImap().getPort() + "/INBOX");
181184
receiver.setSimpleContent(true);
182185
testIdleWithServerGuts(receiver, false, true);
183186
assertThat(imapSearches.searches.get(0)).contains("testSIUserFlag");
@@ -186,7 +189,7 @@ public void testIdleWithServerDefaultSearchSimple() throws Exception {
186189
@Test
187190
public void testIdleWithMessageMappingSimple() throws Exception {
188191
ImapMailReceiver receiver =
189-
new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getImap().getPort() + "/INBOX");
192+
new ImapMailReceiver("imap://user:pw@localhost:" + imapIdleServer.getImap().getPort() + "/INBOX");
190193
receiver.setSimpleContent(true);
191194
receiver.setHeaderMapper(new DefaultMailHeaderMapper());
192195
testIdleWithServerGuts(receiver, true, true);
@@ -217,8 +220,6 @@ public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped, bo
217220
message.setRecipients(Message.RecipientType.CC, "a@b, c@d");
218221
message.setRecipients(Message.RecipientType.BCC, "e@f, g@h");
219222
user.deliver(message);
220-
user.deliver(GreenMailUtil.createTextEmail("to", "Bar <bar@baz>", "subject", "body",
221-
imapIdleServer.getImap().getServerSetup()));
222223
if (!mapped) {
223224
@SuppressWarnings("unchecked")
224225
org.springframework.messaging.Message<MimeMessage> received =
@@ -256,6 +257,8 @@ public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped, bo
256257
assertThat(received.getPayload()).isEqualTo("foo");
257258
}
258259
}
260+
user.deliver(GreenMailUtil.createTextEmail("to", "Bar <bar@baz>", "subject", "body",
261+
imapIdleServer.getImap().getServerSetup()));
259262
assertThat(channel.receive(20000)).isNotNull(); // new message after idle
260263
assertThat(channel.receive(100)).isNull(); // no new message after second and third idle
261264

@@ -682,7 +685,7 @@ public void testNoInitialIdleDelayWhenRecentNotSupported() throws Exception {
682685
* Idle takes 5 seconds; if all is well, we should receive the first message
683686
* before then.
684687
*/
685-
assertThat(channel.receive(10000)).isNotNull();
688+
assertThat(channel.receive(20000)).isNotNull();
686689
// We should not receive any more until the next idle elapses
687690
assertThat(channel.receive(100)).isNull();
688691
assertThat(channel.receive(10000)).isNotNull();
@@ -873,8 +876,8 @@ private Folder testAttachmentsGuts(final ImapMailReceiver receiver) throws Messa
873876

874877
@Test
875878
public void testNullMessages() throws Exception {
876-
Message message1 = spy(GreenMailUtil.newMimeMessage("test1"));
877-
Message message2 = spy(GreenMailUtil.newMimeMessage("test2"));
879+
Message message1 = GreenMailUtil.newMimeMessage("test1");
880+
Message message2 = GreenMailUtil.newMimeMessage("test2");
878881
final Message[] messages1 = new Message[] {null, null, message1};
879882
final Message[] messages2 = new Message[] {message2};
880883
final SearchTermStrategy searchTermStrategy = mock(SearchTermStrategy.class);
@@ -948,9 +951,7 @@ public void testIdleReconnects() throws Exception {
948951
adapter.setReconnectDelay(1);
949952
adapter.afterPropertiesSet();
950953
final CountDownLatch latch = new CountDownLatch(3);
951-
adapter.setApplicationEventPublisher(e -> {
952-
latch.countDown();
953-
});
954+
adapter.setApplicationEventPublisher(e -> latch.countDown());
954955
adapter.start();
955956
assertThat(latch.await(60, TimeUnit.SECONDS)).isTrue();
956957
verify(store, atLeast(3)).connect();

0 commit comments

Comments
 (0)