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/12/06 02:34:25 UTC

[james-project] 15/21: JAMES-2991 Add error tests for ComputeMessagePreviewListenerTest

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5b0c20a3f8c38874929b4f38442f37c3c1f67163
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Mon Dec 2 16:44:12 2019 +0700

    JAMES-2991 Add error tests for ComputeMessagePreviewListenerTest
---
 .../ComputeMessageFastViewProjectionListener.java  |  4 +-
 ...mputeMessageFastViewProjectionListenerTest.java | 62 ++++++++++++++++++++--
 2 files changed, 61 insertions(+), 5 deletions(-)

diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
index 5548448..4db7a1c 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListener.java
@@ -44,6 +44,7 @@ import org.parboiled.common.ImmutableList;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.steveash.guavate.Guavate;
+import com.google.common.annotations.VisibleForTesting;
 
 import reactor.core.publisher.Flux;
 import reactor.core.scheduler.Schedulers;
@@ -100,7 +101,8 @@ public class ComputeMessageFastViewProjectionListener implements MailboxListener
             .asList();
     }
 
-    private MessageFastViewPrecomputedProperties computeFastViewPrecomputedProperties(MessageResult messageResult) throws MailboxException, IOException {
+    @VisibleForTesting
+    MessageFastViewPrecomputedProperties computeFastViewPrecomputedProperties(MessageResult messageResult) throws MailboxException, IOException {
         MessageFullView message = messageFullViewFactory.fromMessageResults(ImmutableList.of(messageResult));
 
         return MessageFastViewPrecomputedProperties.builder()
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java
index 2e58340..c74b111 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/event/ComputeMessageFastViewProjectionListenerTest.java
@@ -20,7 +20,11 @@
 package org.apache.james.jmap.event;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.spy;
 
+import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
 
@@ -37,6 +41,11 @@ import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.events.Group;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.MemoryEventDeadLetters;
+import org.apache.james.mailbox.events.RetryBackoffConfiguration;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.FetchGroup;
@@ -48,6 +57,7 @@ import org.apache.james.mailbox.store.FakeAuthenticator;
 import org.apache.james.mailbox.store.FakeAuthorizator;
 import org.apache.james.mailbox.store.SessionProvider;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.util.html.HtmlTextExtractor;
 import org.apache.james.util.mime.MessageContentExtractor;
@@ -78,12 +88,26 @@ class ComputeMessageFastViewProjectionListenerTest {
 
     private MessageManager inboxMessageManager;
     private MessageManager otherBoxMessageManager;
+    private ComputeMessageFastViewProjectionListener listener;
+    private MessageIdManager messageIdManager;
+    private MemoryEventDeadLetters eventDeadLetters;
 
     @BeforeEach
     void setup() throws Exception {
-        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
+        eventDeadLetters = new MemoryEventDeadLetters();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.builder()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .eventBus(new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()), RetryBackoffConfiguration.DEFAULT, eventDeadLetters))
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
+            .noPreDeletionHooks()
+            .storeQuotaManager()
+            .build();
+
         mailboxManager = resources.getMailboxManager();
-        MessageIdManager messageIdManager = resources.getMessageIdManager();
+        messageIdManager = spy(resources.getMessageIdManager());
 
         messageFastViewProjection = new MemoryMessageFastViewProjection();
 
@@ -97,8 +121,8 @@ class ComputeMessageFastViewProjectionListenerTest {
 
         SessionProvider sessionProvider = new SessionProvider(authenticator, FakeAuthorizator.defaultReject());
 
-        ComputeMessageFastViewProjectionListener listener = new ComputeMessageFastViewProjectionListener(sessionProvider, messageIdManager,
-            messageFastViewProjection, messageFullViewFactory);
+        listener = spy(new ComputeMessageFastViewProjectionListener(sessionProvider, messageIdManager,
+            messageFastViewProjection, messageFullViewFactory));
 
         resources.getEventBus().register(listener);
 
@@ -187,6 +211,36 @@ class ComputeMessageFastViewProjectionListenerTest {
             .isEqualTo(MESSAGE_FAST_VIEW_PRECOMPUTED_PROPERTIES);
     }
 
+    @Test
+    void shouldStoreEventInDeadLettersWhenComputeFastViewPrecomputedPropertiesException() throws Exception {
+        doThrow(new IOException())
+            .when(listener)
+            .computeFastViewPrecomputedProperties(any());
+
+        inboxMessageManager.appendMessage(
+            MessageManager.AppendCommand.builder()
+                .build(previewMessage()),
+            mailboxSession);
+
+        assertThat(eventDeadLetters.failedIds(ComputeMessageFastViewProjectionListener.GROUP).collectList().block())
+            .hasSize(1);
+    }
+
+    @Test
+    void shouldStoreEventInDeadLettersWhenGetMessagesException() throws Exception {
+        doThrow(new MailboxException())
+            .when(messageIdManager)
+            .getMessages(any(), any(), any());
+
+        inboxMessageManager.appendMessage(
+            MessageManager.AppendCommand.builder()
+                .build(previewMessage()),
+            mailboxSession);
+
+        assertThat(eventDeadLetters.failedIds(ComputeMessageFastViewProjectionListener.GROUP).collectList().block())
+            .hasSize(1);
+    }
+
     private Message previewMessage() throws Exception {
         return Message.Builder.of()
             .setSubject("Preview message")


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org