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