use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class Pop3MailReceiverTests method receiveAndDontSetDeleteWithoutUrl.
@Test
public void receiveAndDontSetDeleteWithoutUrl() throws Exception {
AbstractMailReceiver receiver = new Pop3MailReceiver();
receiver = spy(receiver);
receiver.setBeanFactory(mock(BeanFactory.class));
receiver.afterPropertiesSet();
Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
folderField.setAccessible(true);
Folder folder = mock(Folder.class);
when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER));
folderField.set(receiver, folder);
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
doAnswer(invocation -> null).when(receiver).openFolder();
doAnswer(invocation -> messages).when(receiver).searchForNewMessages();
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);
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class Pop3MailReceiverTests method receiveAndDelete.
@Test
public void receiveAndDelete() throws Exception {
AbstractMailReceiver receiver = new Pop3MailReceiver();
receiver.setShouldDeleteMessages(true);
receiver = spy(receiver);
receiver.setBeanFactory(mock(BeanFactory.class));
receiver.afterPropertiesSet();
Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
folderField.setAccessible(true);
Folder folder = mock(Folder.class);
when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER));
folderField.set(receiver, folder);
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
doAnswer(invocation -> {
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(invocation -> messages).when(receiver).searchForNewMessages();
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);
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class Pop3MailReceiverTests method receiveAndDontSetDeleteWithUrl.
@Test
public void receiveAndDontSetDeleteWithUrl() throws Exception {
AbstractMailReceiver receiver = new Pop3MailReceiver("pop3://some.host");
receiver = spy(receiver);
receiver.setBeanFactory(mock(BeanFactory.class));
receiver.afterPropertiesSet();
Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
folderField.setAccessible(true);
Folder folder = mock(Folder.class);
when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER));
folderField.set(receiver, folder);
Message msg1 = mock(MimeMessage.class);
Message msg2 = mock(MimeMessage.class);
final Message[] messages = new Message[] { msg1, msg2 };
doAnswer(invocation -> null).when(receiver).openFolder();
doAnswer(invocation -> messages).when(receiver).searchForNewMessages();
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);
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class ImapIdleIntegrationTests method testWithTransactionSynchronization.
@SuppressWarnings("resource")
@Test
public void testWithTransactionSynchronization() throws Exception {
final AtomicBoolean block = new AtomicBoolean(false);
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("imap-idle-mock-integration-config.xml", this.getClass());
PostTransactionProcessor processor = context.getBean("syncProcessor", PostTransactionProcessor.class);
ImapIdleChannelAdapter adapter = context.getBean("customAdapter", ImapIdleChannelAdapter.class);
assertThat(TestUtils.getPropertyValue(adapter, "applicationEventPublisher")).isNotNull();
ImapMailReceiver receiver = TestUtils.getPropertyValue(adapter, "mailReceiver", ImapMailReceiver.class);
// setup mock scenario
receiver = spy(receiver);
doAnswer(invocation -> {
// to emulate the behavior of IDLE
if (block.get()) {
Thread.sleep(5000);
}
block.set(true);
return null;
}).when(receiver).waitForNewMessages();
Message m1 = mock(Message.class);
doReturn(new Message[] { m1 }).when(receiver).receive();
Folder folder = mock(Folder.class);
when(folder.isOpen()).thenReturn(true);
Field folderField = ReflectionUtils.findField(ImapMailReceiver.class, "folder");
folderField.setAccessible(true);
folderField.set(receiver, folder);
Field mrField = ImapIdleChannelAdapter.class.getDeclaredField("mailReceiver");
mrField.setAccessible(true);
mrField.set(adapter, receiver);
// end mock setup
final CountDownLatch txProcessorLatch = new CountDownLatch(1);
doAnswer(invocation -> {
txProcessorLatch.countDown();
return null;
}).when(processor).process(any(Message.class));
adapter.start();
assertThat(txProcessorLatch.await(10, TimeUnit.SECONDS)).isTrue();
adapter.stop();
context.close();
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class MailReceiverTests method testStoreConnect.
@Test
public void testStoreConnect() throws Exception {
AbstractMailReceiver receiver = new AbstractMailReceiver() {
@Override
protected Message[] searchForNewMessages() {
return null;
}
};
Properties props = new Properties();
Session session = Session.getInstance(props);
receiver.setSession(session);
receiver.setProtocol("imap");
Store store = session.getStore("imap");
store = spy(store);
new DirectFieldAccessor(receiver).setPropertyValue("store", store);
when(store.isConnected()).thenReturn(false);
Folder folder = mock(Folder.class);
when(folder.exists()).thenReturn(true);
when(folder.isOpen()).thenReturn(false);
doReturn(folder).when(store).getFolder((URLName) null);
doNothing().when(store).connect();
receiver.openFolder();
receiver.openFolder();
verify(store, times(2)).connect();
}
Aggregations