List of usage examples for org.springframework.integration.mail ImapMailReceiver ImapMailReceiver
public ImapMailReceiver(String url)
From source file:org.springframework.integration.mail.ImapMailReceiverTests.java
@Test public void testConnectionException() throws Exception { ImapMailReceiver mailReceiver = new ImapMailReceiver("imap:foo"); ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter(mailReceiver); final AtomicReference<ImapIdleExceptionEvent> theEvent = new AtomicReference<ImapIdleExceptionEvent>(); final CountDownLatch latch = new CountDownLatch(1); adapter.setApplicationEventPublisher(event -> { assertNull("only one event expected", theEvent.get()); theEvent.set((ImapIdleExceptionEvent) event); latch.countDown();/*from ww w . j ava 2 s .c om*/ }); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.initialize(); adapter.setTaskScheduler(taskScheduler); adapter.start(); assertTrue(latch.await(10, TimeUnit.SECONDS)); assertTrue(theEvent.get().toString() .endsWith("cause=java.lang.IllegalStateException: Failure in 'idle' task. Will resubmit.]")); }
From source file:org.springframework.integration.mail.ImapMailReceiverTests.java
@Test // see INT-1801 public void testImapLifecycleForRaceCondition() throws Exception { for (int i = 0; i < 1000; i++) { final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo"); Store store = mock(Store.class); Folder folder = mock(Folder.class); given(folder.exists()).willReturn(true); given(folder.isOpen()).willReturn(true); given(folder.search((SearchTerm) Mockito.any())).willReturn(new Message[] {}); given(store.getFolder(Mockito.any(URLName.class))).willReturn(folder); given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER)); DirectFieldAccessor df = new DirectFieldAccessor(receiver); df.setPropertyValue("store", store); receiver.setBeanFactory(mock(BeanFactory.class)); receiver.afterPropertiesSet();/* w w w. jav a 2 s . c o m*/ new Thread(() -> { try { receiver.receive(); } catch (javax.mail.MessagingException e) { if (e.getCause() instanceof NullPointerException) { failed.getAndIncrement(); } } }).start(); new Thread(() -> { try { receiver.destroy(); } catch (Exception ignore) { // ignore } }).start(); } assertEquals(0, failed.get()); }
From source file:org.springframework.integration.mail.ImapMailReceiverTests.java
@Test public void testAttachments() throws Exception { final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo"); Folder folder = testAttachmentsGuts(receiver); Message[] messages = (Message[]) receiver.receive(); Object content = messages[0].getContent(); assertEquals("bar", ((Multipart) content).getBodyPart(0).getContent().toString().trim()); assertEquals("foo", ((Multipart) content).getBodyPart(1).getContent().toString().trim()); assertSame(folder, messages[0].getFolder()); }
From source file:org.springframework.integration.mail.ImapMailReceiverTests.java
@Test public void testAttachmentsWithMappingMultiAsBytes() throws Exception { final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo"); receiver.setHeaderMapper(new DefaultMailHeaderMapper()); testAttachmentsGuts(receiver);//w w w. j ava 2s . com org.springframework.messaging.Message<?>[] messages = (org.springframework.messaging.Message<?>[]) receiver .receive(); org.springframework.messaging.Message<?> received = messages[0]; Object content = received.getPayload(); assertThat(content, instanceOf(byte[].class)); assertThat((String) received.getHeaders().get(MailHeaders.CONTENT_TYPE), equalTo("multipart/mixed;\r\n boundary=\"------------040903000701040401040200\"")); assertThat((String) received.getHeaders().get(MessageHeaders.CONTENT_TYPE), equalTo("application/octet-stream")); }
From source file:org.springframework.integration.mail.ImapMailReceiverTests.java
@Test public void testAttachmentsWithMapping() throws Exception { final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo"); receiver.setHeaderMapper(new DefaultMailHeaderMapper()); receiver.setEmbeddedPartsAsBytes(false); testAttachmentsGuts(receiver);/* w w w . j a v a 2s . c o m*/ org.springframework.messaging.Message<?>[] messages = (org.springframework.messaging.Message<?>[]) receiver .receive(); Object content = messages[0].getPayload(); assertThat(content, instanceOf(Multipart.class)); assertEquals("bar", ((Multipart) content).getBodyPart(0).getContent().toString().trim()); assertEquals("foo", ((Multipart) content).getBodyPart(1).getContent().toString().trim()); }
From source file:org.springframework.integration.mail.ImapMailReceiverTests.java
@Test public void testIdleReconnects() throws Exception { ImapMailReceiver receiver = spy(new ImapMailReceiver("imap:foo")); receiver.setBeanFactory(mock(BeanFactory.class)); receiver.afterPropertiesSet();//from w w w . ja va 2 s.c o m IMAPFolder folder = mock(IMAPFolder.class); given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER)); given(folder.isOpen()).willReturn(false).willReturn(true); given(folder.exists()).willReturn(true); given(folder.hasNewMessages()).willReturn(true); Field storeField = AbstractMailReceiver.class.getDeclaredField("store"); storeField.setAccessible(true); Store store = mock(Store.class); given(store.isConnected()).willReturn(false); given(store.getFolder(Mockito.any(URLName.class))).willReturn(folder); storeField.set(receiver, store); ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter(receiver); Log logger = spy(TestUtils.getPropertyValue(adapter, "logger", Log.class)); new DirectFieldAccessor(adapter).setPropertyValue("logger", logger); willDoNothing().given(logger).warn(anyString(), any(Throwable.class)); willAnswer(i -> { i.callRealMethod(); throw new FolderClosedException(folder, "test"); }).given(receiver).waitForNewMessages(); ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.initialize(); adapter.setTaskScheduler(taskScheduler); adapter.setReconnectDelay(50); adapter.afterPropertiesSet(); final CountDownLatch latch = new CountDownLatch(3); adapter.setApplicationEventPublisher(e -> { latch.countDown(); }); adapter.start(); assertTrue(latch.await(60, TimeUnit.SECONDS)); verify(store, atLeast(3)).connect(); taskScheduler.shutdown(); }