You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2026/02/04 07:30:50 UTC

(james-project) 02/03: MAILBOX-401 Fix test suite

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 b2d88ad6186d800c8bdf0b7e773fc1b5836bfddb
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Tue Feb 3 12:36:14 2026 +0100

    MAILBOX-401 Fix test suite
---
 .../opensearch/OpenSearchIntegrationTest.java      | 124 ++++++++++++++++-----
 1 file changed, 96 insertions(+), 28 deletions(-)

diff --git a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
index f8ff7175e7..19e279f79b 100644
--- a/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
+++ b/mailbox/opensearch/src/test/java/org/apache/james/mailbox/opensearch/OpenSearchIntegrationTest.java
@@ -571,100 +571,168 @@ class OpenSearchIntegrationTest extends AbstractMessageSearchIndexTest {
 
     }
 
-    @Disabled("MAILBOX-401 '-' causes address matching to fail")
     @Test
     void localPartShouldBeMatchedWhenHyphen() throws Exception {
         MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MailboxSession session = MailboxSessionUtil.create(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
-        Message.Builder messageBuilder = Message.Builder
-            .of()
-            .setSubject("test")
-            .setBody("testmail", StandardCharsets.UTF_8);
-
         ComposedMessageId messageId1 = messageManager.appendMessage(
             MessageManager.AppendCommand.builder().build(
-                messageBuilder
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
                     .addField(new RawField("To", "alice-test@domain.tld"))
                     .build()),
             session).getId();
 
         ComposedMessageId messageId2 = messageManager.appendMessage(
             MessageManager.AppendCommand.builder().build(
-                messageBuilder
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
                     .addField(new RawField("To", "bob@other.tld"))
                     .build()),
             session).getId();
 
-        openSearch.awaitForOpenSearch();
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 15);
 
         assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "alice-test")), session)).toStream())
-            .containsOnly(messageId2.getUid());
+            .containsOnly(messageId1.getUid());
     }
 
-    @Disabled("MAILBOX-401 '-' causes address matching to fail")
     @Test
     void addressShouldBeMatchedWhenHyphen() throws Exception {
         MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MailboxSession session = MailboxSessionUtil.create(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
-        Message.Builder messageBuilder = Message.Builder
-            .of()
-            .setSubject("test")
-            .setBody("testmail", StandardCharsets.UTF_8);
-
         ComposedMessageId messageId1 = messageManager.appendMessage(
             MessageManager.AppendCommand.builder().build(
-                messageBuilder
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
                     .addField(new RawField("To", "alice-test@domain.tld"))
                     .build()),
             session).getId();
 
         ComposedMessageId messageId2 = messageManager.appendMessage(
             MessageManager.AppendCommand.builder().build(
-                messageBuilder
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
                     .addField(new RawField("To", "bob@other.tld"))
                     .build()),
             session).getId();
 
-        openSearch.awaitForOpenSearch();
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 15);
 
         assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "alice-test@domain.tld")), session)).toStream())
             .containsOnly(messageId1.getUid());
+
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "alice-test")), session)).toStream())
+            .containsOnly(messageId1.getUid());
+
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "alice")), session)).toStream())
+            .containsOnly(messageId1.getUid());
     }
 
-    @Disabled("MAILBOX-401 '-' causes address matching to fail")
     @Test
-    void domainPartShouldBeMatchedWhenHyphen() throws Exception {
+    void addressShouldBeMatchedOnSubLocalParts() throws Exception {
         MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
         MailboxSession session = MailboxSessionUtil.create(USERNAME);
         MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
-        Message.Builder messageBuilder = Message.Builder
-            .of()
-            .setSubject("test")
-            .setBody("testmail", StandardCharsets.UTF_8);
+        ComposedMessageId messageId1 = messageManager.appendMessage(
+            MessageManager.AppendCommand.builder().build(
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
+                    .addField(new RawField("To", "alice.test@domain.tld"))
+                    .build()),
+            session).getId();
+
+        ComposedMessageId messageId2 = messageManager.appendMessage(
+            MessageManager.AppendCommand.builder().build(
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
+                    .addField(new RawField("To", "bob@other.tld"))
+                    .build()),
+            session).getId();
+
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 15);
+
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "alice.test@domain.tld")), session)).toStream())
+            .containsOnly(messageId1.getUid());
+
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "alice.test")), session)).toStream())
+            .containsOnly(messageId1.getUid());
+    }
+
+    @Test
+    void searchDomainInSubject() throws Exception {
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
+        MailboxSession session = MailboxSessionUtil.create(USERNAME);
+        MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
 
         ComposedMessageId messageId1 = messageManager.appendMessage(
             MessageManager.AppendCommand.builder().build(
-                messageBuilder
+                Message.Builder
+                    .of()
+                    .setBody("testmail", StandardCharsets.UTF_8)
+                    .setSubject("Renew SSL certificate linagora.com")
+                    .build()),
+            session).getId();
+
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 14);
+
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.subject("certificate")), session)).toStream())
+            .containsOnly(messageId1.getUid());
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.subject("Renew")), session)).toStream())
+            .containsOnly(messageId1.getUid());
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.subject("linagora.com")), session)).toStream())
+            .containsOnly(messageId1.getUid());
+    }
+
+    @Test
+    void domainPartShouldBeMatchedWhenHyphen() throws Exception {
+        MailboxPath mailboxPath = MailboxPath.forUser(USERNAME, INBOX);
+        MailboxSession session = MailboxSessionUtil.create(USERNAME);
+        MessageManager messageManager = storeMailboxManager.getMailbox(mailboxPath, session);
+
+        ComposedMessageId messageId1 = messageManager.appendMessage(
+            MessageManager.AppendCommand.builder().build(
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
                     .addField(new RawField("To", "alice@domain-test.tld"))
                     .build()),
             session).getId();
 
         ComposedMessageId messageId2 = messageManager.appendMessage(
             MessageManager.AppendCommand.builder().build(
-                messageBuilder
+                Message.Builder
+                    .of()
+                    .setSubject("test")
+                    .setBody("testmail", StandardCharsets.UTF_8)
                     .addField(new RawField("To", "bob@other.tld"))
                     .build()),
             session).getId();
 
-        openSearch.awaitForOpenSearch();
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 15);
 
         assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "domain-test.tld")), session)).toStream())
             .containsOnly(messageId1.getUid());
+        assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To, "domain-test")), session)).toStream())
+            .containsOnly(messageId1.getUid());
     }
     
     @Test


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