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 a239d393ceb941412da8123e9a6d6f4e7b06be3b
Author: Quan Tran <[email protected]>
AuthorDate: Mon Jul 13 20:02:33 2026 +0700

    [BUILD] MailboxQueryMethodContract: isolate using different users
---
 .../DistributedMailboxQueryMethodTest.java         |  2 +-
 .../contract/MailboxQueryMethodContract.scala      | 71 ++++++++++++++--------
 .../memory/MemoryMailboxQueryMethodTest.java       |  2 +-
 .../postgres/PostgresMailboxQueryMethodTest.java   |  2 +-
 4 files changed, 50 insertions(+), 27 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/DistributedMailboxQueryMethodTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java
index 82bfbe7e98..971abe3f13 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java
@@ -21,6 +21,6 @@ package org.apache.james.jmap.rfc8621.distributed;
 
 import org.apache.james.jmap.rfc8621.contract.MailboxQueryMethodContract;
 
-public class DistributedMailboxQueryMethodTest extends DistributedBase 
implements MailboxQueryMethodContract {
+public class DistributedMailboxQueryMethodTest extends PerClassDistributedBase 
implements MailboxQueryMethodContract {
 
 }
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/MailboxQueryMethodContract.scala
 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala
index 6f25d83715..7e3379b3ee 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/MailboxQueryMethodContract.scala
@@ -19,6 +19,10 @@
 
 package org.apache.james.jmap.rfc8621.contract
 
+import java.nio.charset.StandardCharsets
+import java.util.UUID
+import java.util.concurrent.atomic.AtomicReference
+
 import com.google.common.hash.Hashing
 import io.netty.handler.codec.http.HttpHeaderNames.ACCEPT
 import io.restassured.RestAssured.{`given`, requestSpecification}
@@ -26,26 +30,45 @@ 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.core.ResponseObject.SESSION_STATE
 import org.apache.james.jmap.core.UuidState.INSTANCE
 import org.apache.james.jmap.http.UserCredential
-import 
org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, 
ANDRE, ANDRE_PASSWORD, BOB, BOB_PASSWORD, 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.mailbox.model.{MailboxACL, MailboxId, MailboxPath}
 import org.apache.james.modules.{ACLProbeImpl, MailboxProbeImpl}
 import org.apache.james.utils.DataProbeImpl
 import org.junit.jupiter.api.{BeforeEach, Test}
 
+object MailboxQueryMethodContract {
+  case class TestContext(bobUsername: Username, bobAccountId: String, 
andreUsername: Username)
+
+  val currentContext: AtomicReference[TestContext] = new 
AtomicReference[TestContext]()
+}
+
 trait MailboxQueryMethodContract {
+  import MailboxQueryMethodContract.{TestContext, currentContext}
+
+  def bobUsername: Username = currentContext.get().bobUsername
+  def bobAccountId: String = currentContext.get().bobAccountId
+  def andreUsername: Username = currentContext.get().andreUsername
+
   @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 bobAccountId = Hashing.sha256().hashString(bob.asString(), 
StandardCharsets.UTF_8).toString
+    currentContext.set(TestContext(bob, bobAccountId, andre))
+
     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
   }
 
@@ -92,7 +115,7 @@ trait MailboxQueryMethodContract {
   @Test
   def roleShouldAllowToRetrieveTheInbox(server: GuiceJamesServer): Unit = {
     val mailboxId: MailboxId = server.getProbe(classOf[MailboxProbeImpl])
-      .createMailbox(MailboxPath.forUser(BOB, "INBOX"))
+      .createMailbox(MailboxPath.forUser(bobUsername, "INBOX"))
 
     val request =
       s"""{
@@ -102,7 +125,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {"role":"Inbox"}
          |    },
          |    "c1"]]
@@ -128,7 +151,7 @@ trait MailboxQueryMethodContract {
            |        [
            |            "Mailbox/query",
            |            {
-           |                "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+         |                "accountId": "$bobAccountId",
            |                "queryState": "${generateQueryState(mailboxId)}",
            |                "canCalculateChanges": false,
            |                "ids": [
@@ -146,7 +169,7 @@ trait MailboxQueryMethodContract {
   @Test
   def roleShouldAllowToRetrieveTheInboxUponCaseVariation(server: 
GuiceJamesServer): Unit = {
     val mailboxId: MailboxId = server.getProbe(classOf[MailboxProbeImpl])
-      .createMailbox(MailboxPath.forUser(BOB, "InBoX"))
+      .createMailbox(MailboxPath.forUser(bobUsername, "InBoX"))
 
     val request =
       s"""{
@@ -156,7 +179,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {"role":"Inbox"}
          |    },
          |    "c1"]]
@@ -183,14 +206,14 @@ trait MailboxQueryMethodContract {
 
   @Test
   def queryByRoleShouldNotReturnDelegatedMailboxes(server: GuiceJamesServer): 
Unit = {
-    val andreInbox = MailboxPath.inbox(ANDRE)
+    val andreInbox = MailboxPath.inbox(andreUsername)
     server.getProbe(classOf[MailboxProbeImpl])
       .createMailbox(andreInbox)
     val bobInboxId: MailboxId = server.getProbe(classOf[MailboxProbeImpl])
-      .createMailbox(MailboxPath.inbox(BOB))
+      .createMailbox(MailboxPath.inbox(bobUsername))
 
     server.getProbe(classOf[ACLProbeImpl])
-      .replaceRights(andreInbox, BOB.asString, MailboxACL.FULL_RIGHTS)
+      .replaceRights(andreInbox, bobUsername.asString, MailboxACL.FULL_RIGHTS)
 
     val request =
       s"""{
@@ -201,7 +224,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {"role":"Inbox"}
          |    },
          |    "c1"]]
@@ -227,7 +250,7 @@ trait MailboxQueryMethodContract {
            |        [
            |            "Mailbox/query",
            |            {
-           |                "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+         |                "accountId": "$bobAccountId",
            |                "queryState": "${generateQueryState(bobInboxId)}",
            |                "canCalculateChanges": false,
            |                "ids": [
@@ -244,14 +267,14 @@ trait MailboxQueryMethodContract {
 
   @Test
   def queryByRoleShouldNotReturnDelegatedMailboxesWhenCaseVariation(server: 
GuiceJamesServer): Unit = {
-    val andreInbox = MailboxPath.inbox(ANDRE)
+    val andreInbox = MailboxPath.inbox(andreUsername)
     server.getProbe(classOf[MailboxProbeImpl])
       .createMailbox(andreInbox)
     val bobInboxId: MailboxId = server.getProbe(classOf[MailboxProbeImpl])
-      .createMailbox(MailboxPath.forUser(BOB, "InBoX"))
+      .createMailbox(MailboxPath.forUser(bobUsername, "InBoX"))
 
     server.getProbe(classOf[ACLProbeImpl])
-      .replaceRights(andreInbox, BOB.asString, MailboxACL.FULL_RIGHTS)
+      .replaceRights(andreInbox, bobUsername.asString, MailboxACL.FULL_RIGHTS)
 
     val request =
       s"""{
@@ -262,7 +285,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {"role":"Inbox"}
          |    },
          |    "c1"]]
@@ -288,7 +311,7 @@ trait MailboxQueryMethodContract {
            |        [
            |            "Mailbox/query",
            |            {
-           |                "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+         |                "accountId": "$bobAccountId",
            |                "queryState": "${generateQueryState(bobInboxId)}",
            |                "canCalculateChanges": false,
            |                "ids": [
@@ -313,7 +336,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {"role":"Invalid"}
          |    },
          |    "c1"]]
@@ -358,7 +381,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {"role":123}
          |    },
          |    "c1"]]
@@ -404,7 +427,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter": {}
          |    },
          |    "c1"]]
@@ -449,7 +472,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+           |      "accountId": "$bobAccountId",
          |      "filter":{
          |        "unsupported_option": "blahh_blahh",
          |        "role":"Inbox"
@@ -497,7 +520,7 @@ trait MailboxQueryMethodContract {
          |  "methodCalls": [[
          |    "Mailbox/query",
          |    {
-         |      "accountId": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
+           |      "accountId": "$bobAccountId"
          |    },
          |    "c1"]]
          |}""".stripMargin
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/MemoryMailboxQueryMethodTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxQueryMethodTest.java
index 986dacb587..48f171d510 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxQueryMethodTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryMailboxQueryMethodTest.java
@@ -21,6 +21,6 @@ package org.apache.james.jmap.rfc8621.memory;
 
 import org.apache.james.jmap.rfc8621.contract.MailboxQueryMethodContract;
 
-public class MemoryMailboxQueryMethodTest extends MemoryBase implements 
MailboxQueryMethodContract {
+public class MemoryMailboxQueryMethodTest extends PerClassMemoryBase 
implements MailboxQueryMethodContract {
 
 }
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/PostgresMailboxQueryMethodTest.java
 
b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMailboxQueryMethodTest.java
index f64a44f89c..4b0bf7c6bf 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMailboxQueryMethodTest.java
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresMailboxQueryMethodTest.java
@@ -21,5 +21,5 @@ package org.apache.james.jmap.rfc8621.postgres;
 
 import org.apache.james.jmap.rfc8621.contract.MailboxQueryMethodContract;
 
-public class PostgresMailboxQueryMethodTest extends PostgresBase implements 
MailboxQueryMethodContract {
+public class PostgresMailboxQueryMethodTest extends PerClassPostgresBase 
implements MailboxQueryMethodContract {
 }


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

Reply via email to