diff --git a/build.gradle b/build.gradle index 31b984bcd6..2ec22c2b9f 100644 --- a/build.gradle +++ b/build.gradle @@ -89,7 +89,7 @@ ext { mailVersion = '1.0.0' micrometerTracingVersion = '1.1.0-RC1' micrometerVersion = '1.11.0-RC1' - mockitoVersion = '5.2.0' + mockitoVersion = '5.3.0' mongoDriverVersion = '4.9.1' mysqlVersion = '8.0.32' pahoMqttClientVersion = '1.2.5' diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java index 7991aaa699..e2561d4d3c 100644 --- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java +++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java @@ -104,7 +104,7 @@ import static org.mockito.Mockito.when; @SpringJUnitConfig @ContextConfiguration( "classpath:org/springframework/integration/mail/config/ImapIdleChannelAdapterParserTests-context.xml") -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) +@DirtiesContext public class ImapMailReceiverTests { private AtomicInteger failed; @@ -269,11 +269,11 @@ public class ImapMailReceiverTests { user.deliver(GreenMailUtil.createTextEmail("user", "sender", "subject", "body", imapIdleServer.getImap().getServerSetup())); AbstractMailReceiver receiver = new ImapMailReceiver(); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); receiver = receiveAndMarkAsReadDontDeleteGuts(receiver, msg1, msg2); - verify(msg1, times(1)).setFlag(Flag.SEEN, true); - verify(msg2, times(1)).setFlag(Flag.SEEN, true); + assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue(); verify(receiver, times(0)).deleteMessages(Mockito.any()); } @@ -312,28 +312,28 @@ public class ImapMailReceiverTests { @Test public void receiveAndMarkAsReadDontDeletePassingFilter() throws Exception { AbstractMailReceiver receiver = new ImapMailReceiver(); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); Expression selectorExpression = new SpelExpressionParser().parseExpression("true"); receiver.setSelectorExpression(selectorExpression); receiver = receiveAndMarkAsReadDontDeleteGuts(receiver, msg1, msg2); - verify(msg1, times(1)).setFlag(Flag.SEEN, true); - verify(msg2, times(1)).setFlag(Flag.SEEN, true); + assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue(); verify(receiver, times(0)).deleteMessages(Mockito.any()); } @Test public void receiveAndMarkAsReadDontDeleteFiltered() throws Exception { AbstractMailReceiver receiver = new ImapMailReceiver(); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); given(msg2.getSubject()).willReturn("foo"); // should not be marked seen Expression selectorExpression = new SpelExpressionParser() .parseExpression("subject == null OR !subject.equals('foo')"); receiver.setSelectorExpression(selectorExpression); receiver = receiveAndMarkAsReadDontDeleteGuts(receiver, msg1, msg2); - verify(msg1, times(1)).setFlag(Flag.SEEN, true); - verify(msg2, never()).setFlag(Flag.SEEN, true); + assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue(); verify(receiver, times(0)).deleteMessages(Mockito.any()); } @@ -400,8 +400,8 @@ public class ImapMailReceiverTests { given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; willAnswer(invocation -> { DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock()); @@ -416,8 +416,10 @@ public class ImapMailReceiverTests { willAnswer(invocation -> null).given(receiver).fetchMessages(messages); receiver.receive(); - verify(msg1, times(1)).setFlag(Flag.SEEN, true); - verify(msg2, times(1)).setFlag(Flag.SEEN, true); + + assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue(); + verify(receiver, times(1)).deleteMessages(Mockito.any()); } @@ -436,8 +438,8 @@ public class ImapMailReceiverTests { folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; willAnswer(invocation -> null).given(receiver).openFolder(); @@ -446,8 +448,8 @@ public class ImapMailReceiverTests { willAnswer(invocation -> null).given(receiver).fetchMessages(messages); receiver.afterPropertiesSet(); receiver.receive(); - verify(msg1, times(0)).setFlag(Flag.SEEN, true); - verify(msg2, times(0)).setFlag(Flag.SEEN, true); + assertThat(msg1.getFlags().contains(Flag.SEEN)).isFalse(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isFalse(); } @Test @@ -465,8 +467,8 @@ public class ImapMailReceiverTests { given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; willAnswer(invocation -> { DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock()); @@ -482,10 +484,11 @@ public class ImapMailReceiverTests { willAnswer(invocation -> null).given(receiver).fetchMessages(messages); receiver.afterPropertiesSet(); receiver.receive(); - verify(msg1, times(0)).setFlag(Flag.SEEN, true); - verify(msg2, times(0)).setFlag(Flag.SEEN, true); - verify(msg1, times(1)).setFlag(Flag.DELETED, true); - verify(msg2, times(1)).setFlag(Flag.DELETED, true); + + assertThat(msg1.getFlags().contains(Flag.SEEN)).isFalse(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isFalse(); + assertThat(msg1.getFlags().contains(Flag.DELETED)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.DELETED)).isTrue(); } @Test @@ -501,8 +504,8 @@ public class ImapMailReceiverTests { given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; willAnswer(invocation -> { DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock()); @@ -517,8 +520,8 @@ public class ImapMailReceiverTests { willAnswer(invocation -> null).given(receiver).fetchMessages(messages); receiver.receive(); - verify(msg1, times(1)).setFlag(Flag.SEEN, true); - verify(msg2, times(1)).setFlag(Flag.SEEN, true); + assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue(); verify(receiver, times(0)).deleteMessages(Mockito.any()); } @@ -535,9 +538,7 @@ public class ImapMailReceiverTests { DirectFieldAccessor adapterAccessor = new DirectFieldAccessor(adapter); adapterAccessor.setPropertyValue("mailReceiver", receiver); - Message mailMessage = spy(GreenMailUtil.newMimeMessage("test1")); - Flags flags = mock(Flags.class); - given(mailMessage.getFlags()).willReturn(flags); + Message mailMessage = GreenMailUtil.newMimeMessage("test1"); final Message[] messages = new Message[] {mailMessage}; willAnswer(invocation -> { @@ -603,10 +604,8 @@ public class ImapMailReceiverTests { DirectFieldAccessor adapterAccessor = new DirectFieldAccessor(adapter); adapterAccessor.setPropertyValue("mailReceiver", receiver); - Message mailMessage = spy(GreenMailUtil.newMimeMessage("test1")); - Flags flags = mock(Flags.class); - given(mailMessage.getFlags()).willReturn(flags); - final Message[] messages = new Message[] {mailMessage}; + Message mailMessage = GreenMailUtil.newMimeMessage("test1"); + Message[] messages = new Message[] {mailMessage}; willAnswer(invocation -> messages).given(receiver).searchForNewMessages(); @@ -650,9 +649,7 @@ public class ImapMailReceiverTests { willAnswer(invocation -> folder).given(receiver).getFolder(); - Message mailMessage = spy(GreenMailUtil.newMimeMessage("test1")); - Flags flags = mock(Flags.class); - given(mailMessage.getFlags()).willReturn(flags); + Message mailMessage = GreenMailUtil.newMimeMessage("test1"); final Message[] messages = new Message[] {mailMessage}; final AtomicInteger shouldFindMessagesCounter = new AtomicInteger(2); @@ -724,9 +721,7 @@ public class ImapMailReceiverTests { willAnswer(invocation -> folder).given(receiver).getFolder(); - Message mailMessage = spy(GreenMailUtil.newMimeMessage("test1")); - Flags flags = mock(Flags.class); - given(mailMessage.getFlags()).willReturn(flags); + Message mailMessage = GreenMailUtil.newMimeMessage("test1"); final Message[] messages = new Message[] {mailMessage}; willAnswer(invocation -> messages).given(receiver).searchForNewMessages(); @@ -747,7 +742,7 @@ public class ImapMailReceiverTests { * not receive any early messages. */ assertThat(channel.receive(100)).isNull(); - assertThat(channel.receive(10000)).isNotNull(); + assertThat(channel.receive(20000)).isNotNull(); assertThat(idles.await(10, TimeUnit.SECONDS)).isTrue(); adapter.stop(); } diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/Pop3MailReceiverTests.java b/spring-integration-mail/src/test/java/org/springframework/integration/mail/Pop3MailReceiverTests.java index f71bf76f93..9d96214d7f 100644 --- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/Pop3MailReceiverTests.java +++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/Pop3MailReceiverTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 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. @@ -28,11 +28,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.DirectFieldAccessor; import org.springframework.beans.factory.BeanFactory; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** @@ -57,8 +56,8 @@ public class Pop3MailReceiverTests { when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; doAnswer(invocation -> { DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock()); @@ -74,8 +73,9 @@ public class Pop3MailReceiverTests { doAnswer(invocation -> null).when(receiver).fetchMessages(messages); receiver.afterPropertiesSet(); receiver.receive(); - verify(msg1, times(1)).setFlag(Flag.DELETED, true); - verify(msg2, times(1)).setFlag(Flag.DELETED, true); + + assertThat(msg1.getFlags().contains(Flag.DELETED)).isTrue(); + assertThat(msg2.getFlags().contains(Flag.DELETED)).isTrue(); } @Test @@ -92,8 +92,8 @@ public class Pop3MailReceiverTests { when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; doAnswer(invocation -> null).when(receiver).openFolder(); @@ -102,8 +102,9 @@ public class Pop3MailReceiverTests { doAnswer(invocation -> null).when(receiver).fetchMessages(messages); receiver.afterPropertiesSet(); receiver.receive(); - verify(msg1, times(0)).setFlag(Flag.DELETED, true); - verify(msg2, times(0)).setFlag(Flag.DELETED, true); + + assertThat(msg1.getFlags().contains(Flag.DELETED)).isFalse(); + assertThat(msg2.getFlags().contains(Flag.DELETED)).isFalse(); } @Test @@ -119,8 +120,8 @@ public class Pop3MailReceiverTests { when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; doAnswer(invocation -> null).when(receiver).openFolder(); @@ -129,8 +130,9 @@ public class Pop3MailReceiverTests { doAnswer(invocation -> null).when(receiver).fetchMessages(messages); receiver.afterPropertiesSet(); receiver.receive(); - verify(msg1, times(0)).setFlag(Flag.DELETED, true); - verify(msg2, times(0)).setFlag(Flag.DELETED, true); + + assertThat(msg1.getFlags().contains(Flag.DELETED)).isFalse(); + assertThat(msg2.getFlags().contains(Flag.DELETED)).isFalse(); } @Test @@ -146,8 +148,8 @@ public class Pop3MailReceiverTests { when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); - Message msg1 = spy(GreenMailUtil.newMimeMessage("test1")); - Message msg2 = spy(GreenMailUtil.newMimeMessage("test2")); + Message msg1 = GreenMailUtil.newMimeMessage("test1"); + Message msg2 = GreenMailUtil.newMimeMessage("test2"); final Message[] messages = new Message[] {msg1, msg2}; doAnswer(invocation -> null).when(receiver).openFolder(); @@ -156,8 +158,9 @@ public class Pop3MailReceiverTests { doAnswer(invocation -> null).when(receiver).fetchMessages(messages); receiver.afterPropertiesSet(); receiver.receive(); - verify(msg1, times(0)).setFlag(Flag.DELETED, true); - verify(msg2, times(0)).setFlag(Flag.DELETED, true); + + assertThat(msg1.getFlags().contains(Flag.DELETED)).isFalse(); + assertThat(msg2.getFlags().contains(Flag.DELETED)).isFalse(); } }