INT-1375, moved 'shouldMarkMessagesAsRead' attribute to ImapMailReceiver, added additional test for when attribute is not set onthe namespace (e.g., null in other words)
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package org.springframework.integration.mail;
|
||||
|
||||
import javax.mail.Folder;
|
||||
import javax.mail.Message;
|
||||
import javax.mail.Flags.Flag;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
@@ -23,6 +24,7 @@ import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.stubbing.Answer;
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -39,14 +41,20 @@ public class AbstractMailReceiverTests {
|
||||
@Test
|
||||
public void receieveAndMarkAsReadDontDelete() throws Exception{
|
||||
AbstractMailReceiver receiver = new ImapMailReceiver();
|
||||
receiver.setShouldMarkMessagesAsRead(true);
|
||||
((ImapMailReceiver)receiver).setShouldMarkMessagesAsRead(true);
|
||||
receiver = spy(receiver);
|
||||
receiver.afterPropertiesSet();
|
||||
Message msg1 = mock(MimeMessage.class);
|
||||
Message msg2 = mock(MimeMessage.class);
|
||||
final Message[] messages = new Message[]{msg1, msg2};
|
||||
|
||||
doAnswer(new Answer<Object>() {
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
// just to avoid the exception
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
|
||||
int folderOpenMode = (Integer) accessor.getPropertyValue("folderOpenMode");
|
||||
if (folderOpenMode != Folder.READ_WRITE){
|
||||
throw new IllegalArgumentException("Folder had to be open in READ_WRITE mode");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}).when(receiver).openFolder();
|
||||
@@ -70,15 +78,20 @@ public class AbstractMailReceiverTests {
|
||||
@Test
|
||||
public void receieveMarkAsReadAndDelete() throws Exception{
|
||||
AbstractMailReceiver receiver = new ImapMailReceiver();
|
||||
receiver.setShouldMarkMessagesAsRead(true);
|
||||
((ImapMailReceiver)receiver).setShouldMarkMessagesAsRead(true);
|
||||
receiver.setShouldDeleteMessages(true);
|
||||
receiver = spy(receiver);
|
||||
receiver.afterPropertiesSet();
|
||||
Message msg1 = mock(MimeMessage.class);
|
||||
Message msg2 = mock(MimeMessage.class);
|
||||
final Message[] messages = new Message[]{msg1, msg2};
|
||||
doAnswer(new Answer<Object>() {
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
// just to avoid the exception
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
|
||||
int folderOpenMode = (Integer) accessor.getPropertyValue("folderOpenMode");
|
||||
if (folderOpenMode != Folder.READ_WRITE){
|
||||
throw new IllegalArgumentException("Folder had to be open in READ_WRITE mode");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}).when(receiver).openFolder();
|
||||
@@ -102,14 +115,19 @@ public class AbstractMailReceiverTests {
|
||||
@Test
|
||||
public void receieveAndDontMarkAsRead() throws Exception{
|
||||
AbstractMailReceiver receiver = new ImapMailReceiver();
|
||||
receiver.setShouldMarkMessagesAsRead(false);
|
||||
((ImapMailReceiver)receiver).setShouldMarkMessagesAsRead(false);
|
||||
receiver = spy(receiver);
|
||||
receiver.afterPropertiesSet();
|
||||
Message msg1 = mock(MimeMessage.class);
|
||||
Message msg2 = mock(MimeMessage.class);
|
||||
final Message[] messages = new Message[]{msg1, msg2};
|
||||
doAnswer(new Answer<Object>() {
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
// just to avoid the exception
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
|
||||
int folderOpenMode = (Integer) accessor.getPropertyValue("folderOpenMode");
|
||||
if (folderOpenMode == Folder.READ_WRITE){
|
||||
throw new IllegalArgumentException("Folder had to be open in READ_ONLY mode");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}).when(receiver).openFolder();
|
||||
@@ -130,4 +148,39 @@ public class AbstractMailReceiverTests {
|
||||
verify(msg1, times(0)).setFlag(Flag.SEEN, true);
|
||||
verify(msg2, times(0)).setFlag(Flag.SEEN, true);
|
||||
}
|
||||
@Test
|
||||
public void receieveAndIgnoreMarkAsReadDontDelete() throws Exception{
|
||||
AbstractMailReceiver receiver = new ImapMailReceiver();
|
||||
receiver = spy(receiver);
|
||||
receiver.afterPropertiesSet();
|
||||
Message msg1 = mock(MimeMessage.class);
|
||||
Message msg2 = mock(MimeMessage.class);
|
||||
final Message[] messages = new Message[]{msg1, msg2};
|
||||
doAnswer(new Answer<Object>() {
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
|
||||
int folderOpenMode = (Integer) accessor.getPropertyValue("folderOpenMode");
|
||||
if (folderOpenMode != Folder.READ_WRITE){
|
||||
throw new IllegalArgumentException("Folder had to be open in READ_WRITE mode");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}).when(receiver).openFolder();
|
||||
|
||||
doAnswer(new Answer<Object>() {
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
return messages;
|
||||
}
|
||||
}).when(receiver).searchForNewMessages();
|
||||
|
||||
doAnswer(new Answer<Object>() {
|
||||
public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
return null;
|
||||
}
|
||||
}).when(receiver).fetchMessages(messages);
|
||||
receiver.receive();
|
||||
verify(msg1, times(1)).setFlag(Flag.SEEN, true);
|
||||
verify(msg2, times(1)).setFlag(Flag.SEEN, true);
|
||||
verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,22 +64,6 @@ public class InboundChannelAdapterParserTests {
|
||||
assertTrue(value);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pop3IgnoreMarkAsReadWithTrue() {
|
||||
AbstractMailReceiver receiver = this.getReceiver("pop3ShouldMarkAsReadTrue");
|
||||
assertEquals(Pop3MailReceiver.class, receiver.getClass());
|
||||
Boolean value = (Boolean) new DirectFieldAccessor(receiver).getPropertyValue("shouldMarkMessagesAsRead");
|
||||
assertNull(value);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void pop3IgnoreMarkAsReadWithFalse() {
|
||||
AbstractMailReceiver receiver = this.getReceiver("pop3ShouldMarkAsReadFalse");
|
||||
assertEquals(Pop3MailReceiver.class, receiver.getClass());
|
||||
Boolean value = (Boolean) new DirectFieldAccessor(receiver).getPropertyValue("shouldMarkMessagesAsRead");
|
||||
assertNull(value);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void imapShouldMarkMessagesAsRead() {
|
||||
AbstractMailReceiver receiver = this.getReceiver("imapShouldMarkAsReadTrue");
|
||||
|
||||
Reference in New Issue
Block a user