This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit e16e9e27ddfa6352e51b0ef36435677f7d4fc2ab Author: Rémi Kowalski <[email protected]> AuthorDate: Mon Mar 25 13:58:36 2019 +0100 JAMES-2691 add contract test, only an event approved by isHandling method should be received by the listener --- .../apache/james/mailbox/events/EventBusTestFixture.java | 3 +++ .../java/org/apache/james/mailbox/events/GroupContract.java | 13 +++++++++++++ .../java/org/apache/james/mailbox/events/KeyContract.java | 13 +++++++++++++ .../mailbox/caching/CacheInvalidatingMailboxListener.java | 2 -- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java index 3156d00..ed3087b 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java @@ -20,6 +20,7 @@ package org.apache.james.mailbox.events; import static com.jayway.awaitility.Awaitility.await; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -93,6 +94,7 @@ public interface EventBusTestFixture { Event.EventId EVENT_ID_2 = Event.EventId.of("5a7a9f3f-5f03-44be-b457-a51e93760645"); MailboxListener.MailboxEvent EVENT = new MailboxListener.MailboxAdded(SESSION_ID, USER, MAILBOX_PATH, TEST_ID, EVENT_ID); MailboxListener.MailboxEvent EVENT_2 = new MailboxListener.MailboxAdded(SESSION_ID, USER, MAILBOX_PATH, TEST_ID, EVENT_ID_2); + MailboxListener.MailboxRenamed EVENT_UNSUPPORTED_BY_LISTENER = new MailboxListener.MailboxRenamed(SESSION_ID, USER, MAILBOX_PATH, TEST_ID, MAILBOX_PATH, EVENT_ID_2); java.time.Duration ONE_SECOND = java.time.Duration.ofSeconds(1); java.time.Duration THIRTY_SECONDS = java.time.Duration.ofSeconds(30); @@ -114,6 +116,7 @@ public interface EventBusTestFixture { static MailboxListener newListener() { MailboxListener listener = mock(MailboxListener.class); when(listener.getExecutionMode()).thenReturn(MailboxListener.ExecutionMode.SYNCHRONOUS); + when(listener.isHandling(any(MailboxListener.MailboxAdded.class))).thenReturn(true); return listener; } } diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java index 2ba6686..f68c6d7 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java @@ -22,6 +22,7 @@ package org.apache.james.mailbox.events; import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT; import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT_2; import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT_ID; +import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT_UNSUPPORTED_BY_LISTENER; import static org.apache.james.mailbox.events.EventBusTestFixture.FIVE_HUNDRED_MS; import static org.apache.james.mailbox.events.EventBusTestFixture.GROUP_A; import static org.apache.james.mailbox.events.EventBusTestFixture.GROUP_B; @@ -148,6 +149,18 @@ public interface GroupContract { } @Test + default void groupListenersShouldReceiveOnlyHandledEvents() throws Exception { + MailboxListener listener = newListener(); + + eventBus().register(listener, GROUP_A); + + eventBus().dispatch(EVENT_UNSUPPORTED_BY_LISTENER, NO_KEYS).block(); + + verify(listener, after(FIVE_HUNDRED_MS.toMillis()).never()) + .event(any()); + } + + @Test default void dispatchShouldNotThrowWhenAGroupListenerFails() throws Exception { MailboxListener listener = newListener(); doThrow(new RuntimeException()).when(listener).event(any()); diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/events/KeyContract.java b/mailbox/api/src/test/java/org/apache/james/mailbox/events/KeyContract.java index e007eff..d786dfa 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/events/KeyContract.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/events/KeyContract.java @@ -21,6 +21,7 @@ package org.apache.james.mailbox.events; import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT; import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT_2; +import static org.apache.james.mailbox.events.EventBusTestFixture.EVENT_UNSUPPORTED_BY_LISTENER; import static org.apache.james.mailbox.events.EventBusTestFixture.FIVE_HUNDRED_MS; import static org.apache.james.mailbox.events.EventBusTestFixture.KEY_1; import static org.apache.james.mailbox.events.EventBusTestFixture.KEY_2; @@ -96,6 +97,18 @@ public interface KeyContract extends EventBusContract { .event(any()); } + @Test + default void registeredListenersShouldReceiveOnlyHandledEvents() throws Exception { + MailboxListener listener = newListener(); + + eventBus().register(listener, KEY_1); + + eventBus().dispatch(EVENT_UNSUPPORTED_BY_LISTENER, KEY_1).block(); + + verify(listener, after(FIVE_HUNDRED_MS.toMillis()).never()) + .event(any()); + } + @Test default void dispatchShouldNotThrowWhenARegisteredListenerFails() throws Exception { MailboxListener listener = newListener(); diff --git a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java index 6612d6c..930b86f 100644 --- a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java +++ b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java @@ -48,9 +48,7 @@ public class CacheInvalidatingMailboxListener implements MailboxListener.GroupMa @Override public void event(Event event) { - if (isHandling(event)) { mailboxEvent((MailboxEvent) event); - } } private void mailboxEvent(MailboxEvent event) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
