You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by hq...@apache.org on 2026/06/21 12:23:24 UTC
(james-project) 05/06: [BUILD] MDNSendMethodContract: isolate using different users
This is an automated email from the ASF dual-hosted git repository.
quantranhong1999 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit f0facbb290ab44c0af4081b4d3b94f7e79c11e9c
Author: Quan Tran <hq...@linagora.com>
AuthorDate: Fri Jun 19 17:01:53 2026 +0700
[BUILD] MDNSendMethodContract: isolate using different users
### Before
- memory: 11 sec
- postgres: 23 sec
- distributed: 1 min 47 sec
### After
- memory: 4 sec
- postgres: 6 sec
- distributed: 15 sec
---
.../distributed/DistributedMDNSendMethodTest.java | 2 +-
.../rfc8621/contract/MDNSendMethodContract.scala | 320 ++++++++++++---------
.../rfc8621/memory/MemoryMDNSendMethodTest.java | 2 +-
.../postgres/PostgresMDNSendMethodTest.java | 2 +-
4 files changed, 181 insertions(+), 145 deletions(-)
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMDNSendMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMDNSendMethodTest.java
index 809cfdf753..e794fb75dd 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMDNSendMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMDNSendMethodTest.java
@@ -25,7 +25,7 @@ import org.apache.james.mailbox.model.MessageId;
import com.datastax.oss.driver.api.core.uuid.Uuids;
-class DistributedMDNSendMethodTest extends DistributedBase implements MDNSendMethodContract {
+class DistributedMDNSendMethodTest extends PerClassDistributedBase implements MDNSendMethodContract {
public static final CassandraMessageId.Factory MESSAGE_ID_FACTORY = new CassandraMessageId.Factory();
@Override
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MDNSendMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MDNSendMethodContract.scala
index ce4ac317cb..6048e88479 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MDNSendMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MDNSendMethodContract.scala
@@ -21,8 +21,10 @@ package org.apache.james.jmap.rfc8621.contract
import java.nio.charset.StandardCharsets
import java.time.Duration
-import java.util.concurrent.TimeUnit
+import java.util.UUID
+import java.util.concurrent.{TimeUnit, atomic}
+import com.google.common.hash.Hashing
import io.netty.handler.codec.http.HttpHeaderNames.ACCEPT
import io.restassured.RestAssured._
import io.restassured.http.ContentType.JSON
@@ -34,8 +36,8 @@ import org.apache.james.core.Username
import org.apache.james.jmap.MessageIdProbe
import org.apache.james.jmap.core.ResponseObject.SESSION_STATE
import org.apache.james.jmap.http.UserCredential
-import org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, ACCOUNT_ID, ANDRE, ANDRE_ACCOUNT_ID, ANDRE_IDENTITY_ID, ANDRE_PASSWORD, BOB, BOB_PASSWORD, CEDRIC, DAVID, DOMAIN, IDENTITY_ID, authScheme, baseRequestSpecBuilder}
-import org.apache.james.jmap.rfc8621.contract.MDNSendMethodContract.TAG_MDN_MESSAGE_FORMAT
+import org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, ANDRE_PASSWORD, BOB_PASSWORD, DOMAIN, authScheme, baseRequestSpecBuilder}
+import org.apache.james.jmap.rfc8621.contract.MDNSendMethodContract.{TAG_MDN_MESSAGE_FORMAT, TestContext}
import org.apache.james.mailbox.MessageManager.AppendCommand
import org.apache.james.mailbox.model.{MailboxId, MailboxPath, MessageId, MultimailboxesSearchQuery, SearchQuery}
import org.apache.james.mime4j.codec.DecodeMonitor
@@ -52,10 +54,29 @@ import org.junit.jupiter.api.{BeforeEach, Tag, Test}
import scala.jdk.CollectionConverters._
object MDNSendMethodContract {
+ case class TestContext(bobUsername: Username, bobAccountId: String, bobIdentityId: String, andreUsername: Username, andreAccountId: String, andreIdentityId: String, cedricUsername: Username, davidUsername: Username)
+
val TAG_MDN_MESSAGE_FORMAT: "MDN_MESSAGE_FORMAT" = "MDN_MESSAGE_FORMAT"
+
+ val currentContext: atomic.AtomicReference[TestContext] = new atomic.AtomicReference[TestContext]()
}
trait MDNSendMethodContract {
+ def bobUsername: Username = MDNSendMethodContract.currentContext.get().bobUsername
+ def bobAccountId: String = MDNSendMethodContract.currentContext.get().bobAccountId
+ def bobIdentityId: String = MDNSendMethodContract.currentContext.get().bobIdentityId
+ def andreUsername: Username = MDNSendMethodContract.currentContext.get().andreUsername
+ def andreAccountId: String = MDNSendMethodContract.currentContext.get().andreAccountId
+ def andreIdentityId: String = MDNSendMethodContract.currentContext.get().andreIdentityId
+ def cedricUsername: Username = MDNSendMethodContract.currentContext.get().cedricUsername
+ def davidUsername: Username = MDNSendMethodContract.currentContext.get().davidUsername
+
+ private def accountId(username: Username): String =
+ Hashing.sha256().hashString(username.asString(), StandardCharsets.UTF_8).toString
+
+ private def identityId(username: Username): String =
+ UUID.nameUUIDFromBytes(username.asString().getBytes(StandardCharsets.UTF_8)).toString
+
private lazy val slowPacedPollInterval: Duration = ONE_HUNDRED_MILLISECONDS
private lazy val calmlyAwait: ConditionFactory = Awaitility.`with`
@@ -81,16 +102,16 @@ trait MDNSendMethodContract {
Message.Builder
.of
.setSubject(s"Subject of original message$tag")
- .setSender(BOB.asString)
- .setFrom(BOB.asString)
- .setTo(ANDRE.asString)
- .addField(new RawField("Disposition-Notification-To", s"Bob <${BOB.asString()}>"))
+ .setSender(bobUsername.asString)
+ .setFrom(bobUsername.asString)
+ .setTo(andreUsername.asString)
+ .addField(new RawField("Disposition-Notification-To", s"Bob <${bobUsername.asString()}>"))
.setBody(s"Body of mail$tag, that mdn related", StandardCharsets.UTF_8)
.build
private def buildBOBRequestSpecification(server: GuiceJamesServer): RequestSpecification =
baseRequestSpecBuilder(server)
- .setAuth(authScheme(UserCredential(BOB, BOB_PASSWORD)))
+ .setAuth(authScheme(UserCredential(bobUsername, BOB_PASSWORD)))
.addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
.build
@@ -98,15 +119,30 @@ trait MDNSendMethodContract {
@BeforeEach
def setUp(server: GuiceJamesServer): Unit = {
+ val uniqueSuffix = UUID.randomUUID().toString.replace("-", "").take(8)
+ val bob = Username.fromLocalPartWithDomain(s"bob$uniqueSuffix", DOMAIN)
+ val andre = Username.fromLocalPartWithDomain(s"andre$uniqueSuffix", DOMAIN)
+ val cedric = Username.fromLocalPartWithDomain(s"cedric$uniqueSuffix", DOMAIN)
+ val david = Username.fromLocalPartWithDomain(s"david$uniqueSuffix", DOMAIN)
+ MDNSendMethodContract.currentContext.set(TestContext(
+ bobUsername = bob,
+ bobAccountId = accountId(bob),
+ bobIdentityId = identityId(bob),
+ andreUsername = andre,
+ andreAccountId = accountId(andre),
+ andreIdentityId = identityId(andre),
+ cedricUsername = cedric,
+ davidUsername = david))
+
server.getProbe(classOf[DataProbeImpl])
.fluent()
.addDomain(DOMAIN.asString())
- .addUser(BOB.asString(), BOB_PASSWORD)
- .addUser(ANDRE.asString, ANDRE_PASSWORD)
- .addUser(DAVID.asString, DAVID.asString())
+ .addUser(bob.asString(), BOB_PASSWORD)
+ .addUser(andre.asString, ANDRE_PASSWORD)
+ .addUser(david.asString, david.asString())
requestSpecification = baseRequestSpecBuilder(server)
- .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+ .setAuth(authScheme(UserCredential(andre, ANDRE_PASSWORD)))
.addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
.build()
}
@@ -115,14 +151,14 @@ trait MDNSendMethodContract {
def mdnSendShouldBeSuccessAndSendMailSuccessfully(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
val bobInboxId: MailboxId = mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -137,8 +173,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -188,12 +224,12 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "sent": {
| "k1546": {
- | "finalRecipient": "rfc822; ${ANDRE.asString}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString}",
| "includeOriginalMessage": false,
- | "originalRecipient": "rfc822; ${ANDRE.asString()}"
+ | "originalRecipient": "rfc822; ${andreUsername.asString()}"
| }
| }
| },
@@ -202,7 +238,7 @@ trait MDNSendMethodContract {
| [
| "Email/set",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "oldState": "23",
| "newState": "42",
| "updated": {
@@ -220,7 +256,7 @@ trait MDNSendMethodContract {
| "methodCalls": [[
| "Email/query",
| {
- | "accountId": "$ACCOUNT_ID",
+ | "accountId": "$bobAccountId",
| "filter": {"inMailbox": "${bobInboxId.serialize}"}
| },
| "c1"]]
@@ -249,16 +285,16 @@ trait MDNSendMethodContract {
@Test
def mdnSendShouldBeSuccessWhenRequestAssignFinalRecipient(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- server.getProbe(classOf[DataProbeImpl]).addUserAliasMapping("david", "domain.tld", "andre@domain.tld")
+ server.getProbe(classOf[DataProbeImpl]).addUserAliasMapping(davidUsername.getLocalPart, DOMAIN.asString, andreUsername.asString)
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -273,14 +309,14 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
| "subject": "Read receipt for: World domination",
| "textBody": "This receipt shows that the email has been displayed on your recipient's computer. ",
- | "finalRecipient": "rfc822; ${ANDRE.asString()}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString()}",
| "disposition": {
| "actionMode": "manual-action",
| "sendingMode": "mdn-sent-manually",
@@ -321,11 +357,11 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "sent": {
| "k1546": {
| "includeOriginalMessage": false,
- | "originalRecipient": "rfc822; ${ANDRE.asString()}"
+ | "originalRecipient": "rfc822; ${andreUsername.asString()}"
| }
| }
| },
@@ -334,7 +370,7 @@ trait MDNSendMethodContract {
| [
| "Email/set",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "oldState": "23",
| "newState": "42",
| "updated": {
@@ -351,14 +387,14 @@ trait MDNSendMethodContract {
def mdnSendShouldBeFailWhenDispositionPropertyIsInvalid(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -373,8 +409,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -420,11 +456,11 @@ trait MDNSendMethodContract {
def mdnSendShouldBeFailWhenFinalRecipientIsInvalid(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -439,8 +475,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -489,11 +525,11 @@ trait MDNSendMethodContract {
def mdnSendShouldBeFailWhenIdentityIsNotAllowedToUseFinalRecipient(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -508,14 +544,14 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
| "subject": "Read receipt for: World domination",
| "textBody": "This receipt shows that the email has been displayed on your recipient's computer. ",
- | "finalRecipient" : "rfc822; ${CEDRIC.asString}",
+ | "finalRecipient" : "rfc822; ${cedricUsername.asString}",
| "disposition": {
| "actionMode": "manual-action",
| "sendingMode": "mdn-sent-manually",
@@ -555,11 +591,11 @@ trait MDNSendMethodContract {
def implicitEmailSetShouldNotBeAttemptedWhenMDNIsNotSent(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -574,8 +610,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -616,14 +652,14 @@ trait MDNSendMethodContract {
def implicitEmailSetShouldNotBeAttemptedWhenOnSuccessUpdateEmailIsNull(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -638,8 +674,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -680,12 +716,12 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "sent": {
| "k1546": {
- | "finalRecipient": "rfc822; ${ANDRE.asString}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString}",
| "includeOriginalMessage": false,
- | "originalRecipient": "rfc822; ${ANDRE.asString}"
+ | "originalRecipient": "rfc822; ${andreUsername.asString}"
| }
| }
| },
@@ -699,22 +735,22 @@ trait MDNSendMethodContract {
def mdnSendShouldAcceptSeveralMDNObjects(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId1: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
val relatedEmailId2: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("2")))
.getMessageId
val relatedEmailId3: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("3")))
.getMessageId
@@ -729,8 +765,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId1.serialize()}",
@@ -796,27 +832,27 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "sent": {
| "k1546": {
| "subject": "[Received] Subject of original message1",
| "textBody": "The email has been displayed on your recipient's computer",
- | "originalRecipient": "rfc822; ${ANDRE.asString()}",
- | "finalRecipient": "rfc822; ${ANDRE.asString()}",
+ | "originalRecipient": "rfc822; ${andreUsername.asString()}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString()}",
| "includeOriginalMessage": false
| },
| "k1547": {
| "subject": "[Received] Subject of original message2",
| "textBody": "The email has been displayed on your recipient's computer",
- | "originalRecipient": "rfc822; ${ANDRE.asString()}",
- | "finalRecipient": "rfc822; ${ANDRE.asString()}",
+ | "originalRecipient": "rfc822; ${andreUsername.asString()}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString()}",
| "includeOriginalMessage": false
| },
| "k1548": {
| "subject": "[Received] Subject of original message3",
| "textBody": "The email has been displayed on your recipient's computer",
- | "originalRecipient": "rfc822; ${ANDRE.asString()}",
- | "finalRecipient": "rfc822; ${ANDRE.asString()}",
+ | "originalRecipient": "rfc822; ${andreUsername.asString()}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString()}",
| "includeOriginalMessage": false
| }
| }
@@ -826,7 +862,7 @@ trait MDNSendMethodContract {
| [
| "Email/set",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "oldState": "3be4a1bc-0b41-4e33-aaf0-585e567a5af5",
| "newState": "3e1d5c70-9ca4-4c02-a35c-f54a51d253e3",
| "updated": {
@@ -845,18 +881,18 @@ trait MDNSendMethodContract {
def mdnSendMixValidAndNotFoundAndInvalid(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val validEmailId1: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
val validEmailId2: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("2")))
.getMessageId
@@ -872,8 +908,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${validEmailId1.serialize()}",
@@ -938,13 +974,13 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "sent": {
| "k1546": {
| "subject": "[Received] Subject of original message1",
| "textBody": "The email has been displayed on your recipient's computer",
- | "originalRecipient": "rfc822; ${ANDRE.asString()}",
- | "finalRecipient": "rfc822; ${ANDRE.asString()}",
+ | "originalRecipient": "rfc822; ${andreUsername.asString()}",
+ | "finalRecipient": "rfc822; ${andreUsername.asString()}",
| "includeOriginalMessage": false
| }
| },
@@ -958,7 +994,7 @@ trait MDNSendMethodContract {
| },
| "k1548": {
| "type": "notFound",
- | "description": "The reference \\"forEmailId\\" $serializedRandomId cannot be found for user andre@domain.tld."
+ | "description": "The reference \\"forEmailId\\" $serializedRandomId cannot be found for user ${andreUsername.asString()}."
| }
| }
| },
@@ -967,7 +1003,7 @@ trait MDNSendMethodContract {
| [
| "Email/set",
| {
- | "accountId": "1e8584548eca20f26faf6becc1704a0f352839f12c208a47fbd486d60f491f7c",
+ | "accountId": "$andreAccountId",
| "oldState": "eda83b09-6aca-4215-b493-2b4af19c50f0",
| "newState": "8bd671b2-e9fd-4ce3-b9b2-c3e1f35cc8ee",
| "updated": {
@@ -982,12 +1018,12 @@ trait MDNSendMethodContract {
@Test
def mdnSendShouldBeFailWhenMDNHasAlreadyBeenSet(server: GuiceJamesServer): Unit = {
- val path: MailboxPath = MailboxPath.inbox(BOB)
+ val path: MailboxPath = MailboxPath.inbox(bobUsername)
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
mailboxProbe.createMailbox(path)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(BOB.asString(), path, AppendCommand.builder()
+ .appendMessage(bobUsername.asString(), path, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -1002,8 +1038,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ACCOUNT_ID",
- | "identityId": "$IDENTITY_ID",
+ | "accountId": "$bobAccountId",
+ | "identityId": "$bobIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1068,7 +1104,7 @@ trait MDNSendMethodContract {
| "MDN/send",
| {
| "accountId": "ue150411c",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "Md45b47b4877521042cec0938",
@@ -1125,7 +1161,7 @@ trait MDNSendMethodContract {
| "MDN/send",
| {
| "accountId": "ue150411c",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "Md45b47b4877521042cec0938",
@@ -1174,7 +1210,7 @@ trait MDNSendMethodContract {
@Test
def mdnSendShouldReturnNotFoundWhenForEmailIdIsNotExist(server: GuiceJamesServer): Unit = {
- val path: MailboxPath = MailboxPath.inbox(BOB)
+ val path: MailboxPath = MailboxPath.inbox(bobUsername)
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
mailboxProbe.createMailbox(path)
@@ -1190,8 +1226,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ACCOUNT_ID",
- | "identityId": "$IDENTITY_ID",
+ | "accountId": "$bobAccountId",
+ | "identityId": "$bobIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${randomMessageId1.serialize()}",
@@ -1230,7 +1266,7 @@ trait MDNSendMethodContract {
.isEqualTo(s"""{
| "k1546": {
| "type": "notFound",
- | "description": "The reference \\\"forEmailId\\\" ${randomMessageId1.serialize()} cannot be found for user bob@domain.tld."
+ | "description": "The reference \\\"forEmailId\\\" ${randomMessageId1.serialize()} cannot be found for user ${bobUsername.asString()}."
| }
|}""".stripMargin)
}
@@ -1239,23 +1275,23 @@ trait MDNSendMethodContract {
def mdnSendShouldReturnNotFoundWhenMessageRelateHasNotDispositionNotificationTo(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val message: Message = Message.Builder
.of
.setSubject("test")
- .setSender(BOB.asString)
- .setFrom(BOB.asString)
- .setTo(ANDRE.asString)
+ .setSender(bobUsername.asString)
+ .setFrom(bobUsername.asString)
+ .setTo(andreUsername.asString)
.setBody("Body of mail, that mdn related", StandardCharsets.UTF_8)
.build
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(message))
.getMessageId
@@ -1270,8 +1306,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1319,23 +1355,23 @@ trait MDNSendMethodContract {
def mdnSendShouldReturnInvalidWhenIdentityDoesNotExist(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val message: Message = Message.Builder
.of
.setSubject("test")
- .setSender(BOB.asString)
- .setFrom(BOB.asString)
- .setTo(ANDRE.asString)
+ .setSender(bobUsername.asString)
+ .setFrom(bobUsername.asString)
+ .setTo(andreUsername.asString)
.setBody("Body of mail, that mdn related", StandardCharsets.UTF_8)
.build
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(message))
.getMessageId
@@ -1350,7 +1386,7 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
+ | "accountId": "$andreAccountId",
| "identityId": "notFound",
| "send": {
| "k1546": {
@@ -1403,7 +1439,7 @@ trait MDNSendMethodContract {
@Test
def mdnSendShouldBeFailWhenWrongAccountId(server: GuiceJamesServer): Unit = {
- val path: MailboxPath = MailboxPath.inbox(BOB)
+ val path: MailboxPath = MailboxPath.inbox(bobUsername)
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
mailboxProbe.createMailbox(path)
@@ -1419,7 +1455,7 @@ trait MDNSendMethodContract {
| "MDN/send",
| {
| "accountId": "unknownAccountId",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "1",
@@ -1468,12 +1504,12 @@ trait MDNSendMethodContract {
@Test
def mdnSendShouldBeFailWhenOnSuccessUpdateEmailMissesTheCreationIdSharp(server: GuiceJamesServer): Unit = {
- val path: MailboxPath = MailboxPath.inbox(BOB)
+ val path: MailboxPath = MailboxPath.inbox(bobUsername)
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
mailboxProbe.createMailbox(path)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(BOB.asString(), path, AppendCommand.builder()
+ .appendMessage(bobUsername.asString(), path, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -1489,7 +1525,7 @@ trait MDNSendMethodContract {
| "MDN/send",
| {
| "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1541,12 +1577,12 @@ trait MDNSendMethodContract {
@Test
def mdnSendShouldBeFailWhenOnSuccessUpdateEmailDoesNotReferenceACreationWithinThisCall(server: GuiceJamesServer): Unit = {
- val path: MailboxPath = MailboxPath.inbox(BOB)
+ val path: MailboxPath = MailboxPath.inbox(bobUsername)
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
mailboxProbe.createMailbox(path)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(BOB.asString(), path, AppendCommand.builder()
+ .appendMessage(bobUsername.asString(), path, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -1562,7 +1598,7 @@ trait MDNSendMethodContract {
| "MDN/send",
| {
| "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1621,14 +1657,14 @@ trait MDNSendMethodContract {
def mdnSendShouldReturnSubjectWhenRequestDoNotSet(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -1643,8 +1679,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1690,14 +1726,14 @@ trait MDNSendMethodContract {
def mdnSendShouldReturnTextBodyWhenRequestDoNotSet(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -1712,8 +1748,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1758,21 +1794,21 @@ trait MDNSendMethodContract {
def mdnSendShouldReturnOriginalMessageIdWhenRelatedMessageHasMessageIDHeader(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(Message.Builder
.of
.setSubject(s"Subject of original message")
- .setSender(BOB.asString)
- .setFrom(BOB.asString)
- .setTo(ANDRE.asString)
- .addField(new RawField("Disposition-Notification-To", s"Bob <${BOB.asString()}>"))
+ .setSender(bobUsername.asString)
+ .setFrom(bobUsername.asString)
+ .setTo(andreUsername.asString)
+ .addField(new RawField("Disposition-Notification-To", s"Bob <${bobUsername.asString()}>"))
.addField(new RawField("Message-Id", "<19...@example.org>"))
.setBody(s"Body of mail, that mdn related", StandardCharsets.UTF_8)
.build
@@ -1790,8 +1826,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1836,14 +1872,14 @@ trait MDNSendMethodContract {
def mdnMessageShouldHasThirdBodyPartWhenIncludeOriginalMessageIsTrue(server: GuiceJamesServer): Unit = {
val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
- val bobMailBoxPath: MailboxPath = MailboxPath.inbox(BOB)
+ val bobMailBoxPath: MailboxPath = MailboxPath.inbox(bobUsername)
mailboxProbe.createMailbox(bobMailBoxPath)
- val andreMailBoxPath: MailboxPath = MailboxPath.inbox(ANDRE)
+ val andreMailBoxPath: MailboxPath = MailboxPath.inbox(andreUsername)
mailboxProbe.createMailbox(andreMailBoxPath)
val relatedEmailId: MessageId = mailboxProbe
- .appendMessage(ANDRE.asString(), andreMailBoxPath, AppendCommand.builder()
+ .appendMessage(andreUsername.asString(), andreMailBoxPath, AppendCommand.builder()
.build(buildOriginalMessage("1")))
.getMessageId
@@ -1858,8 +1894,8 @@ trait MDNSendMethodContract {
| [
| "MDN/send",
| {
- | "accountId": "$ANDRE_ACCOUNT_ID",
- | "identityId": "$ANDRE_IDENTITY_ID",
+ | "accountId": "$andreAccountId",
+ | "identityId": "$andreIdentityId",
| "send": {
| "k1546": {
| "forEmailId": "${relatedEmailId.serialize()}",
@@ -1900,7 +1936,7 @@ trait MDNSendMethodContract {
.asString
awaitAtMostTenSeconds.untilAsserted { () =>
- val mdnBodyPartCounter = getFirstMessageInMailBox(server, BOB)
+ val mdnBodyPartCounter = getFirstMessageInMailBox(server, bobUsername)
.filter(msg => msg.isMultipart)
.map(msg => msg.getBody.asInstanceOf[Multipart].getBodyParts)
assert(mdnBodyPartCounter.isDefined && mdnBodyPartCounter.get.size == 3)
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMDNSendMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMDNSendMethodTest.java
index 8980d6c366..1a980b5151 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMDNSendMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMDNSendMethodTest.java
@@ -25,7 +25,7 @@ import org.apache.james.jmap.rfc8621.contract.MDNSendMethodContract;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
import org.apache.james.mailbox.model.MessageId;
-public class MemoryMDNSendMethodTest extends MemoryBase implements MDNSendMethodContract {
+public class MemoryMDNSendMethodTest extends PerClassMemoryBase implements MDNSendMethodContract {
@Override
public MessageId randomMessageId() {
return InMemoryMessageId.of(ThreadLocalRandom.current().nextInt(100000) + 100);
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMDNSendMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMDNSendMethodTest.java
index 1c57e5682d..66d014608a 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMDNSendMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMDNSendMethodTest.java
@@ -23,7 +23,7 @@ import org.apache.james.jmap.rfc8621.contract.MDNSendMethodContract;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.postgres.PostgresMessageId;
-public class PostgresMDNSendMethodTest extends PostgresBase implements MDNSendMethodContract {
+public class PostgresMDNSendMethodTest extends PerClassPostgresBase implements MDNSendMethodContract {
public static final PostgresMessageId.Factory MESSAGE_ID_FACTORY = new PostgresMessageId.Factory();
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org