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 ro...@apache.org on 2019/10/29 16:09:47 UTC

[james-project] branch master updated: JAMES-2935 Add test to ensure that over-specific filter does not exclude valid matches in GetMessagesList

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


The following commit(s) were added to refs/heads/master by this push:
     new 6c93851  JAMES-2935 Add test to ensure that over-specific filter does not exclude valid matches in GetMessagesList
6c93851 is described below

commit 6c93851c527a306511076c73348c43307912ca48
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Mon Oct 28 14:39:58 2019 +0100

    JAMES-2935 Add test to ensure that over-specific filter does not exclude valid matches in GetMessagesList
---
 .../integration/GetMessageListMethodTest.java      | 34 ++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
index 7bf5613..53ea813 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
@@ -50,7 +50,11 @@ import java.nio.charset.StandardCharsets;
 import java.time.LocalDate;
 import java.time.ZoneId;
 import java.util.Date;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 import javax.mail.Flags;
 
@@ -62,12 +66,14 @@ import org.apache.james.jmap.draft.model.Number;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.MailboxACL.Right;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.mime4j.dom.Multipart;
 import org.apache.james.mime4j.message.BodyPartBuilder;
@@ -83,6 +89,8 @@ import org.apache.james.util.date.ImapDateTimeFormatter;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+
+import com.github.fge.lambdas.Throwing;
 import org.awaitility.Duration;
 import org.hamcrest.Matchers;
 import org.junit.After;
@@ -91,6 +99,7 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import io.restassured.RestAssured;
+import scala.collection.immutable.Stream;
 
 public abstract class GetMessageListMethodTest {
     public static final int LIMIT_TO_3_MESSAGES = 3;
@@ -889,6 +898,31 @@ public abstract class GetMessageListMethodTest {
             .body(ARGUMENTS + ".messageIds", contains(message.getMessageId().serialize()));
     }
 
+    @Category(BasicFeature.class)
+    @Test
+    public void getMessageListShouldNotExcludeMessagesWhenInMailboxesFilterMatchesMailboxAndText() throws Exception {
+        MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE, "mailbox");
+        List<String> messageIds = IntStream.range(0, 3)
+            .boxed()
+            .map(Throwing.function((ignored) -> mailboxProbe.appendMessage(ALICE, MailboxPath.forUser(ALICE, "mailbox"),
+                    new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), false, new Flags())).sneakyThrow())
+            .map(ComposedMessageId::getMessageId)
+            .map(MessageId::serialize)
+            .collect(Collectors.toList());
+
+        await();
+
+        given()
+            .header("Authorization", aliceAccessToken.serialize())
+            .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"],\"text\":\"test\"}}, \"#0\"]]")
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("messageList"))
+            .body(ARGUMENTS + ".messageIds", equalTo(messageIds));
+    }
+
     @Test
     public void getMessageListShouldExcludeMessagesWhenMultipleInMailboxesFilterMatches() throws Exception {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE, "mailbox");


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