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 affd019d91d9199a74a9b1e286478176f0f75c25
Author: Quan Tran <[email protected]>
AuthorDate: Mon Jul 13 19:32:56 2026 +0700

    [BUILD] EventSourceContract: isolate using different users
---
 .../rfc8621/contract/EventSourceContract.scala     | 186 ++++++++++++---------
 .../jmap/rfc8621/memory/MemoryEventSourceTest.java |   3 +-
 2 files changed, 112 insertions(+), 77 deletions(-)

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/EventSourceContract.scala
 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EventSourceContract.scala
index 7359cabc93..a23c6a5564 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EventSourceContract.scala
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EventSourceContract.scala
@@ -20,8 +20,11 @@
 package org.apache.james.jmap.rfc8621.contract
 
 import java.nio.charset.StandardCharsets
-import java.util.concurrent.TimeUnit
+import java.util.Base64
+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.netty.handler.codec.http.HttpResponseStatus
 import io.restassured.RestAssured.{`given`, requestSpecification}
@@ -30,7 +33,7 @@ import org.apache.james.GuiceJamesServer
 import org.apache.james.core.Username
 import org.apache.james.jmap.JmapGuiceProbe
 import org.apache.james.jmap.http.UserCredential
-import 
org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, 
ACCOUNT_ID, ANDRE, ANDRE_PASSWORD, BOB, BOB_PASSWORD, DAVID, DAVID_ACCOUNT_ID, 
DOMAIN, authScheme, baseRequestSpecBuilder}
+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.probe.DelegationProbe
 import org.apache.james.mailbox.DefaultMailboxes
 import org.apache.james.mailbox.MessageManager.AppendCommand
@@ -51,7 +54,29 @@ import reactor.netty.http.client.HttpClient
 import scala.collection.mutable.ListBuffer
 import scala.jdk.CollectionConverters._
 
+object EventSourceContract {
+  case class TestContext(bobUsername: Username, bobAccountId: String, 
andreUsername: Username, davidUsername: Username, davidAccountId: String)
+
+  val currentContext: atomic.AtomicReference[TestContext] = new 
atomic.AtomicReference[TestContext]()
+}
+
 trait EventSourceContract {
+  import EventSourceContract.{TestContext, currentContext}
+
+  def bobUsername: Username = currentContext.get().bobUsername
+  def bobAccountId: String = currentContext.get().bobAccountId
+  def andreUsername: Username = currentContext.get().andreUsername
+  def davidUsername: Username = currentContext.get().davidUsername
+  def davidAccountId: String = currentContext.get().davidAccountId
+
+  private def accountId(username: Username): String =
+    Hashing.sha256().hashString(username.asString(), 
StandardCharsets.UTF_8).toString
+
+  private def bobAuthorizationHeader: String = {
+    val credentials = s"${bobUsername.asString}:$BOB_PASSWORD"
+    s"Basic 
${Base64.getEncoder.encodeToString(credentials.getBytes(StandardCharsets.UTF_8))}"
+  }
+
   private lazy val awaitAtMostTenSeconds: ConditionFactory = Awaitility.`with`
     .pollInterval(ONE_HUNDRED_MILLISECONDS)
     .and.`with`.pollDelay(ONE_HUNDRED_MILLISECONDS)
@@ -60,15 +85,26 @@ trait EventSourceContract {
 
   @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 david = Username.fromLocalPartWithDomain(s"david$uniqueSuffix", DOMAIN)
+    currentContext.set(TestContext(
+      bobUsername = bob,
+      bobAccountId = accountId(bob),
+      andreUsername = andre,
+      davidUsername = david,
+      davidAccountId = accountId(david)))
+
     server.getProbe(classOf[DataProbeImpl])
       .fluent()
       .addDomain(DOMAIN.asString())
-      .addUser(ANDRE.asString(), ANDRE_PASSWORD)
-      .addUser(BOB.asString(), BOB_PASSWORD)
-      .addUser(DAVID.asString(), "secret")
+      .addUser(andre.asString(), ANDRE_PASSWORD)
+      .addUser(bob.asString(), BOB_PASSWORD)
+      .addUser(david.asString(), "secret")
 
     requestSpecification = baseRequestSpecBuilder(server)
-      .setAuth(authScheme(UserCredential(BOB, BOB_PASSWORD)))
+      .setAuth(authScheme(UserCredential(bob, BOB_PASSWORD)))
       .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
       .build()
   }
@@ -80,7 +116,7 @@ trait EventSourceContract {
     val status = HttpClient.create
       .baseUrl(s"http://127.0.0.1:$port/eventSource?ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -96,7 +132,7 @@ trait EventSourceContract {
     val status = HttpClient.create
       .baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -114,7 +150,7 @@ trait EventSourceContract {
     val status = HttpClient.create
       .baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=0";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -132,7 +168,7 @@ trait EventSourceContract {
     val status = HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=0&closeAfter=bad";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -150,7 +186,7 @@ trait EventSourceContract {
     val status = HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=bad&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -168,7 +204,7 @@ trait EventSourceContract {
     val status = HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=bad&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -204,7 +240,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -231,7 +267,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=Email&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -246,7 +282,7 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
     Thread.sleep(200)
 
     assertThat(seq.asJava).isEmpty()
@@ -260,7 +296,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=Mailbox,Email,VacationResponse,Thread,Identity,EmailSubmission,EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -275,13 +311,13 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
     Thread.sleep(200)
 
     assertThat(seq.asJava)
       .hasSize(1)
     assertThat(seq.head)
-      .startsWith("event: state\ndata: 
{\"@type\":\"StateChange\",\"changed\":{\"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6\":{\"Mailbox\":")
+      .startsWith(s"event: state\ndata: 
{\"@type\":\"StateChange\",\"changed\":{\"$bobAccountId\":{\"Mailbox\":")
     assertThat(seq.head).doesNotContain("pushState")
     assertThat(seq.head).endsWith("\n\n")
   }
@@ -289,13 +325,13 @@ trait EventSourceContract {
   @Test
   def shouldPushEmailDeliveryChangeWhenUserReceivesEmail(server: 
GuiceJamesServer): Unit = {
     val port = server.getProbe(classOf[JmapGuiceProbe]).getJmapPort.getValue
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
 
     val seq = new ListBuffer[String]()
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=Mailbox,Email,VacationResponse,Thread,Identity,EmailSubmission,EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -311,7 +347,7 @@ trait EventSourceContract {
 
     // Bob receives a mail
     Thread.sleep(500)
-    sendEmailTo(server, BOB)
+    sendEmailTo(server, bobUsername)
 
     awaitAtMostTenSeconds.untilAsserted(() => {
       assertThat(seq.asJava)
@@ -324,13 +360,13 @@ trait EventSourceContract {
   @Test
   def shouldNotPushEmailDeliveryChangeWhenUserCreatesDraftEmail(server: 
GuiceJamesServer): Unit = {
     val port = server.getProbe(classOf[JmapGuiceProbe]).getJmapPort.getValue
-    val mailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
+    val mailboxId = 
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
 
     val seq = new ListBuffer[String]()
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=Mailbox,Email,VacationResponse,Thread,Identity,EmailSubmission,EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -351,14 +387,14 @@ trait EventSourceContract {
          |  "using": ["urn:ietf:params:jmap:core", 
"urn:ietf:params:jmap:mail"],
          |  "methodCalls": [
          |    ["Email/set", {
-         |      "accountId": "$ACCOUNT_ID",
+         |      "accountId": "$bobAccountId",
          |      "create": {
          |        "aaaaaa":{
          |          "mailboxIds": {
          |             "${mailboxId.serialize}": true
          |          },
          |          "to": [{"email": "[email protected]"}, {"email": 
"[email protected]"}],
-         |          "from": [{"email": "${BOB.asString}"}]
+         |          "from": [{"email": "${bobUsername.asString}"}]
          |        }
          |      }
          |    }, "c1"]]
@@ -383,7 +419,7 @@ trait EventSourceContract {
   @Test
   def shouldNotPushEmailDeliveryChangeWhenUserSendsEmail(server: 
GuiceJamesServer): Unit = {
     val port = server.getProbe(classOf[JmapGuiceProbe]).getJmapPort.getValue
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
 
     val messageId: MessageId = prepareDraftMessage(server)
 
@@ -391,7 +427,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=Mailbox,Email,VacationResponse,Thread,Identity,EmailSubmission,EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -412,13 +448,13 @@ trait EventSourceContract {
          |  "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}"},
-         |             "rcptTo": [{"email": "${ANDRE.asString}"}]
+         |             "mailFrom": {"email": "${bobUsername.asString}"},
+         |             "rcptTo": [{"email": "${andreUsername.asString}"}]
          |           }
          |         }
          |    }
@@ -444,7 +480,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=1&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -472,7 +508,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -487,13 +523,13 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
     Thread.sleep(200)
 
     assertThat(seq.asJava)
       .hasSize(1)
     assertThat(seq.head)
-      .startsWith("event: state\ndata: 
{\"@type\":\"StateChange\",\"changed\":{\"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6\":{\"Mailbox\":")
+      .startsWith(s"event: state\ndata: 
{\"@type\":\"StateChange\",\"changed\":{\"$bobAccountId\":{\"Mailbox\":")
     assertThat(seq.head).endsWith("\n\n")
   }
 
@@ -505,7 +541,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=0&closeAfter=state";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -520,14 +556,14 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.forUser(BOB,
 "other"))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.forUser(bobUsername,
 "other"))
     Thread.sleep(200)
 
     assertThat(seq.asJava)
       .hasSize(1)
     assertThat(seq.head)
-      .startsWith("event: state\ndata: 
{\"@type\":\"StateChange\",\"changed\":{\"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6\":{\"Mailbox\":")
+      .startsWith(s"event: state\ndata: 
{\"@type\":\"StateChange\",\"changed\":{\"$bobAccountId\":{\"Mailbox\":")
     assertThat(seq.head).endsWith("\n\n")
   }
 
@@ -539,7 +575,7 @@ trait EventSourceContract {
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=*&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -554,8 +590,8 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(BOB))
-    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.forUser(BOB,
 "other"))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.inbox(bobUsername))
+    
server.getProbe(classOf[MailboxProbeImpl]).createMailbox(MailboxPath.forUser(bobUsername,
 "other"))
     Thread.sleep(200)
 
     assertThat(seq.asJava)
@@ -565,17 +601,17 @@ trait EventSourceContract {
   @Test
   def shouldPushChangesToDelegatedUser(server: GuiceJamesServer): Unit = {
     val port = server.getProbe(classOf[JmapGuiceProbe]).getJmapPort.getValue
-    val davidPath = MailboxPath.inbox(DAVID)
+    val davidPath = MailboxPath.inbox(davidUsername)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(davidPath)
 
-    // DAVID delegates BOB to access his account
-    server.getProbe(classOf[DelegationProbe]).addAuthorizedUser(DAVID, BOB)
+    // davidUsername delegates bobUsername to access his account
+    server.getProbe(classOf[DelegationProbe]).addAuthorizedUser(davidUsername, 
bobUsername)
 
     val seq = new ListBuffer[String]()
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -590,16 +626,16 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    // DAVID has a new mail therefore EmailDelivery change
-    sendEmailTo(server, DAVID)
+    // davidUsername has a new mail therefore EmailDelivery change
+    sendEmailTo(server, davidUsername)
 
-    // Bob should receive DAVID's EmailDelivery state change
+    // Bob should receive davidUsername's EmailDelivery state change
     awaitAtMostTenSeconds.untilAsserted(() => {
       SoftAssertions.assertSoftly(softly => {
         softly.assertThat(seq.asJava)
           .hasSize(1)
         softly.assertThat(seq.head)
-          .contains("EmailDelivery", DAVID_ACCOUNT_ID)
+          .contains("EmailDelivery", davidAccountId)
       })
     })
   }
@@ -607,17 +643,17 @@ trait EventSourceContract {
   @Test
   def 
ownerUserShouldStillReceiveHisChangesWhenHeDelegatesHisAccountToOtherUsers(server:
 GuiceJamesServer): Unit = {
     val port = server.getProbe(classOf[JmapGuiceProbe]).getJmapPort.getValue
-    val bobPath = MailboxPath.inbox(BOB)
+    val bobPath = MailboxPath.inbox(bobUsername)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(bobPath)
 
-    // BOB delegates DAVID to access his account
-    server.getProbe(classOf[DelegationProbe]).addAuthorizedUser(BOB, DAVID)
+    // bobUsername delegates davidUsername to access his account
+    server.getProbe(classOf[DelegationProbe]).addAuthorizedUser(bobUsername, 
davidUsername)
 
     val seq = new ListBuffer[String]()
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -632,8 +668,8 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    // BOB has a new mail therefore EmailDelivery change
-    sendEmailTo(server, BOB)
+    // bobUsername has a new mail therefore EmailDelivery change
+    sendEmailTo(server, bobUsername)
 
     // Bob should receive his EmailDelivery state change
     awaitAtMostTenSeconds.untilAsserted(() => {
@@ -641,7 +677,7 @@ trait EventSourceContract {
         softly.assertThat(seq.asJava)
           .hasSize(1)
         softly.assertThat(seq.head)
-          .contains("EmailDelivery", ACCOUNT_ID)
+          .contains("EmailDelivery", bobAccountId)
       })
     })
   }
@@ -649,17 +685,17 @@ trait EventSourceContract {
   @Test
   def bobShouldReceiveHisChangesAndHisDelegatedAccountChanges(server: 
GuiceJamesServer): Unit = {
     val port = server.getProbe(classOf[JmapGuiceProbe]).getJmapPort.getValue
-    val davidPath = MailboxPath.inbox(DAVID)
+    val davidPath = MailboxPath.inbox(davidUsername)
     server.getProbe(classOf[MailboxProbeImpl]).createMailbox(davidPath)
 
-    // DAVID delegates BOB to access his account
-    server.getProbe(classOf[DelegationProbe]).addAuthorizedUser(DAVID, BOB)
+    // davidUsername delegates bobUsername to access his account
+    server.getProbe(classOf[DelegationProbe]).addAuthorizedUser(davidUsername, 
bobUsername)
 
     val seq = new ListBuffer[String]()
     HttpClient.create
       
.baseUrl(s"http://127.0.0.1:$port/eventSource?types=EmailDelivery&ping=0&closeAfter=no";)
       .headers(builder => {
-        builder.add("Authorization", "Basic 
Ym9iQGRvbWFpbi50bGQ6Ym9icGFzc3dvcmQ=")
+        builder.add("Authorization", bobAuthorizationHeader)
         builder.add("Accept", ACCEPT_RFC8621_VERSION_HEADER)
       })
       .get()
@@ -674,10 +710,10 @@ trait EventSourceContract {
       .subscribe()
 
     Thread.sleep(500)
-    sendEmailTo(server, DAVID)
-    sendEmailTo(server, BOB)
-    sendEmailTo(server, DAVID)
-    sendEmailTo(server, BOB)
+    sendEmailTo(server, davidUsername)
+    sendEmailTo(server, bobUsername)
+    sendEmailTo(server, davidUsername)
+    sendEmailTo(server, bobUsername)
 
     // Bob should receive David's change and his changes
     awaitAtMostTenSeconds.untilAsserted(() => {
@@ -685,13 +721,13 @@ trait EventSourceContract {
         softly.assertThat(seq.asJava)
           .hasSize(4)
         softly.assertThat(seq.apply(0))
-          .contains("EmailDelivery", DAVID_ACCOUNT_ID)
+          .contains("EmailDelivery", davidAccountId)
         softly.assertThat(seq.apply(1))
-          .contains("EmailDelivery", ACCOUNT_ID)
+          .contains("EmailDelivery", bobAccountId)
         softly.assertThat(seq.apply(2))
-          .contains("EmailDelivery", DAVID_ACCOUNT_ID)
+          .contains("EmailDelivery", davidAccountId)
         softly.assertThat(seq.apply(3))
-          .contains("EmailDelivery", ACCOUNT_ID)
+          .contains("EmailDelivery", bobAccountId)
       })
     })
   }
@@ -699,8 +735,8 @@ trait EventSourceContract {
   private def sendEmailTo(server: GuiceJamesServer, recipient: Username): Unit 
= {
     val smtpMessageSender: SMTPMessageSender = new 
SMTPMessageSender(DOMAIN.asString())
     smtpMessageSender.connect("127.0.0.1", 
server.getProbe(classOf[SmtpGuiceProbe]).getSmtpPort)
-      .authenticate(ANDRE.asString, ANDRE_PASSWORD)
-      .sendMessage(ANDRE.asString, recipient.asString())
+      .authenticate(andreUsername.asString, ANDRE_PASSWORD)
+      .sendMessage(andreUsername.asString, recipient.asString())
     smtpMessageSender.close()
 
     awaitAtMostTenSeconds.until(() => 
server.getProbe(classOf[SpoolerProbe]).processingFinished())
@@ -710,14 +746,14 @@ trait EventSourceContract {
     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 = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(BOB.asString(), 
bobDraftsPath, AppendCommand.builder()
+    val messageId = 
server.getProbe(classOf[MailboxProbeImpl]).appendMessage(bobUsername.asString(),
 bobDraftsPath, AppendCommand.builder()
       .build(message))
       .getMessageId
     messageId
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/MemoryEventSourceTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEventSourceTest.java
index 74f3c2d071..0ebb41a39f 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEventSourceTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryEventSourceTest.java
@@ -21,6 +21,5 @@ package org.apache.james.jmap.rfc8621.memory;
 
 import org.apache.james.jmap.rfc8621.contract.EventSourceContract;
 
-public class MemoryEventSourceTest extends MemoryBase implements 
EventSourceContract {
-
+public class MemoryEventSourceTest extends PerClassMemoryBase implements 
EventSourceContract {
 }


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

Reply via email to