11/*
2- * Copyright 2002-2019 the original author or authors.
2+ * Copyright 2002-2020 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.
5454import javax .mail .search .FlagTerm ;
5555import javax .mail .search .FromTerm ;
5656
57- import org .apache .commons .logging .Log ;
58- import org .junit .After ;
59- import org .junit .Before ;
60- import org .junit .ClassRule ;
61- import org .junit .Test ;
62- import org .junit .runner .RunWith ;
57+ import org .junit .jupiter .api .AfterEach ;
58+ import org .junit .jupiter .api .BeforeEach ;
59+ import org .junit .jupiter .api .Test ;
6360import org .mockito .Mockito ;
6461
6562import org .springframework .beans .DirectFieldAccessor ;
6663import org .springframework .beans .factory .BeanFactory ;
6764import org .springframework .beans .factory .annotation .Autowired ;
6865import org .springframework .context .ApplicationContext ;
6966import org .springframework .core .io .ClassPathResource ;
67+ import org .springframework .core .log .LogAccessor ;
7068import org .springframework .expression .Expression ;
7169import org .springframework .expression .spel .standard .SpelExpressionParser ;
7270import org .springframework .integration .channel .DirectChannel ;
7371import org .springframework .integration .channel .QueueChannel ;
7472import org .springframework .integration .handler .AbstractReplyProducingMessageHandler ;
7573import org .springframework .integration .history .MessageHistory ;
7674import org .springframework .integration .mail .support .DefaultMailHeaderMapper ;
75+ import org .springframework .integration .test .condition .LongRunningTest ;
7776import org .springframework .integration .test .mail .TestMailServer ;
7877import org .springframework .integration .test .mail .TestMailServer .ImapServer ;
79- import org .springframework .integration .test .support .LongRunningIntegrationTest ;
8078import org .springframework .integration .test .util .TestUtils ;
8179import org .springframework .messaging .MessageHeaders ;
8280import org .springframework .messaging .PollableChannel ;
8381import org .springframework .scheduling .TaskScheduler ;
8482import org .springframework .scheduling .concurrent .ThreadPoolTaskScheduler ;
8583import org .springframework .test .annotation .DirtiesContext ;
8684import org .springframework .test .context .ContextConfiguration ;
87- import org .springframework .test .context .junit4 .SpringRunner ;
85+ import org .springframework .test .context .junit .jupiter .SpringJUnitConfig ;
86+ import org .springframework .util .MimeTypeUtils ;
8887
8988import com .sun .mail .imap .IMAPFolder ;
9089
9392 * @author Gary Russell
9493 * @author Artem Bilan
9594 */
96- @ RunWith ( SpringRunner . class )
95+ @ SpringJUnitConfig
9796@ ContextConfiguration (
9897 "classpath:org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml" )
9998@ DirtiesContext
99+ @ LongRunningTest
100100public class ImapMailReceiverTests {
101101
102- @ ClassRule
103- public static final LongRunningIntegrationTest longTests = new LongRunningIntegrationTest ();
104-
105102 private AtomicInteger failed ;
106103
107104 private ImapServer imapIdleServer ;
108105
109106 @ Autowired
110107 private ApplicationContext context ;
111108
112- @ Before
109+ @ BeforeEach
113110 public void setup () throws InterruptedException {
114111 failed = new AtomicInteger (0 );
115112 this .imapIdleServer = TestMailServer .imap (0 );
@@ -120,7 +117,7 @@ public void setup() throws InterruptedException {
120117 assertThat (n < 100 ).isTrue ();
121118 }
122119
123- @ After
120+ @ AfterEach
124121 public void tearDown () {
125122 this .imapIdleServer .stop ();
126123 }
@@ -192,7 +189,7 @@ public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped, bo
192189 setUpScheduler (receiver , taskScheduler );
193190 receiver .setUserFlag ("testSIUserFlag" );
194191 receiver .afterPropertiesSet ();
195- Log logger = spy (TestUtils .getPropertyValue (receiver , "logger" , Log .class ));
192+ LogAccessor logger = spy (TestUtils .getPropertyValue (receiver , "logger" , LogAccessor .class ));
196193 new DirectFieldAccessor (receiver ).setPropertyValue ("logger" , logger );
197194 ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter (receiver );
198195 QueueChannel channel = new QueueChannel ();
@@ -222,7 +219,7 @@ public void testIdleWithServerGuts(ImapMailReceiver receiver, boolean mapped, bo
222219 MessageHeaders headers = received .getHeaders ();
223220 assertThat (headers .get (MailHeaders .RAW_HEADERS )).isNotNull ();
224221 assertThat (headers .get (MailHeaders .CONTENT_TYPE )).isEqualTo ("TEXT/PLAIN; charset=ISO-8859-1" );
225- assertThat (headers .get (MessageHeaders .CONTENT_TYPE )).isEqualTo ("TEXT/PLAIN; charset=ISO-8859-1" );
222+ assertThat (headers .get (MessageHeaders .CONTENT_TYPE )).isEqualTo (MimeTypeUtils . TEXT_PLAIN_VALUE );
226223 assertThat (headers .get (MailHeaders .FROM )).isEqualTo ("Bar <bar@baz>" );
227224 String [] toHeader = headers .get (MailHeaders .TO , String [].class );
228225 assertThat (toHeader ).isNotEmpty ();
@@ -259,6 +256,7 @@ public void receiveAndMarkAsReadDontDelete() throws Exception {
259256
260257 private AbstractMailReceiver receiveAndMarkAsReadDontDeleteGuts (AbstractMailReceiver receiver , Message msg1 ,
261258 Message msg2 ) throws NoSuchFieldException , IllegalAccessException , MessagingException {
259+
262260 ((ImapMailReceiver ) receiver ).setShouldMarkMessagesAsRead (true );
263261 receiver = spy (receiver );
264262 receiver .setBeanFactory (mock (BeanFactory .class ));
@@ -269,7 +267,7 @@ private AbstractMailReceiver receiveAndMarkAsReadDontDeleteGuts(AbstractMailRece
269267 given (folder .getPermanentFlags ()).willReturn (new Flags (Flags .Flag .USER ));
270268 folderField .set (receiver , folder );
271269
272- final Message [] messages = new Message [] { msg1 , msg2 };
270+ final Message [] messages = new Message []{ msg1 , msg2 };
273271
274272 willAnswer (invocation -> {
275273 DirectFieldAccessor accessor = new DirectFieldAccessor (invocation .getMock ());
@@ -334,7 +332,7 @@ public void receiveMarkAsReadAndDelete() throws Exception {
334332
335333 Message msg1 = mock (MimeMessage .class );
336334 Message msg2 = mock (MimeMessage .class );
337- final Message [] messages = new Message [] { msg1 , msg2 };
335+ final Message [] messages = new Message []{ msg1 , msg2 };
338336 willAnswer (invocation -> {
339337 DirectFieldAccessor accessor = new DirectFieldAccessor (invocation .getMock ());
340338 int folderOpenMode = (int ) accessor .getPropertyValue ("folderOpenMode" );
@@ -370,7 +368,7 @@ public void receiveAndDontMarkAsRead() throws Exception {
370368
371369 Message msg1 = mock (MimeMessage .class );
372370 Message msg2 = mock (MimeMessage .class );
373- final Message [] messages = new Message [] { msg1 , msg2 };
371+ final Message [] messages = new Message []{ msg1 , msg2 };
374372 willAnswer (invocation -> null ).given (receiver ).openFolder ();
375373
376374 willAnswer (invocation -> messages ).given (receiver ).searchForNewMessages ();
@@ -399,7 +397,7 @@ public void receiveAndDontMarkAsReadButDelete() throws Exception {
399397
400398 Message msg1 = mock (MimeMessage .class );
401399 Message msg2 = mock (MimeMessage .class );
402- final Message [] messages = new Message [] { msg1 , msg2 };
400+ final Message [] messages = new Message []{ msg1 , msg2 };
403401 willAnswer (invocation -> {
404402 DirectFieldAccessor accessor = new DirectFieldAccessor (invocation .getMock ());
405403 int folderOpenMode = (int ) accessor .getPropertyValue ("folderOpenMode" );
@@ -435,7 +433,7 @@ public void receiveAndIgnoreMarkAsReadDontDelete() throws Exception {
435433
436434 Message msg1 = mock (MimeMessage .class );
437435 Message msg2 = mock (MimeMessage .class );
438- final Message [] messages = new Message [] { msg1 , msg2 };
436+ final Message [] messages = new Message []{ msg1 , msg2 };
439437 willAnswer (invocation -> {
440438 DirectFieldAccessor accessor = new DirectFieldAccessor (invocation .getMock ());
441439 int folderOpenMode = (int ) accessor .getPropertyValue ("folderOpenMode" );
@@ -470,7 +468,7 @@ public void testMessageHistory() throws Exception {
470468 MimeMessage mailMessage = mock (MimeMessage .class );
471469 Flags flags = mock (Flags .class );
472470 given (mailMessage .getFlags ()).willReturn (flags );
473- final Message [] messages = new Message [] { mailMessage };
471+ final Message [] messages = new Message []{ mailMessage };
474472
475473 willAnswer (invocation -> {
476474 DirectFieldAccessor accessor = new DirectFieldAccessor ((invocation .getMock ()));
@@ -538,7 +536,7 @@ protected Object handleRequestMessage(org.springframework.messaging.Message<?> r
538536 MimeMessage mailMessage = mock (MimeMessage .class );
539537 Flags flags = mock (Flags .class );
540538 given (mailMessage .getFlags ()).willReturn (flags );
541- final Message [] messages = new Message [] { mailMessage };
539+ final Message [] messages = new Message []{ mailMessage };
542540
543541 willAnswer (invocation -> messages ).given (receiver ).searchForNewMessages ();
544542
@@ -585,7 +583,7 @@ public void testNoInitialIdleDelayWhenRecentNotSupported() throws Exception {
585583 MimeMessage mailMessage = mock (MimeMessage .class );
586584 Flags flags = mock (Flags .class );
587585 given (mailMessage .getFlags ()).willReturn (flags );
588- final Message [] messages = new Message [] { mailMessage };
586+ final Message [] messages = new Message []{ mailMessage };
589587
590588 final AtomicInteger shouldFindMessagesCounter = new AtomicInteger (2 );
591589 willAnswer (invocation -> {
@@ -658,7 +656,7 @@ public void testInitialIdleDelayWhenRecentIsSupported() throws Exception {
658656 MimeMessage mailMessage = mock (MimeMessage .class );
659657 Flags flags = mock (Flags .class );
660658 given (mailMessage .getFlags ()).willReturn (flags );
661- final Message [] messages = new Message [] { mailMessage };
659+ final Message [] messages = new Message []{ mailMessage };
662660
663661 willAnswer (invocation -> messages ).given (receiver ).searchForNewMessages ();
664662
@@ -667,7 +665,7 @@ public void testInitialIdleDelayWhenRecentIsSupported() throws Exception {
667665 final CountDownLatch idles = new CountDownLatch (2 );
668666 willAnswer (invocation -> {
669667 idles .countDown ();
670- Thread .sleep (1000 );
668+ Thread .sleep (500 );
671669 return null ;
672670 }).given (folder ).idle ();
673671
@@ -714,7 +712,7 @@ public void testImapLifecycleForRaceCondition() throws Exception {
714712 Folder folder = mock (Folder .class );
715713 given (folder .exists ()).willReturn (true );
716714 given (folder .isOpen ()).willReturn (true );
717- given (folder .search (Mockito .any ())).willReturn (new Message [] { });
715+ given (folder .search (Mockito .any ())).willReturn (new Message []{ });
718716 given (store .getFolder (Mockito .any (URLName .class ))).willReturn (folder );
719717 given (folder .getPermanentFlags ()).willReturn (new Flags (Flags .Flag .USER ));
720718
@@ -796,7 +794,7 @@ private Folder testAttachmentsGuts(final ImapMailReceiver receiver) throws Messa
796794 given (folder .isOpen ()).willReturn (true );
797795
798796 Message message = new MimeMessage (null , new ClassPathResource ("test.mail" ).getInputStream ());
799- given (folder .search (Mockito .any ())).willReturn (new Message [] { message });
797+ given (folder .search (Mockito .any ())).willReturn (new Message []{ message });
800798 given (store .getFolder (Mockito .any (URLName .class ))).willReturn (folder );
801799 given (folder .getPermanentFlags ()).willReturn (new Flags (Flags .Flag .USER ));
802800 DirectFieldAccessor df = new DirectFieldAccessor (receiver );
@@ -811,8 +809,8 @@ private Folder testAttachmentsGuts(final ImapMailReceiver receiver) throws Messa
811809 public void testNullMessages () throws Exception {
812810 Message message1 = mock (Message .class );
813811 Message message2 = mock (Message .class );
814- final Message [] messages1 = new Message [] { null , null , message1 };
815- final Message [] messages2 = new Message [] { message2 };
812+ final Message [] messages1 = new Message []{ null , null , message1 };
813+ final Message [] messages2 = new Message []{ message2 };
816814 final SearchTermStrategy searchTermStrategy = mock (SearchTermStrategy .class );
817815 class TestReceiver extends ImapMailReceiver {
818816
@@ -872,9 +870,9 @@ public void testIdleReconnects() throws Exception {
872870 storeField .set (receiver , store );
873871
874872 ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter (receiver );
875- Log logger = spy (TestUtils .getPropertyValue (adapter , "logger" , Log .class ));
873+ LogAccessor logger = spy (TestUtils .getPropertyValue (adapter , "logger" , LogAccessor .class ));
876874 new DirectFieldAccessor (adapter ).setPropertyValue ("logger" , logger );
877- willDoNothing ().given (logger ).warn (anyString (), any (Throwable .class ));
875+ willDoNothing ().given (logger ).warn (any (Throwable .class ), anyString ( ));
878876 willAnswer (i -> {
879877 i .callRealMethod ();
880878 throw new FolderClosedException (folder , "test" );
0 commit comments