INT-1415 added check for expanged messages, see JIRA for more details on this issue

This commit is contained in:
Oleg Zhurakousky
2010-09-17 11:25:03 -04:00
parent 6421c1cf78
commit 00f777366f
2 changed files with 51 additions and 5 deletions

View File

@@ -26,17 +26,19 @@ import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.beans.DirectFieldAccessor;
import static junit.framework.Assert.assertEquals;
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;
/**
* @author Oleg Zhurakousky
*
*/
public class AbstractMailReceiverTests {
public class ImapMailReceiverTests {
@Test
public void receieveAndMarkAsReadDontDelete() throws Exception{
@@ -183,4 +185,43 @@ public class AbstractMailReceiverTests {
verify(msg2, times(1)).setFlag(Flag.SEEN, true);
verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any());
}
@Test
/*
* This test emulates https://jira.springsource.org/browse/INT-1415
*/
public void receieveAndDontMarkAsReadWithOneMessageExpanged() throws Exception{
AbstractMailReceiver receiver = new ImapMailReceiver();
((ImapMailReceiver)receiver).setShouldMarkMessagesAsRead(false);
receiver = spy(receiver);
receiver.afterPropertiesSet();
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
when(msg2.isExpunged()).thenReturn(true);
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_ONLY 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.afterPropertiesSet();
Message[] receievedMessages = receiver.receive();
assertEquals(1, receievedMessages.length);
}
}