This is an automated email from the ASF dual-hosted git repository. quantranhong1999 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit c82a4b6331cd2d8d684870059c5c2e4f9a75d1fe Author: Quan Tran <[email protected]> AuthorDate: Fri May 8 15:58:31 2026 +0700 [BUILD] PushSubscriptionSetMethodContract: isolate using different users --- .../DistributedPushSubscriptionSetMethodTest.java | 1 + .../PushSubscriptionSetMethodContract.scala | 117 +++++++++++---------- .../MemoryPushSubscriptionSetMethodTest.java | 1 + .../PostgresPushSubscriptionSetMethodTest.java | 1 + 4 files changed, 67 insertions(+), 53 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/DistributedPushSubscriptionSetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedPushSubscriptionSetMethodTest.java index 1e29afb110..c7c7affab9 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedPushSubscriptionSetMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedPushSubscriptionSetMethodTest.java @@ -57,6 +57,7 @@ public class DistributedPushSubscriptionSetMethodTest implements PushSubscriptio .server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration) .overrideWith(new TestJMAPServerModule(), new PushSubscriptionProbeModule(), new TypeStateModule()) .overrideWith(binder -> binder.bind(PushClientConfiguration.class).toInstance(PushClientConfiguration.UNSAFE_DEFAULT()))) + .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS) .build(); @RegisterExtension 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/PushSubscriptionSetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/PushSubscriptionSetMethodContract.scala index 6f8bc99a40..4ffb38dae1 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/PushSubscriptionSetMethodContract.scala +++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/PushSubscriptionSetMethodContract.scala @@ -22,9 +22,10 @@ package org.apache.james.jmap.rfc8621.contract import java.net.URI import java.security.KeyPair import java.security.interfaces.ECPublicKey -import java.time.ZonedDateTime import java.time.format.DateTimeFormatter +import java.time.{Instant, ZonedDateTime} import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.AtomicReference import java.util.function.Consumer import java.util.{Base64, UUID} @@ -49,8 +50,8 @@ import org.apache.james.jmap.change.{EmailDeliveryTypeName, EmailTypeName, Mailb import org.apache.james.jmap.core.ResponseObject.SESSION_STATE import org.apache.james.jmap.core.UTCDate import org.apache.james.jmap.http.UserCredential -import org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, BOB, BOB_PASSWORD, DOMAIN, authScheme, baseRequestSpecBuilder} -import org.apache.james.jmap.rfc8621.contract.PushSubscriptionSetMethodContract.TIME_FORMATTER +import org.apache.james.jmap.rfc8621.contract.Fixture.{ACCEPT_RFC8621_VERSION_HEADER, BOB_PASSWORD, DOMAIN, authScheme, baseRequestSpecBuilder} +import org.apache.james.jmap.rfc8621.contract.PushSubscriptionSetMethodContract.{TIME_FORMATTER, TestContext} import org.apache.james.jmap.rfc8621.contract.probe.TypeStateProbe import org.apache.james.utils.{DataProbeImpl, GuiceProbe, UpdatableTickingClock} import org.assertj.core.api.Assertions.assertThat @@ -67,6 +68,9 @@ import reactor.core.scala.publisher.SMono import scala.jdk.CollectionConverters._ object PushSubscriptionSetMethodContract { + case class TestContext(bobUsername: Username) + val currentContext: AtomicReference[TestContext] = new AtomicReference[TestContext]() + val TIME_FORMATTER: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX") } class PushSubscriptionProbe @Inject()(pushSubscriptionRepository: PushSubscriptionRepository) extends GuiceProbe { @@ -93,18 +97,25 @@ class PushSubscriptionProbeModule extends AbstractModule { } trait PushSubscriptionSetMethodContract { + def bobUsername: Username = PushSubscriptionSetMethodContract.currentContext.get().bobUsername + private lazy val awaitAtMostTenSeconds = Awaitility.`with` .await.atMost(10, TimeUnit.SECONDS) @BeforeEach - def setUp(server: GuiceJamesServer, pushServer: ClientAndServer): Unit = { + def setUp(server: GuiceJamesServer, pushServer: ClientAndServer, clock: UpdatableTickingClock): Unit = { + val uniqueSuffix = UUID.randomUUID().toString.replace("-", "").take(8) + val bob = Username.fromLocalPartWithDomain(s"bob$uniqueSuffix", DOMAIN) + PushSubscriptionSetMethodContract.currentContext.set(TestContext(bobUsername = bob)) + clock.setInstant(Instant.now()) + server.getProbe(classOf[DataProbeImpl]) .fluent() .addDomain(DOMAIN.asString()) - .addUser(BOB.asString(), BOB_PASSWORD) + .addUser(bob.asString(), BOB_PASSWORD) requestSpecification = baseRequestSpecBuilder(server) - .setAuth(authScheme(UserCredential(BOB, BOB_PASSWORD))) + .setAuth(authScheme(UserCredential(bob, BOB_PASSWORD))) .addHeader(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER) .build() @@ -204,7 +215,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldModifyTypes(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -255,7 +266,7 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id).types.asJava) + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id).types.asJava) .containsExactlyInAnyOrder(MailboxTypeName, EmailTypeName) } @@ -263,7 +274,7 @@ trait PushSubscriptionSetMethodContract { def updateWithMissingTypesPropertyShouldNotUpdateTypes(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -316,7 +327,7 @@ trait PushSubscriptionSetMethodContract { |}""".stripMargin) // Types are not updated - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id).types.asJava) + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id).types.asJava) .containsOnly(MailboxTypeName) } @@ -325,7 +336,7 @@ trait PushSubscriptionSetMethodContract { val subscriptionProbe = server.getProbe(classOf[PushSubscriptionProbe]) val typeStateProbe = server.getProbe(classOf[TypeStateProbe]) val pushSubscription = subscriptionProbe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -377,7 +388,7 @@ trait PushSubscriptionSetMethodContract { |}""".stripMargin) // All types are registered - assertThat(subscriptionProbe.retrievePushSubscription(BOB, pushSubscription.id).types.asJava) + assertThat(subscriptionProbe.retrievePushSubscription(bobUsername, pushSubscription.id).types.asJava) .containsExactlyInAnyOrderElementsOf(typeStateProbe.typesNames()) } @@ -385,7 +396,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldRejectUnknownTypes(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -445,7 +456,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldRejectBadTypes(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -505,7 +516,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldRejectBadType(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -622,7 +633,7 @@ trait PushSubscriptionSetMethodContract { // All types are registered val subscriptionId: PushSubscriptionId = PushSubscriptionId.parse(JsonPath.from(response) .getString("methodResponses[0][1].created.4f29.id")).toOption.get - assertThat(subscriptionProbe.retrievePushSubscription(BOB, subscriptionId).types.asJava) + assertThat(subscriptionProbe.retrievePushSubscription(bobUsername, subscriptionId).types.asJava) .containsExactlyInAnyOrderElementsOf(typeStateProbe.typesNames()) } @@ -719,12 +730,12 @@ trait PushSubscriptionSetMethodContract { def getShouldReturnAllRecords(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) val pushSubscription2 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d087"), types = Seq(EmailTypeName)) @@ -780,11 +791,11 @@ trait PushSubscriptionSetMethodContract { def getShouldReturnValidatedVerificationCode(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) - probe.validatePushSubscription(BOB, pushSubscription1.id) + probe.validatePushSubscription(bobUsername, pushSubscription1.id) val request: String = """{ @@ -831,11 +842,11 @@ trait PushSubscriptionSetMethodContract { def getShouldNotReturnExpiredSubscriptionAndTriggerTheDeletion(server: GuiceJamesServer, clock: UpdatableTickingClock): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) - probe.validatePushSubscription(BOB, pushSubscription1.id) + probe.validatePushSubscription(bobUsername, pushSubscription1.id) clock.setInstant(ZonedDateTime.now().plusDays(100).toInstant) @@ -866,7 +877,7 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription1.id)) + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription1.id)) .isNull() } @@ -874,17 +885,17 @@ trait PushSubscriptionSetMethodContract { def getByIdShouldReturnRecords(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) val pushSubscription2 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d087"), types = Seq(EmailTypeName)) val pushSubscription3 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d088"), types = Seq(EmailTypeName)) @@ -942,7 +953,7 @@ trait PushSubscriptionSetMethodContract { def getByIdShouldReturnEmptyWhenEmpty(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) @@ -1024,12 +1035,12 @@ trait PushSubscriptionSetMethodContract { def getShouldFilterProperties(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName)) val pushSubscription2 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d087"), types = Seq(EmailTypeName)) @@ -1661,7 +1672,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldValidateVerificationCode(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -1712,7 +1723,7 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id).validated).isTrue + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id).validated).isTrue } @Test @@ -1835,22 +1846,22 @@ trait PushSubscriptionSetMethodContract { def updateMixed(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d081"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) val pushSubscription2 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d082"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) val pushSubscription3 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d083"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) val pushSubscription4 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d084"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -1928,10 +1939,10 @@ trait PushSubscriptionSetMethodContract { |}""".stripMargin) SoftAssertions.assertSoftly(softly => { - softly.assertThat(probe.retrievePushSubscription(BOB, pushSubscription1.id).validated).isTrue - softly.assertThat(probe.retrievePushSubscription(BOB, pushSubscription2.id).validated).isFalse - softly.assertThat(probe.retrievePushSubscription(BOB, pushSubscription3.id).validated).isTrue - softly.assertThat(probe.retrievePushSubscription(BOB, pushSubscription4.id).validated).isFalse + softly.assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription1.id).validated).isTrue + softly.assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription2.id).validated).isFalse + softly.assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription3.id).validated).isTrue + softly.assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription4.id).validated).isFalse }) } @@ -1939,7 +1950,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldNotValidateVerificationCodeWhenWrong(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -1996,14 +2007,14 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id).validated).isFalse + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id).validated).isFalse } @Test def updateValidExpiresShouldSucceed(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -2055,7 +2066,7 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id) + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id) .expires.value.format(TIME_FORMATTER)) .isEqualTo(validExpiresString) } @@ -2064,7 +2075,7 @@ trait PushSubscriptionSetMethodContract { def updateInvalidExpiresStringShouldFail(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -2125,7 +2136,7 @@ trait PushSubscriptionSetMethodContract { def updateWithBiggerExpiresThanServerLimitShouldSetToServerLimitAndExplicitlyReturned(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -2160,7 +2171,7 @@ trait PushSubscriptionSetMethodContract { .body .asString - val fixedExpires = probe.retrievePushSubscription(BOB, pushSubscription.id) + val fixedExpires = probe.retrievePushSubscription(bobUsername, pushSubscription.id) .expires.value.format(TIME_FORMATTER) assertThatJson(response) @@ -2187,7 +2198,7 @@ trait PushSubscriptionSetMethodContract { def updateOutdatedExpiresShouldFail(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -2248,7 +2259,7 @@ trait PushSubscriptionSetMethodContract { def updateShouldFailWhenUnknownProperty(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL()), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -2303,7 +2314,7 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id).validated).isFalse + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id).validated).isFalse } @Test @@ -2730,7 +2741,7 @@ trait PushSubscriptionSetMethodContract { def destroyShouldSucceed(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) @@ -2775,7 +2786,7 @@ trait PushSubscriptionSetMethodContract { | ] |}""".stripMargin) - assertThat(probe.retrievePushSubscription(BOB, pushSubscription.id)).isNull() + assertThat(probe.retrievePushSubscription(bobUsername, pushSubscription.id)).isNull() } @Test @@ -2875,12 +2886,12 @@ trait PushSubscriptionSetMethodContract { def destroyShouldHandleMixedCases(server: GuiceJamesServer): Unit = { val probe = server.getProbe(classOf[PushSubscriptionProbe]) val pushSubscription1 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d086").toURL), deviceId = DeviceClientId("12c6d086"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) val pushSubscription2 = probe - .createPushSubscription(username = BOB, + .createPushSubscription(username = bobUsername, url = PushSubscriptionServerURL(new URI("https://example.com/push/?device=X8980fc&client=12c6d087").toURL), deviceId = DeviceClientId("12c6d087"), types = Seq(MailboxTypeName, EmailDeliveryTypeName, EmailTypeName)) 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/MemoryPushSubscriptionSetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryPushSubscriptionSetMethodTest.java index e88a3c4ee3..39a3e2a569 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryPushSubscriptionSetMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryPushSubscriptionSetMethodTest.java @@ -46,6 +46,7 @@ public class MemoryPushSubscriptionSetMethodTest implements PushSubscriptionSetM .server(configuration -> MemoryJamesServerMain.createServer(configuration) .overrideWith(new TestJMAPServerModule(), new PushSubscriptionProbeModule(), new TypeStateModule()) .overrideWith(binder -> binder.bind(PushClientConfiguration.class).toInstance(PushClientConfiguration.UNSAFE_DEFAULT()))) + .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS) .build(); @RegisterExtension 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/PostgresPushSubscriptionSetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresPushSubscriptionSetMethodTest.java index 54132d42cb..64bc04238a 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresPushSubscriptionSetMethodTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresPushSubscriptionSetMethodTest.java @@ -61,6 +61,7 @@ public class PostgresPushSubscriptionSetMethodTest implements PushSubscriptionSe .overrideWith(new PushSubscriptionProbeModule()) .overrideWith(new TypeStateModule()) .overrideWith(binder -> binder.bind(PushClientConfiguration.class).toInstance(PushClientConfiguration.UNSAFE_DEFAULT()))) + .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS) .build(); @RegisterExtension --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
