This is an automated email from the ASF dual-hosted git repository.

chibenwa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6c1bdb2137796db69241c3f6e6b13eadcd52daaa
Author: Quan Tran <[email protected]>
AuthorDate: Mon Jul 13 16:51:26 2026 +0700

    [BUILD] EmailSubmissionSetMethodFutureReleaseContract: isolate using 
different users
---
 ...dEmailSubmissionSetMethodFutureReleaseTest.java |   3 +-
 ...lSubmissionSetMethodFutureReleaseContract.scala | 432 +++++++++++----------
 ...yEmailSubmissionSetMethodFutureReleaseTest.java |   1 +
 ...sEmailSubmissionSetMethodFutureReleaseTest.java |   1 +
 4 files changed, 236 insertions(+), 201 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/DistributedEmailSubmissionSetMethodFutureReleaseTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodFutureReleaseTest.java
index d03a3a4eff..3cd86a7e29 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodFutureReleaseTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodFutureReleaseTest.java
@@ -69,6 +69,7 @@ public class 
DistributedEmailSubmissionSetMethodFutureReleaseTest implements Ema
         .server(configuration -> 
CassandraRabbitMQJamesServerMain.createServer(configuration)
             .overrideWith(new TestJMAPServerModule(), new 
DelegationProbeModule()))
         .overrideServerModule(binder -> 
binder.bind(Boolean.class).annotatedWith(Names.named("supportsDelaySends")).toInstance(true))
+        .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
         .build();
 
     @Override
@@ -95,4 +96,4 @@ public class 
DistributedEmailSubmissionSetMethodFutureReleaseTest implements Ema
     @Override
     public void 
emailSubmissionSetCreateShouldDelayEmailWithHoldUntil(GuiceJamesServer server, 
UpdatableTickingClock updatableTickingClock){
     }
-}
\ No newline at end of file
+}
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/EmailSubmissionSetMethodFutureReleaseContract.scala
 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetMethodFutureReleaseContract.scala
index 3ee3a30d57..18de746bd2 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetMethodFutureReleaseContract.scala
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetMethodFutureReleaseContract.scala
@@ -21,8 +21,10 @@ package org.apache.james.jmap.rfc8621.contract
 
 import java.nio.charset.StandardCharsets
 import java.time.{Instant, LocalDateTime}
-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.{`given`, `with`, requestSpecification}
 import io.restassured.builder.ResponseSpecBuilder
@@ -30,9 +32,10 @@ import io.restassured.http.ContentType.JSON
 import net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson
 import org.apache.http.HttpStatus.SC_OK
 import org.apache.james.GuiceJamesServer
+import org.apache.james.core.Username
 import org.apache.james.jmap.http.UserCredential
-import 
org.apache.james.jmap.rfc8621.contract.EmailSubmissionSetMethodFutureReleaseContract.{DATE,
 future_release_session_object}
-import 
org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, 
ACCOUNT_ID, ALICE, ANDRE, ANDRE_ACCOUNT_ID, ANDRE_PASSWORD, BOB, BOB_PASSWORD, 
DOMAIN, authScheme, baseRequestSpecBuilder}
+import 
org.apache.james.jmap.rfc8621.contract.EmailSubmissionSetMethodFutureReleaseContract.{DATE,
 TestContext, futureReleaseSessionObject}
+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.tags.CategoryTags
 import org.apache.james.mailbox.DefaultMailboxes
 import org.apache.james.mailbox.MessageManager.AppendCommand
@@ -49,6 +52,10 @@ import org.hamcrest.{Matcher, Matchers}
 import org.junit.jupiter.api.{BeforeEach, Tag, Test}
 
 case object EmailSubmissionSetMethodFutureReleaseContract {
+  case class TestContext(bobUsername: Username, bobAccountId: String, 
andreUsername: Username, andreAccountId: String, aliceUsername: Username)
+
+  val currentContext: atomic.AtomicReference[TestContext] = new 
atomic.AtomicReference[TestContext]()
+
   private val future_release_session_object: String =
     """{
       |  "capabilities" : {
@@ -152,9 +159,23 @@ case object EmailSubmissionSetMethodFutureReleaseContract {
   val DATE: Instant = Instant.parse("2023-04-14T10:00:00.00Z")
   private val CLOCK: UpdatableTickingClock = new UpdatableTickingClock(DATE)
   val now: LocalDateTime = LocalDateTime.now(CLOCK)
+
+  def futureReleaseSessionObject(bobUsername: Username, bobAccountId: String): 
String =
+    future_release_session_object
+      
.replace("29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", 
bobAccountId)
+      .replace("[email protected]", bobUsername.asString())
 }
 
 trait EmailSubmissionSetMethodFutureReleaseContract {
+  def bobUsername: Username = 
EmailSubmissionSetMethodFutureReleaseContract.currentContext.get().bobUsername
+  def bobAccountId: String = 
EmailSubmissionSetMethodFutureReleaseContract.currentContext.get().bobAccountId
+  def andreUsername: Username = 
EmailSubmissionSetMethodFutureReleaseContract.currentContext.get().andreUsername
+  def andreAccountId: String = 
EmailSubmissionSetMethodFutureReleaseContract.currentContext.get().andreAccountId
+  def aliceUsername: Username = 
EmailSubmissionSetMethodFutureReleaseContract.currentContext.get().aliceUsername
+
+  private def accountId(username: Username): String =
+    Hashing.sha256().hashString(username.asString(), 
StandardCharsets.UTF_8).toString
+
   private lazy val slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS
   private lazy val calmlyAwait = Awaitility.`with`
     .pollInterval(slowPacedPollInterval)
@@ -164,14 +185,25 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
 
   @BeforeEach
   def setUp(server: GuiceJamesServer, updatableTickingClock: 
UpdatableTickingClock): 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 alice = Username.fromLocalPartWithDomain(s"alice$uniqueSuffix", DOMAIN)
+    
EmailSubmissionSetMethodFutureReleaseContract.currentContext.set(TestContext(
+      bobUsername = bob,
+      bobAccountId = accountId(bob),
+      andreUsername = andre,
+      andreAccountId = accountId(andre),
+      aliceUsername = alice))
+
     server.getProbe(classOf[DataProbeImpl])
       .fluent
       .addDomain(DOMAIN.asString)
-      .addUser(BOB.asString, BOB_PASSWORD)
-      .addUser(ANDRE.asString, ANDRE_PASSWORD)
+      .addUser(bob.asString, BOB_PASSWORD)
+      .addUser(andre.asString, ANDRE_PASSWORD)
 
     requestSpecification = baseRequestSpecBuilder(server)
-      .setAuth(authScheme(UserCredential(BOB, BOB_PASSWORD)))
+      .setAuth(authScheme(UserCredential(bob, BOB_PASSWORD)))
       .build
 
     updatableTickingClock.setInstant(DATE)
@@ -192,7 +224,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
       .extract()
       .body()
       .asString()
-    assertThatJson(sessionJson).isEqualTo(future_release_session_object)
+    
assertThatJson(sessionJson).isEqualTo(futureReleaseSessionObject(bobUsername, 
bobAccountId))
   }
 
   @Test
@@ -200,15 +232,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -217,19 +249,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"76000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -254,18 +286,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -273,19 +305,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"76000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -308,7 +340,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -317,7 +349,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
@@ -341,18 +373,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -360,19 +392,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"20000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -392,7 +424,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -402,7 +434,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
       calmlyAwait.atMost(1, TimeUnit.SECONDS).untilAsserted { () =>
         val response = `given`(
           baseRequestSpecBuilder(server)
-            .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+            .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
             .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
             .setBody(requestAndre)
             .build, new ResponseSpecBuilder().build)
@@ -427,7 +459,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
@@ -451,15 +483,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -468,19 +500,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"7776000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -505,15 +537,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -522,19 +554,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"-1000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -558,18 +590,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -577,19 +609,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": "0"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -610,7 +642,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -618,7 +650,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
@@ -642,15 +674,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -659,19 +691,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"not a number"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -696,18 +728,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -715,19 +747,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-14T15:00:00Z"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -750,7 +782,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -758,7 +790,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
@@ -782,18 +814,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -801,19 +833,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-14T15:00:00Z"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -833,7 +865,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -843,7 +875,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
       calmlyAwait.atMost(1, TimeUnit.SECONDS).untilAsserted { () =>
         val response = `given`(
           baseRequestSpecBuilder(server)
-            .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+            .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
             .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
             .setBody(requestAndre)
             .build, new ResponseSpecBuilder().build)
@@ -867,7 +899,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
@@ -891,15 +923,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -908,19 +940,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-13T15:00:00Z"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -944,15 +976,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -961,19 +993,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-16T10:00:00Z"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -997,15 +1029,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1014,19 +1046,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-14T10:30:00Z"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1050,15 +1082,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1067,20 +1099,20 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-14T10:30:00Z",
          |                "holdFor": "76000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1104,15 +1136,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1121,19 +1153,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"not a date"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1157,18 +1189,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -1176,25 +1208,25 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"1000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                       "email": 
"${ANDRE.asString}",
+         |                                                       "email": 
"${andreUsername.asString}",
          |                "parameters": {
          |                                                         "holdFor": 
"1000"
          |                                                       }
          |              },
          |              {
-         |                "email": "${ALICE.asString}"
+         |                "email": "${aliceUsername.asString}"
          |                                               }]
          |                                     }
          |                             }
@@ -1217,15 +1249,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1234,19 +1266,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
"1000"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1268,15 +1300,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1285,19 +1317,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
"2023-04-14T15:00:00Z"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1319,15 +1351,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1336,19 +1368,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       
"anotherParam": "whatever"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1372,15 +1404,15 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
 
@@ -1389,20 +1421,20 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       
"anotherParam": "whatever",
          |                 "holdFor": "86400"
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1425,18 +1457,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -1444,19 +1476,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdFor": 
null
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1476,7 +1508,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -1484,7 +1516,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
@@ -1508,18 +1540,18 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     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("testmail", StandardCharsets.UTF_8)
       .build
 
-    val bobDraftsPath = MailboxPath.forUser(BOB, DefaultMailboxes.DRAFTS)
+    val bobDraftsPath = MailboxPath.forUser(bobUsername, 
DefaultMailboxes.DRAFTS)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobDraftsPath)
-    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId: MessageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
-    val andreInboxPath = MailboxPath.inbox(ANDRE)
+    val andreInboxPath = MailboxPath.inbox(andreUsername)
     val andreInboxId: MailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(andreInboxPath)
 
     val request =
@@ -1527,19 +1559,19 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |     "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail", "urn:ietf:params:jmap:submission"],
          |     "methodCalls": [
          |             ["EmailSubmission/set", {
-         |                     "accountId": "$ACCOUNT_ID",
+         |                     "accountId": "$bobAccountId",
          |                     "create": {
          |                             "k1490": {
          |                                     "emailId": 
"${messageId.serialize}",
          |                                     "envelope": {
          |                                             "mailFrom": {
-         |                                                     "email": 
"${BOB.asString}",
+         |                                                     "email": 
"${bobUsername.asString}",
          |                                                     "parameters": {
          |                                                       "holdUntil": 
null
          |                                                     }
          |                                             },
          |                                             "rcptTo": [{
-         |                                                     "email": 
"${ANDRE.asString}"
+         |                                                     "email": 
"${andreUsername.asString}"
          |                                             }]
          |                                     }
          |                             }
@@ -1559,7 +1591,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
          |  "methodCalls": [[
          |    "Email/query",
          |    {
-         |      "accountId": "$ANDRE_ACCOUNT_ID",
+         |      "accountId": "$andreAccountId",
          |      "filter": {"inMailbox": "${andreInboxId.serialize}"}
          |    },
          |    "c1"]]
@@ -1567,7 +1599,7 @@ trait EmailSubmissionSetMethodFutureReleaseContract {
     awaitAtMostTenSeconds.untilAsserted { () =>
       val response = `given`(
         baseRequestSpecBuilder(server)
-          .setAuth(authScheme(UserCredential(ANDRE, ANDRE_PASSWORD)))
+          .setAuth(authScheme(UserCredential(andreUsername, ANDRE_PASSWORD)))
           .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
           .setBody(requestAndre)
           .build, new ResponseSpecBuilder().build)
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/MemoryEmailSubmissionSetMethodFutureReleaseTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailSubmissionSetMethodFutureReleaseTest.java
index 708d362e3d..9c779f8c53 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailSubmissionSetMethodFutureReleaseTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEmailSubmissionSetMethodFutureReleaseTest.java
@@ -48,6 +48,7 @@ class MemoryEmailSubmissionSetMethodFutureReleaseTest 
implements EmailSubmission
             .overrideWith(new TestJMAPServerModule()))
         .overrideServerModule(binder -> 
binder.bind(Boolean.class).annotatedWith(Names.named("supportsDelaySends")).toInstance(true))
         .extensions(new ClockExtension())
+        .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
         .build();
 
     @Override
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/PostgresEmailSubmissionSetMethodFutureReleaseTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresEmailSubmissionSetMethodFutureReleaseTest.java
index 4d189374bc..128ade1373 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresEmailSubmissionSetMethodFutureReleaseTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresEmailSubmissionSetMethodFutureReleaseTest.java
@@ -66,6 +66,7 @@ public class 
PostgresEmailSubmissionSetMethodFutureReleaseTest implements EmailS
             .overrideWith(new TestJMAPServerModule())
             .overrideWith(new DelegationProbeModule()))
         .overrideServerModule(binder -> 
binder.bind(Boolean.class).annotatedWith(Names.named("supportsDelaySends")).toInstance(true))
+        .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
         .build();
 
     @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to