INT-1375, INT-1376, Added support for Flags.SEEN. Added namespace support for should-mark-messages-as-read for IMAP idle, test cases

This commit is contained in:
Oleg Zhurakousky
2010-08-28 14:47:54 +00:00
parent dc3c93417d
commit 658572ea44
10 changed files with 113 additions and 28 deletions

View File

@@ -20,6 +20,7 @@ import javax.mail.Flags.Flag;
import javax.mail.internet.MimeMessage;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -34,28 +35,9 @@ import static org.mockito.Mockito.verify;
*
*/
public class AbstractMailReceiverTests {
@Test(expected=IllegalArgumentException.class)
public void validateDeleteAndReadIsNotAllowed(){
AbstractMailReceiver receiver = new ImapMailReceiver();
receiver.setShouldDeleteMessages(true);
receiver.setShouldMarkMessagesAsRead(true);
}
@Test
public void validateDeleteOrReadIsAllowed_Read(){
AbstractMailReceiver receiver = new ImapMailReceiver();
receiver.setShouldDeleteMessages(false);
receiver.setShouldMarkMessagesAsRead(true);
}
@Test
public void validateDeleteOrReadIsAllowed_Delete(){
AbstractMailReceiver receiver = new ImapMailReceiver();
receiver.setShouldDeleteMessages(true);
receiver.setShouldMarkMessagesAsRead(false);
}
@Test
public void receieveAndMarkAsRead() throws Exception{
public void receieveAndMarkAsReadDontDelete() throws Exception{
AbstractMailReceiver receiver = new ImapMailReceiver();
receiver.setShouldMarkMessagesAsRead(true);
receiver = spy(receiver);
@@ -83,6 +65,39 @@ public class AbstractMailReceiverTests {
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());
}
@Test
public void receieveMarkAsReadAndDelete() throws Exception{
AbstractMailReceiver receiver = new ImapMailReceiver();
receiver.setShouldMarkMessagesAsRead(true);
receiver.setShouldDeleteMessages(true);
receiver = spy(receiver);
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
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(1)).deleteMessages((Message[]) Mockito.any());
}
@Test
public void receieveAndDontMarkAsRead() throws Exception{

View File

@@ -32,6 +32,13 @@
channel="channel"
auto-startup="false"
should-delete-messages="true"/>
<mail:imap-idle-channel-adapter id="simpleAdapterMarkAsRead"
store-uri="imap:foo"
channel="channel"
auto-startup="false"
should-delete-messages="true"
should-mark-messages-as-read="true"/>
<mail:imap-idle-channel-adapter id="customAdapter"
store-uri="imap:foo"

View File

@@ -37,6 +37,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Mark Fisher
* @author Oleg Zhurakousky
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@@ -63,6 +64,26 @@ public class ImapIdleChannelAdapterParserTests {
Properties properties = (Properties) receiverAccessor.getPropertyValue("javaMailProperties");
assertEquals(0, properties.size());
assertEquals(Boolean.TRUE, receiverAccessor.getPropertyValue("shouldDeleteMessages"));
assertEquals(Boolean.FALSE, receiverAccessor.getPropertyValue("shouldMarkMessagesAsRead"));
}
@Test
public void simpleAdapterWithMarkeMessagesAsRead() {
Object adapter = context.getBean("simpleAdapterMarkAsRead");
assertEquals(ImapIdleChannelAdapter.class, adapter.getClass());
DirectFieldAccessor adapterAccessor = new DirectFieldAccessor(adapter);
Object channel = context.getBean("channel");
assertSame(channel, adapterAccessor.getPropertyValue("outputChannel"));
assertNull(adapterAccessor.getPropertyValue("taskExecutor"));
assertEquals(Boolean.FALSE, adapterAccessor.getPropertyValue("autoStartup"));
Object receiver = adapterAccessor.getPropertyValue("mailReceiver");
assertEquals(ImapMailReceiver.class, receiver.getClass());
DirectFieldAccessor receiverAccessor = new DirectFieldAccessor(receiver);
Object url = receiverAccessor.getPropertyValue("url");
assertEquals(new URLName("imap:foo"), url);
Properties properties = (Properties) receiverAccessor.getPropertyValue("javaMailProperties");
assertEquals(0, properties.size());
assertEquals(Boolean.TRUE, receiverAccessor.getPropertyValue("shouldDeleteMessages"));
assertEquals(Boolean.TRUE, receiverAccessor.getPropertyValue("shouldMarkMessagesAsRead"));
}
@Test

View File

@@ -93,6 +93,8 @@
<mail:inbound-channel-adapter id="imapWithoutStoreUri" channel="testChannel" protocol="imap" should-delete-messages="false" auto-startup="false"/>
<mail:imap-idle-channel-adapter id="imapIdleWithoutStoreUri" channel="testChannel" should-delete-messages="false" auto-startup="false"/>
<mail:inbound-channel-adapter id="pop3ShouldMarkAsReadTrue" channel="testChannel" protocol="pop3" should-delete-messages="false" auto-startup="false" should-mark-messages-as-read="true"/>
<!-- COMMON CONFIGURATION -->

View File

@@ -43,6 +43,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Mark Fisher
* @author Oleg Zhurakousky
* @since 1.0.5
*/
@ContextConfiguration
@@ -62,6 +63,14 @@ public class InboundChannelAdapterParserTests {
Boolean value = (Boolean) new DirectFieldAccessor(receiver).getPropertyValue("shouldDeleteMessages");
assertTrue(value);
}
@Test
public void pop3ShouldMarkMessagesAsRead() {
AbstractMailReceiver receiver = this.getReceiver("pop3ShouldMarkAsReadTrue");
assertEquals(Pop3MailReceiver.class, receiver.getClass());
Boolean value = (Boolean) new DirectFieldAccessor(receiver).getPropertyValue("shouldMarkMessagesAsRead");
assertFalse(value);
}
@Test
public void pop3ShouldDeleteFalse() {