You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/12/12 10:52:02 UTC
[09/16] james-project git commit: MAILBOX-357 Rework SpamAssassin
listener test
MAILBOX-357 Rework SpamAssassin listener test
We now need the messages to be persisted as they are not carried along.
Also, we need to re-create mappers to isolate tests between each others.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d972ed51
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d972ed51
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d972ed51
Branch: refs/heads/master
Commit: d972ed51006f822b44aaf3f3e8fe8b9226119bc7
Parents: f1cf245
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Dec 11 13:14:58 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Dec 12 17:50:58 2018 +0700
----------------------------------------------------------------------
.../spamassassin/SpamAssassinListenerTest.java | 105 +++++++++----------
1 file changed, 52 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/d972ed51/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
index dc1d1d0..04baa1d 100644
--- a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
+++ b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageMoves;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
@@ -50,14 +51,13 @@ import org.apache.james.mailbox.store.SystemMailboxesProviderImpl;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.event.MessageMoveEvent;
import org.apache.james.mailbox.store.mail.MailboxMapper;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import com.github.fge.lambdas.Throwing;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedMap;
@@ -66,17 +66,19 @@ public class SpamAssassinListenerTest {
public static final String USER = "user";
private static final MockMailboxSession MAILBOX_SESSION = new MockMailboxSession(USER);
private static final int UID_VALIDITY = 43;
+ private static final MessageUid UID = MessageUid.of(45);
+
private SpamAssassin spamAssassin;
private SpamAssassinListener listener;
private SimpleMailbox inbox;
- private MailboxId inboxId;
private SimpleMailbox mailbox1;
private MailboxId mailboxId1;
private MailboxId mailboxId2;
private MailboxId spamMailboxId;
private MailboxId spamCapitalMailboxId;
private MailboxId trashMailboxId;
- private MailboxMapper mailboxMapper;
+ private MailboxSessionMapperFactory mapperFactory;
+ private SimpleMailbox mailbox2;
@Before
public void setup() throws Exception {
@@ -86,13 +88,14 @@ public class SpamAssassinListenerTest {
.thenReturn(MAILBOX_SESSION);
spamAssassin = mock(SpamAssassin.class);
- MailboxSessionMapperFactory mapperFactory = mailboxManager.getMapperFactory();
- mailboxMapper = mapperFactory.getMailboxMapper(MAILBOX_SESSION);
+ mapperFactory = mailboxManager.getMapperFactory();
+ MailboxMapper mailboxMapper = mapperFactory.createMailboxMapper(MAILBOX_SESSION);
inbox = new SimpleMailbox(MailboxPath.forUser(USER, DefaultMailboxes.INBOX), UID_VALIDITY);
- inboxId = mailboxMapper.save(inbox);
mailbox1 = new SimpleMailbox(MailboxPath.forUser(USER, "mailbox1"), UID_VALIDITY);
+ mailbox2 = new SimpleMailbox(MailboxPath.forUser(USER, "mailbox2"), UID_VALIDITY);
+ mailboxMapper.save(inbox);
mailboxId1 = mailboxMapper.save(mailbox1);
- mailboxId2 = mailboxMapper.save(new SimpleMailbox(MailboxPath.forUser(USER, "mailbox2"), UID_VALIDITY));
+ mailboxId2 = mailboxMapper.save(mailbox2);
spamMailboxId = mailboxMapper.save(new SimpleMailbox(MailboxPath.forUser(USER, "Spam"), UID_VALIDITY));
spamCapitalMailboxId = mailboxMapper.save(new SimpleMailbox(MailboxPath.forUser(USER, "SPAM"), UID_VALIDITY));
trashMailboxId = mailboxMapper.save(new SimpleMailbox(MailboxPath.forUser(USER, "Trash"), UID_VALIDITY));
@@ -100,67 +103,61 @@ public class SpamAssassinListenerTest {
listener = new SpamAssassinListener(spamAssassin, systemMailboxesProvider, mailboxManager, mapperFactory, MailboxListener.ExecutionMode.SYNCHRONOUS);
}
- @After
- public void tearDown() throws MailboxException {
- mailboxMapper.list()
- .forEach(Throwing.consumer(mailboxMapper::delete));
- }
-
@Test
- public void isEventOnSpamMailboxShouldReturnFalseWhenMessageIsMovedToANonSpamMailbox() {
+ public void isEventOnSpamMailboxShouldReturnFalseWhenMessageIsMovedToANonSpamMailbox() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId2)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox2)))
.build();
assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void isEventOnSpamMailboxShouldReturnTrueWhenMailboxIsSpam() {
+ public void isEventOnSpamMailboxShouldReturnTrueWhenMailboxIsSpam() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(spamMailboxId)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId1)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox1)))
.build();
assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isTrue();
}
@Test
- public void isEventOnSpamMailboxShouldReturnFalseWhenMailboxIsSpamOtherCase() {
+ public void isEventOnSpamMailboxShouldReturnFalseWhenMailboxIsSpamOtherCase() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(spamCapitalMailboxId)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId1)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox1)))
.build();
assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void eventShouldCallSpamAssassinSpamLearningWhenTheEventMatches() {
+ public void eventShouldCallSpamAssassinSpamLearningWhenTheEventMatches() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(spamMailboxId)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId1)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox1)))
.build();
listener.event(messageMoveEvent);
@@ -169,75 +166,75 @@ public class SpamAssassinListenerTest {
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedBetweenNonSpamMailboxes() {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedBetweenNonSpamMailboxes() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId2)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox2)))
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedOutOfCapitalSpamMailbox() {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedOutOfCapitalSpamMailbox() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamCapitalMailboxId)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId2)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox2)))
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnTrueWhenMessageMovedOutOfSpamMailbox() {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnTrueWhenMessageMovedOutOfSpamMailbox() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamMailboxId)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId2)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox2)))
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isTrue();
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedToTrash() {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedToTrash() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamMailboxId)
.targetMailboxIds(trashMailboxId)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId2)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox2)))
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void eventShouldCallSpamAssassinHamLearningWhenTheEventMatches() {
+ public void eventShouldCallSpamAssassinHamLearningWhenTheEventMatches() throws Exception {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamMailboxId)
.targetMailboxIds(mailboxId1)
.build())
- .messages(ImmutableMap.of(MessageUid.of(45),
- createMessage(mailboxId1)))
+ .messages(ImmutableMap.of(UID,
+ createMessage(mailbox1)))
.build();
listener.event(messageMoveEvent);
@@ -246,13 +243,12 @@ public class SpamAssassinListenerTest {
}
@Test
- public void eventShouldCallSpamAssassinHamLearningWhenTheMessageIsAddedInInbox() {
- SimpleMailboxMessage message = createMessage(inboxId);
+ public void eventShouldCallSpamAssassinHamLearningWhenTheMessageIsAddedInInbox() throws Exception {
+ SimpleMailboxMessage message = createMessage(inbox);
+ ImmutableSortedMap<MessageUid, MessageMetaData> sortedMap = ImmutableSortedMap.of(UID, new SimpleMessageMetaData(message));
MailboxListener.Added addedEvent = new EventFactory().added(
- MAILBOX_SESSION,
- ImmutableSortedMap.of(MessageUid.of(45), new SimpleMessageMetaData(message)),
- inbox);
+ MAILBOX_SESSION, sortedMap, inbox);
listener.event(addedEvent);
@@ -260,25 +256,28 @@ public class SpamAssassinListenerTest {
}
@Test
- public void eventShouldNotCallSpamAssassinHamLearningWhenTheMessageIsAddedInAMailboxOtherThanInbox() {
- SimpleMailboxMessage message = createMessage(mailboxId1);
+ public void eventShouldNotCallSpamAssassinHamLearningWhenTheMessageIsAddedInAMailboxOtherThanInbox() throws Exception {
+ SimpleMailboxMessage message = createMessage(mailbox1);
MailboxListener.Added addedEvent = new EventFactory().added(
MAILBOX_SESSION,
- ImmutableSortedMap.of(MessageUid.of(45), new SimpleMessageMetaData(message)),
- inbox);
+ ImmutableSortedMap.of(UID, new SimpleMessageMetaData(message)),
+ mailbox1);
listener.event(addedEvent);
verifyNoMoreInteractions(spamAssassin);
}
- private SimpleMailboxMessage createMessage(MailboxId mailboxId) {
+ private SimpleMailboxMessage createMessage(Mailbox mailbox) throws MailboxException {
int size = 45;
int bodyStartOctet = 25;
byte[] content = "Subject: test\r\n\r\nBody\r\n".getBytes(StandardCharsets.UTF_8);
- return new SimpleMailboxMessage(TestMessageId.of(58), new Date(),
+ SimpleMailboxMessage message = new SimpleMailboxMessage(TestMessageId.of(58), new Date(),
size, bodyStartOctet, new SharedByteArrayInputStream(content), new Flags(), new PropertyBuilder(),
- mailboxId);
+ mailbox.getMailboxId());
+ MessageMetaData messageMetaData = mapperFactory.createMessageMapper(null).add(mailbox, message);
+ message.setUid(messageMetaData.getUid());
+ return message;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org