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]
