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 2019/01/17 06:50:36 UTC
[20/27] james-project git commit: JAMES-2641 Harden
MailboxManagerTest for events and do some fix
JAMES-2641 Harden MailboxManagerTest for events and do some fix
We need to also ensure the right dispatch key is being used...
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5a1d9d7b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5a1d9d7b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5a1d9d7b
Branch: refs/heads/master
Commit: 5a1d9d7b4ab55175c435afb5711c4bb8ee6f3294
Parents: 3f8b8f6
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Jan 15 17:35:51 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Jan 17 13:49:09 2019 +0700
----------------------------------------------------------------------
.../james/mailbox/MailboxManagerTest.java | 85 ++++++++++++++++++--
.../mailbox/store/StoreMessageManager.java | 22 ++---
2 files changed, 90 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/5a1d9d7b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 57c1b34..8a3d351 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -36,10 +36,12 @@ import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxManager.MailboxCapabilities;
import org.apache.james.mailbox.MessageManager.AppendCommand;
import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
import org.apache.james.mailbox.exception.AnnotationException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.TooLongMailboxNameException;
import org.apache.james.mailbox.mock.DataProvisioner;
+import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxAnnotation;
import org.apache.james.mailbox.model.MailboxAnnotationKey;
@@ -385,7 +387,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
@Test
void deleteMailboxShouldFireMailboxDeletionEvent() throws Exception {
assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Quota));
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
mailboxManager.deleteMailbox(inbox, session);
@@ -441,7 +443,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
@Test
void addingMessageShouldFireAddedEvent() throws Exception {
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
inboxManager.appendMessage(MessageManager.AppendCommand.builder()
.build(message), session);
@@ -459,7 +461,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
inboxManager.appendMessage(MessageManager.AppendCommand.builder().build(message), session);
inboxManager.setFlags(new Flags(Flags.Flag.DELETED), MessageManager.FlagsUpdateMode.ADD, MessageRange.all(), session);
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
inboxManager.expunge(MessageRange.all(), session);
assertThat(listener.getEvents())
@@ -475,7 +477,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
void setFlagsShouldFireFlagsUpdatedEvent() throws Exception {
inboxManager.appendMessage(MessageManager.AppendCommand.builder().build(message), session);
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
inboxManager.setFlags(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.ADD, MessageRange.all(), session);
assertThat(listener.getEvents())
@@ -493,7 +495,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
Optional<MailboxId> targetMailboxId = mailboxManager.createMailbox(newPath, session);
inboxManager.appendMessage(AppendCommand.builder().build(message), session);
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(targetMailboxId.get()));
mailboxManager.moveMessages(MessageRange.all(), inbox, newPath, session);
assertThat(listener.getEvents())
@@ -511,7 +513,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.createMailbox(newPath, session);
inboxManager.appendMessage(AppendCommand.builder().build(message), session);
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
mailboxManager.moveMessages(MessageRange.all(), inbox, newPath, session);
assertThat(listener.getEvents())
@@ -528,7 +530,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
Optional<MailboxId> targetMailboxId = mailboxManager.createMailbox(newPath, session);
inboxManager.appendMessage(AppendCommand.builder().build(message), session);
- retrieveEventBus(mailboxManager).register(listener);
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(targetMailboxId.get()));
mailboxManager.copyMessages(MessageRange.all(), inbox, newPath, session);
assertThat(listener.getEvents())
@@ -541,6 +543,75 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
}
@Test
+ void copyShouldFireMovedEventInTargetMailbox() throws Exception {
+ assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID));
+
+ Optional<MailboxId> targetMailboxId = mailboxManager.createMailbox(newPath, session);
+ ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session);
+
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(targetMailboxId.get()));
+ mailboxManager.copyMessages(MessageRange.all(), inbox, newPath, session);
+
+ assertThat(listener.getEvents())
+ .filteredOn(event -> event instanceof MessageMoveEvent)
+ .hasSize(1)
+ .extracting(event -> (MessageMoveEvent) event)
+ .element(0)
+ .satisfies(event -> assertThat(event.getMessageIds()).containsExactly(messageId.getMessageId()));
+ }
+
+ @Test
+ void copyShouldNotFireMovedEventInOriginMailbox() throws Exception {
+ assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID));
+
+ mailboxManager.createMailbox(newPath, session);
+ inboxManager.appendMessage(AppendCommand.builder().build(message), session);
+
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
+ mailboxManager.copyMessages(MessageRange.all(), inbox, newPath, session);
+
+ assertThat(listener.getEvents())
+ .filteredOn(event -> event instanceof MessageMoveEvent)
+ .isEmpty();;
+ }
+
+ @Test
+ void moveShouldFireMovedEventInTargetMailbox() throws Exception {
+ assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID));
+
+ Optional<MailboxId> targetMailboxId = mailboxManager.createMailbox(newPath, session);
+ ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session);
+
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(targetMailboxId.get()));
+ mailboxManager.moveMessages(MessageRange.all(), inbox, newPath, session);
+
+ assertThat(listener.getEvents())
+ .filteredOn(event -> event instanceof MessageMoveEvent)
+ .hasSize(1)
+ .extracting(event -> (MessageMoveEvent) event)
+ .element(0)
+ .satisfies(event -> assertThat(event.getMessageIds()).containsExactly(messageId.getMessageId()));
+ }
+
+ @Test
+ void moveShouldFireMovedEventInOriginMailbox() throws Exception {
+ assumeTrue(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.UniqueID));
+
+ mailboxManager.createMailbox(newPath, session);
+ ComposedMessageId messageId = inboxManager.appendMessage(AppendCommand.builder().build(message), session);
+
+ retrieveEventBus(mailboxManager).register(listener, new MailboxIdRegistrationKey(inboxId));
+ mailboxManager.moveMessages(MessageRange.all(), inbox, newPath, session);
+
+ assertThat(listener.getEvents())
+ .filteredOn(event -> event instanceof MessageMoveEvent)
+ .hasSize(1)
+ .extracting(event -> (MessageMoveEvent) event)
+ .element(0)
+ .satisfies(event -> assertThat(event.getMessageIds()).containsExactly(messageId.getMessageId()));
+ }
+
+ @Test
void copyShouldNotFireExpungedEventInOriginMailbox() throws Exception {
mailboxManager.createMailbox(newPath, session);
inboxManager.appendMessage(AppendCommand.builder().build(message), session);
http://git-wip-us.apache.org/repos/asf/james-project/blob/5a1d9d7b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 1b4b20e..81fc691 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -739,6 +739,10 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
messageIds.add(message.getMessageId());
}
+ MessageMoves messageMoves = MessageMoves.builder()
+ .previousMailboxIds(getMailboxEntity().getMailboxId())
+ .targetMailboxIds(to.getMailboxEntity().getMailboxId(), getMailboxEntity().getMailboxId())
+ .build();
Flux.merge(
eventBus.dispatch(EventFactory.added()
.randomEventId()
@@ -749,13 +753,10 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
new MailboxIdRegistrationKey(to.getMailboxEntity().getMailboxId())),
eventBus.dispatch(EventFactory.moved()
.session(session)
- .messageMoves(MessageMoves.builder()
- .previousMailboxIds(getMailboxEntity().getMailboxId())
- .targetMailboxIds(to.getMailboxEntity().getMailboxId(), getMailboxEntity().getMailboxId())
- .build())
+ .messageMoves(messageMoves)
.messageId(messageIds.build())
.build(),
- new MailboxIdRegistrationKey(mailbox.getMailboxId())))
+ messageMoves.impactedMailboxIds().map(MailboxIdRegistrationKey::new).collect(Guavate.toImmutableSet())))
.then().block();
return copiedUids;
@@ -772,6 +773,10 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
messageIds.add(message.getMessageId());
}
+ MessageMoves messageMoves = MessageMoves.builder()
+ .previousMailboxIds(getMailboxEntity().getMailboxId())
+ .targetMailboxIds(to.getMailboxEntity().getMailboxId())
+ .build();
Flux.merge(
eventBus.dispatch(EventFactory.added()
.randomEventId()
@@ -788,14 +793,11 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
.build(),
new MailboxIdRegistrationKey(mailbox.getMailboxId())),
eventBus.dispatch(EventFactory.moved()
- .messageMoves(MessageMoves.builder()
- .previousMailboxIds(getMailboxEntity().getMailboxId())
- .targetMailboxIds(to.getMailboxEntity().getMailboxId())
- .build())
+ .messageMoves(messageMoves)
.messageId(messageIds.build())
.session(session)
.build(),
- new MailboxIdRegistrationKey(mailbox.getMailboxId())))
+ messageMoves.impactedMailboxIds().map(MailboxIdRegistrationKey::new).collect(Guavate.toImmutableSet())))
.then().block();
return moveUids;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org