Search in sources :

Example 21 with Flags

use of jakarta.mail.Flags in project spring-integration by spring-projects.

the class ImapMailReceiverTests method receiveAndIgnoreMarkAsReadDontDelete.

@Test
public void receiveAndIgnoreMarkAsReadDontDelete() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    receiver = spy(receiver);
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();
    Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
    folderField.setAccessible(true);
    Folder folder = mock(Folder.class);
    given(folder.getPermanentFlags()).willReturn(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 };
    willAnswer(invocation -> {
        DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
        int folderOpenMode = (int) accessor.getPropertyValue("folderOpenMode");
        if (folderOpenMode != Folder.READ_WRITE) {
            throw new IllegalArgumentException("Folder had to be open in READ_WRITE mode");
        }
        return null;
    }).given(receiver).openFolder();
    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();
    willAnswer(invocation -> null).given(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(Mockito.any());
}
Also used : Field(java.lang.reflect.Field) MimeMessage(jakarta.mail.internet.MimeMessage) Message(jakarta.mail.Message) DirectFieldAccessor(org.springframework.beans.DirectFieldAccessor) BeanFactory(org.springframework.beans.factory.BeanFactory) Flags(jakarta.mail.Flags) Folder(jakarta.mail.Folder) IMAPFolder(com.sun.mail.imap.IMAPFolder) Test(org.junit.jupiter.api.Test) ServerSetupTest(com.icegreen.greenmail.util.ServerSetupTest)

Example 22 with Flags

use of jakarta.mail.Flags in project spring-integration by spring-projects.

the class ImapMailReceiverTests method testIdleWithServerCustomSearch.

@Test
public void testIdleWithServerCustomSearch() throws Exception {
    ImapMailReceiver receiver = new ImapMailReceiver("imap://user:pw@localhost:" + this.imapIdleServer.getImap().getPort() + "/INBOX");
    receiver.setSearchTermStrategy((supportedFlags, folder) -> {
        try {
            FromTerm fromTerm = new FromTerm(new InternetAddress("bar@baz"));
            return new AndTerm(fromTerm, new FlagTerm(new Flags(Flag.SEEN), false));
        } catch (AddressException e) {
            throw new RuntimeException(e);
        }
    });
    testIdleWithServerGuts(receiver, false);
}
Also used : AndTerm(jakarta.mail.search.AndTerm) InternetAddress(jakarta.mail.internet.InternetAddress) FlagTerm(jakarta.mail.search.FlagTerm) AddressException(jakarta.mail.internet.AddressException) Flags(jakarta.mail.Flags) FromTerm(jakarta.mail.search.FromTerm) Test(org.junit.jupiter.api.Test) ServerSetupTest(com.icegreen.greenmail.util.ServerSetupTest)

Example 23 with Flags

use of jakarta.mail.Flags in project spring-integration by spring-projects.

the class Pop3MailReceiverTests method receiveAndDontDelete.

@Test
public void receiveAndDontDelete() throws Exception {
    AbstractMailReceiver receiver = new Pop3MailReceiver();
    receiver.setShouldDeleteMessages(false);
    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);
}
Also used : Field(java.lang.reflect.Field) Message(jakarta.mail.Message) MimeMessage(jakarta.mail.internet.MimeMessage) BeanFactory(org.springframework.beans.factory.BeanFactory) Flags(jakarta.mail.Flags) Folder(jakarta.mail.Folder) Test(org.junit.jupiter.api.Test)

Example 24 with Flags

use of jakarta.mail.Flags in project spring-integration by spring-projects.

the class ImapMailSearchTermsTests method validateSearchTermsWhenShouldNotMarkAsReadNoExistingFlags.

@Test
public void validateSearchTermsWhenShouldNotMarkAsReadNoExistingFlags() throws Exception {
    ImapMailReceiver receiver = new ImapMailReceiver();
    receiver.setShouldMarkMessagesAsRead(false);
    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);
    Method compileSearchTerms = ReflectionUtils.findMethod(receiver.getClass(), "compileSearchTerms", Flags.class);
    compileSearchTerms.setAccessible(true);
    Flags flags = new Flags();
    SearchTerm searchTerms = (SearchTerm) compileSearchTerms.invoke(receiver, flags);
    assertThat(searchTerms instanceof NotTerm).isTrue();
}
Also used : Field(java.lang.reflect.Field) NotTerm(jakarta.mail.search.NotTerm) BeanFactory(org.springframework.beans.factory.BeanFactory) Flags(jakarta.mail.Flags) Method(java.lang.reflect.Method) Folder(jakarta.mail.Folder) SearchTerm(jakarta.mail.search.SearchTerm) Test(org.junit.jupiter.api.Test)

Aggregations

Flags (jakarta.mail.Flags)24 BeanFactory (org.springframework.beans.factory.BeanFactory)19 Test (org.junit.jupiter.api.Test)17 Folder (jakarta.mail.Folder)16 Message (jakarta.mail.Message)16 Field (java.lang.reflect.Field)16 MimeMessage (jakarta.mail.internet.MimeMessage)15 IMAPFolder (com.sun.mail.imap.IMAPFolder)13 DirectFieldAccessor (org.springframework.beans.DirectFieldAccessor)12 ServerSetupTest (com.icegreen.greenmail.util.ServerSetupTest)11 Store (jakarta.mail.Store)5 URLName (jakarta.mail.URLName)5 SearchTerm (jakarta.mail.search.SearchTerm)5 MessagingException (jakarta.mail.MessagingException)3 FlagTerm (jakarta.mail.search.FlagTerm)3 NotTerm (jakarta.mail.search.NotTerm)3 Method (java.lang.reflect.Method)3 QueueChannel (org.springframework.integration.channel.QueueChannel)3 FolderClosedException (jakarta.mail.FolderClosedException)2 AddressException (jakarta.mail.internet.AddressException)2