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 <[email protected]>
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", "[email protected]"))
                     .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", "[email protected]"))
                     .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", "[email protected]"))
                     .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", "[email protected]"))
                     .build()),
             session).getId();
 
-        openSearch.awaitForOpenSearch();
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 15);
 
         
assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To,
 "[email protected]")), 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", "[email protected]"))
+                    .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", "[email protected]"))
+                    .build()),
+            session).getId();
+
+        awaitForOpenSearch(QueryBuilders.matchAll().build().toQuery(), 15);
+
+        
assertThat(Flux.from(messageManager.search(SearchQuery.of(SearchQuery.address(SearchQuery.AddressType.To,
 "[email protected]")), 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", "[email protected]"))
                     .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", "[email protected]"))
                     .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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to