You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/12/19 10:38:34 UTC

[james-project] branch master updated (e4d52f2 -> e603bb3)

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

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


    from e4d52f2  JAMES-2993 JsonSerializationVerifier should rely on isEqualToComparingFieldByFieldRecursively
     new 8d92187  JAMES-3012 Temporally duplicating classes for common JMAP used in tests
     new dcfc522  JAMES-3012 Move DeletedMessageVaultTest to webadmin-integration-tests
     new 6551174  JAMES-3012 Move linshare integration tests to webadmin-integration-tests
     new 6e43a39  JAMES-3012 Move ForwardIntegrationTest to webadmin-integration-tests
     new 35d0523  JAMES-3012 Move ReindexingWithEventDeadLettersTest to webadmin-integration-tests
     new 92dc69a  JAMES-3012 Cleanup common components
     new 8c29dd3  JAMES-3012 Split webadmin-integration-test into common, memory, distributed
     new 161acd6  JAMES-3012 Moving BasicFeature to a generic maven module
     new 09c61f2  JAMES-3012 BasicFeature tagging in webadmin integration tests
     new 363250e  JAMES-3012 Add basic tests qualifier on more test to match previous behaviour
     new 3858a5d  JAMES-3012 Some Swagger tests are implementation specific
     new 3a705b9  JAMES-3012 Optimize imports in SpamAssassin module
     new 8f8ab3a  JAMES-3012 Strong type for JMAP port
     new e603bb3  JAMES-3012 Fixing ghost mailbox test is a webadmin integration test

The 14 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml                                            |   5 +
 .../james/modules/LinshareGuiceExtension.java      |   4 +
 .../test/java/org/apache/james/ESReporterTest.java |   8 +-
 .../apache/james/jmap/draft/JmapGuiceProbe.java    |   3 +-
 .../james/jmap/draft/JmapJamesServerContract.java  |   2 +-
 .../pom.xml                                        |  19 +-
 .../jmap/cassandra/CassandraBulkOperationTest.java |  18 +-
 .../CassandraDeletedMessageVaultTest.java          |  54 ---
 .../CassandraGetMessageListMethodTest.java         |   4 +-
 .../jmap/cassandra/CassandraImapErrorTest.java     |  11 +-
 .../jmap-draft-integration-testing-common/pom.xml  |  15 -
 .../apache/james/jmap/JMAPAuthenticationTest.java  |   8 +-
 .../java/org/apache/james/jmap/JmapURIBuilder.java |  11 +-
 .../org/apache/james/jmap/ProvisioningTest.java    |  22 +-
 .../apache/james/jmap/VacationIntegrationTest.java |  57 +--
 .../james/jmap/VacationRelayIntegrationTest.java   |  10 +-
 .../jmap/draft/methods/integration/FilterTest.java | 182 ++++-----
 .../integration/GetMailboxesMethodTest.java        | 100 ++---
 .../integration/GetMessageListMethodTest.java      | 216 +++++-----
 .../integration/GetVacationResponseTest.java       |  30 +-
 .../methods/integration/QuotaMailingTest.java      |  20 +-
 .../methods/integration/SendMDNMethodTest.java     |  44 +-
 .../integration/SetMailboxesMethodTest.java        | 184 ++++-----
 .../SetMessagesMethodReRoutingTest.java            |  18 +-
 .../methods/integration/SetMessagesMethodTest.java | 444 +++++++++++----------
 .../SetMessagesOutboxFlagUpdateTest.java           |  20 +-
 .../integration/SetVacationResponseTest.java       |  36 +-
 .../methods/integration/SpamAssassinContract.java  |  86 ++--
 .../methods/integration/SpamAssassinModule.java    |   6 -
 .../integration/cucumber/DownloadStepdefs.java     |  12 +-
 .../cucumber/GetMailboxesMethodStepdefs.java       |   4 +-
 .../cucumber/GetMessageListMethodStepdefs.java     |   4 +-
 .../cucumber/GetMessagesMethodStepdefs.java        |   8 +-
 .../methods/integration/cucumber/HttpClient.java   |   2 +-
 .../cucumber/SetMailboxesMethodStepdefs.java       |   6 +-
 .../integration/cucumber/UploadStepdefs.java       |  12 +-
 .../methods/integration/cucumber/UserStepdefs.java |   2 +-
 .../memory-jmap-draft-integration-testing/pom.xml  |  17 -
 .../pom.xml                                        |  13 +-
 .../org/apache/james/jmap/draft/JMAPServer.java    |   5 +-
 .../pom.xml                                        |  92 +----
 .../rabbitmq}/FixingGhostMailboxTest.java          |  32 +-
 .../rabbitmq/RabbitMQAuthorizedEndpointsTest.java} |  28 +-
 .../RabbitMQEventDeadLettersIntegrationTest.java}  |  25 +-
 .../rabbitmq/RabbitMQForwardIntegrationTest.java}  |  11 +-
 .../rabbitmq/RabbitMQJmapExtension.java}           |   9 +-
 .../RabbitMQJwtFilterIntegrationTest.java}         |  26 +-
 ...abbitMQReindexingWithEventDeadLettersTest.java} |  50 ++-
 .../RabbitMQUnauthorizedEndpointsTest.java         | 123 ++++++
 .../RabbitMQWebAdminServerIntegrationTest.java     | 171 ++++++++
 ...minServerTaskSerializationIntegrationTest.java} |  15 +-
 ...abbitMQDeletedMessageVaultIntegrationTest.java} |  10 +-
 ...inshareBlobExportMechanismIntegrationTest.java} |  37 +-
 .../src/test/resources/dnsservice.xml              |   0
 .../src/test/resources/domainlist.xml              |   0
 .../src/test/resources/imapserver.xml              |   0
 .../src/test/resources/jwt_publickey               |   0
 .../src/test/resources/keystore                    | Bin
 .../src/test/resources/listeners.xml}              |  38 +-
 .../src/test/resources/lmtpserver.xml              |   0
 .../src/test/resources/mailetcontainer.xml         |   0
 .../src/test/resources/mailrepositorystore.xml     |   0
 .../src/test/resources/managesieveserver.xml       |   0
 .../src/test/resources/pop3server.xml              |   0
 .../src/test/resources/smtpserver.xml              |   0
 .../memory-webadmin-integration-test}/pom.xml      |  55 ++-
 .../memory/MemoryAuthorizedEndpointsTest.java}     |  20 +-
 .../memory/MemoryForwardIntegrationTest.java       |  12 +-
 .../memory/MemoryJwtFilterIntegrationTest.java}    |  29 +-
 .../memory/MemoryUnauthorizedEndpointsTest.java}   |  30 +-
 .../MemoryWebAdminServerIntegrationTest.java}      |  18 +-
 .../MemoryDeletedMessageVaultIntegrationTest.java} |   8 +-
 ...LinshareBlobExportMechanismIntegrationTest.java |  11 +-
 .../src/test/resources/dnsservice.xml              |   0
 .../src/test/resources/domainlist.xml              |   0
 .../src/test/resources/imapserver.xml              |   0
 .../src/test/resources/jwt_publickey               |   0
 .../src/test/resources/keystore                    | Bin
 .../src/test/resources/listeners.xml}              |  30 +-
 .../src/test/resources/lmtpserver.xml              |   0
 .../src/test/resources/mailetcontainer.xml         |   6 +-
 .../src/test/resources/mailrepositorystore.xml     |   0
 .../src/test/resources/managesieveserver.xml       |   0
 .../src/test/resources/pop3server.xml              |   0
 .../src/test/resources/smtpserver.xml              |   0
 server/protocols/webadmin-integration-test/pom.xml | 145 +------
 .../integration/UnauthorizedEndpointsTest.java     | 206 ----------
 .../{ => webadmin-integration-test-common}/pom.xml |  92 ++---
 .../integration/AuthorizedEndpointsTest.java       |  15 +-
 .../integration/ForwardIntegrationTest.java        |  86 ++--
 .../integration/JwtFilterIntegrationTest.java      |  22 +-
 .../integration/UnauthorizedEndpointsTest.java     | 197 +++++++++
 .../webadmin/integration/UnauthorizedModule.java   |   0
 .../integration/WebAdminServerIntegrationTest.java | 128 +-----
 .../vault/DeletedMessageVaultIntegrationTest.java} |  91 +++--
 .../vault}/DeletedMessagesVaultRequests.java       |  12 +-
 .../webadmin/integration/vault}/ExportRequest.java |  12 +-
 ...LinshareBlobExportMechanismIntegrationTest.java |  53 +--
 server/testing/pom.xml                             |  17 +-
 .../java/org/apache/james/jmap/AccessToken.java}   |  27 +-
 .../apache/james/jmap/HttpJmapAuthentication.java  |   5 +-
 .../apache/james/jmap/JMAPTestingConstants.java}   |   3 +-
 .../org/apache/james/jmap/JmapCommonRequests.java  |  19 +-
 .../apache/james/jmap/LocalHostURIBuilder.java}    |  10 +-
 .../james/junit/categories/BasicFeature.java}      |  22 +-
 105 files changed, 1836 insertions(+), 1934 deletions(-)
 delete mode 100644 server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/pom.xml (56%)
 rename server/{container/guice/cassandra-guice/src/test/java/org/apache/james => protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq}/FixingGhostMailboxTest.java (92%)
 rename server/protocols/{jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraForwardIntegrationTest.java => webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java} (65%)
 rename server/protocols/webadmin-integration-test/{src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java => distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java} (98%)
 copy server/protocols/{jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3ForwardIntegrationTest.java => webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java} (87%)
 rename server/protocols/webadmin-integration-test/{src/test/java/org/apache/james/webadmin/integration/CassandraJmapExtension.java => distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJmapExtension.java} (96%)
 rename server/protocols/{jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3ForwardIntegrationTest.java => webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java} (63%)
 rename server/protocols/{jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/ReindexingWithEventDeadLettersTest.java => webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java} (80%)
 create mode 100644 server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
 create mode 100644 server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
 rename server/protocols/webadmin-integration-test/{src/test/java/org/apache/james/webadmin/integration/WebAdminServerTaskSerializationIntegrationTest.java => distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java} (98%)
 rename server/protocols/{jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java => webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java} (86%)
 copy server/protocols/{jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraLinshareBlobExportMechanismIntegrationTest.java => webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java} (59%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/dnsservice.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/domainlist.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/imapserver.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/jwt_publickey (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/keystore (100%)
 copy server/protocols/webadmin-integration-test/{src/test/resources/dnsservice.xml => distributed-webadmin-integration-test/src/test/resources/listeners.xml} (54%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/lmtpserver.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/mailetcontainer.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/mailrepositorystore.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/managesieveserver.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/pop3server.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => distributed-webadmin-integration-test}/src/test/resources/smtpserver.xml (100%)
 copy server/{testing => protocols/webadmin-integration-test/memory-webadmin-integration-test}/pom.xml (57%)
 copy server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryForwardIntegrationTest.java => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java} (73%)
 copy server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration}/memory/MemoryForwardIntegrationTest.java (81%)
 copy server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryJwtFilterIntegrationTest.java} (65%)
 rename server/protocols/{jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraLinshareBlobExportMechanismIntegrationTest.java => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryUnauthorizedEndpointsTest.java} (65%)
 rename server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryForwardIntegrationTest.java => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java} (75%)
 rename server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryDeletedMessageVaultIntegrationTest.java} (89%)
 rename server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory => webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault}/MemoryLinshareBlobExportMechanismIntegrationTest.java (85%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/dnsservice.xml (100%)
 copy server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/domainlist.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/imapserver.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/jwt_publickey (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/keystore (100%)
 rename server/protocols/webadmin-integration-test/{src/test/resources/domainlist.xml => memory-webadmin-integration-test/src/test/resources/listeners.xml} (58%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/lmtpserver.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/mailetcontainer.xml (94%)
 copy server/protocols/{jmap-draft-integration-testing/memory-jmap-draft-integration-testing => webadmin-integration-test/memory-webadmin-integration-test}/src/test/resources/mailrepositorystore.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/managesieveserver.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/pop3server.xml (100%)
 rename server/protocols/webadmin-integration-test/{ => memory-webadmin-integration-test}/src/test/resources/smtpserver.xml (100%)
 delete mode 100644 server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java
 copy server/protocols/webadmin-integration-test/{ => webadmin-integration-test-common}/pom.xml (73%)
 rename server/protocols/webadmin-integration-test/{src/test => webadmin-integration-test-common/src/main}/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java (84%)
 rename server/protocols/{jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods => webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin}/integration/ForwardIntegrationTest.java (84%)
 rename server/protocols/webadmin-integration-test/{src/test => webadmin-integration-test-common/src/main}/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java (86%)
 create mode 100644 server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java
 rename server/protocols/webadmin-integration-test/{src/test => webadmin-integration-test-common/src/main}/java/org/apache/james/webadmin/integration/UnauthorizedModule.java (100%)
 rename server/protocols/webadmin-integration-test/{src/test => webadmin-integration-test-common/src/main}/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java (71%)
 rename server/protocols/{jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/DeletedMessagesVaultTest.java => webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java} (93%)
 rename server/protocols/{jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap => webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault}/DeletedMessagesVaultRequests.java (85%)
 rename server/protocols/{jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap => webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault}/ExportRequest.java (89%)
 rename server/protocols/{jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration => webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault}/LinshareBlobExportMechanismIntegrationTest.java (86%)
 copy server/{protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java => testing/src/main/java/org/apache/james/jmap/AccessToken.java} (70%)
 rename server/{protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test => testing/src/main}/java/org/apache/james/jmap/HttpJmapAuthentication.java (95%)
 rename server/{protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/TestingConstants.java => testing/src/main/java/org/apache/james/jmap/JMAPTestingConstants.java} (98%)
 rename server/{protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test => testing/src/main}/java/org/apache/james/jmap/JmapCommonRequests.java (92%)
 copy server/{protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java => testing/src/main/java/org/apache/james/jmap/LocalHostURIBuilder.java} (83%)
 copy server/{protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java => testing/src/main/java/org/apache/james/junit/categories/BasicFeature.java} (67%)


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 02/14: JAMES-3012 Move DeletedMessageVaultTest to webadmin-integration-tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit dcfc52235e2d76ea2c2068bc33d4756f1b9c7461
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Dec 13 10:49:29 2019 +0700

    JAMES-3012 Move DeletedMessageVaultTest to webadmin-integration-tests
---
 .../pom.xml                                        |  11 --
 .../CassandraDeletedMessageVaultTest.java          |  54 ----------
 .../memory-jmap-draft-integration-testing/pom.xml  |  11 --
 .../pom.xml                                        |  11 --
 .../rabbitmq/RabbitMQDeletedMessagesVaultTest.java |  54 ----------
 server/protocols/webadmin-integration-test/pom.xml |  17 +++
 .../vault/DeletedMessageVaultIntegrationTest.java} | 118 ++++++++++++---------
 .../vault/DeletedMessagesVaultRequests.java        |  83 +++++++++++++++
 .../webadmin/integration/vault/ExportRequest.java} |  64 ++++++-----
 9 files changed, 205 insertions(+), 218 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
index ee1a549..be5be85 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
@@ -88,11 +88,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>backup</artifactId>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>blob-export-guice</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -169,12 +164,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
-            <scope>test</scope>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-testing</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java
deleted file mode 100644
index 49f93e7..0000000
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.cassandra;
-
-import java.io.IOException;
-import java.time.Clock;
-
-import org.apache.james.CassandraJmapTestRule;
-import org.apache.james.DockerCassandraRule;
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.jmap.draft.methods.integration.DeletedMessagesVaultTest;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.Rule;
-
-public class CassandraDeletedMessageVaultTest extends DeletedMessagesVaultTest {
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
-    
-    @Override
-    protected GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
-        return rule.jmapServer(cassandra.getModule(),
-            new TestDeleteMessageVaultPreDeletionHookModule(),
-            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
-            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
-            binder -> binder.bind(Clock.class).toInstance(clock));
-    }
-
-    @Override
-    protected void awaitSearchUpToDate() {
-        rule.await();
-    }
-}
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
index fd5b6ea..67e79f1 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
@@ -70,11 +70,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>backup</artifactId>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-dnsservice-test</artifactId>
         </dependency>
         <dependency>
@@ -91,12 +86,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-jmap-draft-integration-testing</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index edf56b3..6dea7f9 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -53,11 +53,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>backup</artifactId>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>blob-objectstorage</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -124,12 +119,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
-            <scope>test</scope>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-testing</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java
deleted file mode 100644
index 176b309..0000000
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.rabbitmq;
-
-import java.io.IOException;
-import java.time.Clock;
-
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.jmap.draft.methods.integration.DeletedMessagesVaultTest;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.Rule;
-
-public class RabbitMQDeletedMessagesVaultTest extends DeletedMessagesVaultTest {
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
-
-    @Override
-    protected GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
-        return rule.jmapServer(cassandra.getModule(),
-            new TestDeleteMessageVaultPreDeletionHookModule(),
-            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
-            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
-            binder -> binder.bind(Clock.class).toInstance(clock));
-    }
-
-    @Override
-    protected void awaitSearchUpToDate() {
-        rule.await();
-    }
-}
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index 7e58acb..9ef15ce 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -70,6 +70,12 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>backup</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>blob-objectstorage</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -111,6 +117,17 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-webadmin-core</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/DeletedMessagesVaultTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
similarity index 91%
rename from server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/DeletedMessagesVaultTest.java
rename to server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index 6e43cd8..07755af 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/DeletedMessagesVaultTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -17,30 +17,29 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.draft.methods.integration;
+package org.apache.james.webadmin.integration.vault;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static io.restassured.config.ParamConfig.UpdateStrategy.REPLACE;
-import static org.apache.james.jmap.DeletedMessagesVaultRequests.deleteFromVault;
-import static org.apache.james.jmap.DeletedMessagesVaultRequests.exportVaultContent;
-import static org.apache.james.jmap.DeletedMessagesVaultRequests.purgeVault;
-import static org.apache.james.jmap.DeletedMessagesVaultRequests.restoreMessagesForUserWithQuery;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.LOCALHOST_IP;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.deleteMessages;
 import static org.apache.james.jmap.JmapCommonRequests.getAllMailboxesIds;
 import static org.apache.james.jmap.JmapCommonRequests.getLastMessageId;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
-import static org.apache.james.linshare.LinshareFixture.MATCH_ALL_QUERY;
 import static org.apache.james.mailbox.backup.ZipAssert.EntryChecks.hasName;
 import static org.apache.james.mailbox.backup.ZipAssert.assertThatZip;
+import static org.apache.james.webadmin.integration.vault.DeletedMessagesVaultRequests.deleteFromVault;
+import static org.apache.james.webadmin.integration.vault.DeletedMessagesVaultRequests.exportVaultContent;
+import static org.apache.james.webadmin.integration.vault.DeletedMessagesVaultRequests.purgeVault;
+import static org.apache.james.webadmin.integration.vault.DeletedMessagesVaultRequests.restoreMessagesForUserWithQuery;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.hasItem;
 
@@ -50,28 +49,29 @@ import java.time.Clock;
 import java.time.ZonedDateTime;
 import java.util.List;
 
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.jmap.ExportRequest;
-import org.apache.james.jmap.api.access.AccessToken;
-import org.apache.james.jmap.categories.BasicFeature;
+import org.apache.james.jmap.AccessToken;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.Role;
 import org.apache.james.mailbox.backup.ZipAssert;
-import org.apache.james.mailbox.backup.ZipAssert.EntryChecks;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.server.core.JamesServerResourceLoader;
 import org.apache.james.server.core.filesystem.FileSystemImpl;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.utils.UpdatableTickingClock;
 import org.apache.james.utils.WebAdminGuiceProbe;
+import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
@@ -79,7 +79,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.experimental.categories.Category;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Strings;
@@ -90,7 +89,8 @@ import io.restassured.config.ParamConfig;
 import io.restassured.parsing.Parser;
 import io.restassured.specification.RequestSpecification;
 
-public abstract class DeletedMessagesVaultTest {
+public class DeletedMessageVaultIntegrationTest {
+
     private static final ZonedDateTime NOW = ZonedDateTime.now();
     private static final ZonedDateTime TWO_MONTH_AFTER_ONE_YEAR_EXPIRATION = NOW.plusYears(1).plusMonths(2);
     private static final String FIRST_SUBJECT = "first subject";
@@ -103,6 +103,10 @@ public abstract class DeletedMessagesVaultTest {
     private static final ConditionFactory WAIT_TWO_MINUTES = calmlyAwait.atMost(Duration.TWO_MINUTES);
     private static final String SUBJECT = "This mail will be restored from the vault!!";
     private static final String MAILBOX_NAME = "toBeDeleted";
+    private static final String MATCH_ALL_QUERY = "{" +
+        "\"combinator\": \"and\"," +
+        "\"criteria\": []" +
+        "}";
     private static final ExportRequest EXPORT_ALL_HOMER_MESSAGES_TO_BART = ExportRequest
         .userExportFrom(HOMER)
         .exportTo(BART)
@@ -111,13 +115,11 @@ public abstract class DeletedMessagesVaultTest {
         .userExportFrom(JACK)
         .exportTo(HOMER)
         .query(MATCH_ALL_QUERY);
-
-    private MailboxId otherMailboxId;
-
-    protected abstract GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException;
-
-    protected abstract void awaitSearchUpToDate();
-
+    
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
     @Rule
     public IMAPMessageReader imapMessageReader = new IMAPMessageReader();
     @Rule
@@ -129,6 +131,7 @@ public abstract class DeletedMessagesVaultTest {
     private GuiceJamesServer jmapServer;
     private RequestSpecification webAdminApi;
     private UpdatableTickingClock clock;
+    private MailboxId otherMailboxId;
     private FileSystem fileSystem;
 
     @Before
@@ -151,21 +154,35 @@ public abstract class DeletedMessagesVaultTest {
         dataProbe.addUser(JACK, PASSWORD);
         mailboxProbe.createMailbox("#private", HOMER, DefaultMailboxes.INBOX);
         otherMailboxId = mailboxProbe.createMailbox("#private", HOMER, MAILBOX_NAME);
-        homerAccessToken = authenticateJamesUser(baseUri(jmapServer), Username.of(HOMER), PASSWORD);
-        bartAccessToken = authenticateJamesUser(baseUri(jmapServer), Username.of(BART), BOB_PASSWORD);
-        jackAccessToken = authenticateJamesUser(baseUri(jmapServer), Username.of(JACK), PASSWORD);
+        int jmapPort = jmapServer.getProbe(JmapGuiceProbe.class)
+            .getJmapPort();
+        homerAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(HOMER), PASSWORD);
+        bartAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(BART), BOB_PASSWORD);
+        jackAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(JACK), PASSWORD);
 
         webAdminApi = WebAdminUtils.spec(jmapServer.getProbe(WebAdminGuiceProbe.class).getWebAdminPort())
             .config(WebAdminUtils.defaultConfig()
                 .paramConfig(new ParamConfig(REPLACE, REPLACE, REPLACE)));
     }
+    
+    private GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
+        return rule.jmapServer(cassandra.getModule(),
+            new TestDeleteMessageVaultPreDeletionHookModule(),
+            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
+            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
+            binder -> binder.bind(Clock.class).toInstance(clock));
+    }
 
+    private void awaitSearchUpToDate() {
+        rule.await();
+    }
+    
     @After
     public void tearDown() throws Exception {
         jmapServer.stop();
     }
 
-    @Category(BasicFeature.class)
+    
     @Test
     public void vaultEndpointShouldRestoreJmapDeletedEmail() {
         bartSendMessageToHomer();
@@ -179,7 +196,7 @@ public abstract class DeletedMessagesVaultTest {
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -188,8 +205,7 @@ public abstract class DeletedMessagesVaultTest {
             .log().ifValidationFails()
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
-
-    @Category(BasicFeature.class)
+    
     @Test
     public void vaultEndpointShouldRestoreImapDeletedEmail() throws Exception {
         bartSendMessageToHomer();
@@ -208,7 +224,7 @@ public abstract class DeletedMessagesVaultTest {
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -218,7 +234,7 @@ public abstract class DeletedMessagesVaultTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
-    @Category(BasicFeature.class)
+    
     @Test
     public void vaultEndpointShouldRestoreImapDeletedMailbox() throws Exception {
         bartSendMessageToHomer();
@@ -239,7 +255,7 @@ public abstract class DeletedMessagesVaultTest {
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -289,7 +305,7 @@ public abstract class DeletedMessagesVaultTest {
 
         String messageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -452,7 +468,7 @@ public abstract class DeletedMessagesVaultTest {
 
         String newMessageId = listMessageIdsForAccount(homerAccessToken).get(0);
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + newMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -462,7 +478,7 @@ public abstract class DeletedMessagesVaultTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
-    @Category(BasicFeature.class)
+    
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenJmapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
@@ -476,11 +492,11 @@ public abstract class DeletedMessagesVaultTest {
 
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
             zipAssert.hasEntriesSize(1)
-                .allSatisfies(entry -> EntryChecks.hasName(messageIdOfHomer + ".eml"));
+                .allSatisfies(entry -> hasName(messageIdOfHomer + ".eml"));
         }
     }
 
-    @Category(BasicFeature.class)
+    
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
@@ -499,11 +515,11 @@ public abstract class DeletedMessagesVaultTest {
 
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
             zipAssert.hasEntriesSize(1)
-                .allSatisfies(entry -> EntryChecks.hasName(messageIdOfHomer + ".eml"));
+                .allSatisfies(entry -> hasName(messageIdOfHomer + ".eml"));
         }
     }
 
-    @Category(BasicFeature.class)
+    
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeletedMailbox() throws Exception {
         bartSendMessageToHomer();
@@ -524,7 +540,7 @@ public abstract class DeletedMessagesVaultTest {
 
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
             zipAssert.hasEntriesSize(1)
-                .allSatisfies(entry -> EntryChecks.hasName(messageIdOfHomer + ".eml"));
+                .allSatisfies(entry -> hasName(messageIdOfHomer + ".eml"));
         }
     }
 
@@ -645,7 +661,7 @@ public abstract class DeletedMessagesVaultTest {
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
             zipAssert.hasEntriesSize(1)
-                .allSatisfies(entry -> EntryChecks.hasName(messageIdOfNotExpiredMessage + ".eml"));
+                .allSatisfies(entry -> hasName(messageIdOfNotExpiredMessage + ".eml"));
         }
     }
 
@@ -732,7 +748,7 @@ public abstract class DeletedMessagesVaultTest {
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
             zipAssert.hasEntriesSize(1)
-                .allSatisfies(entry -> EntryChecks.hasName(messageIdOfHomer + ".eml"));
+                .allSatisfies(entry -> hasName(messageIdOfHomer + ".eml"));
         }
     }
 
@@ -797,7 +813,7 @@ public abstract class DeletedMessagesVaultTest {
         String fileLocationOfBartMessages = exportAndGetFileLocationFromLastMail(EXPORT_ALL_JACK_MESSAGES_TO_HOMER, homerAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocationOfBartMessages))) {
             zipAssert.hasEntriesSize(1)
-                .allSatisfies(entry -> EntryChecks.hasName(jackInboxMessageId + ".eml"));
+                .allSatisfies(entry -> hasName(jackInboxMessageId + ".eml"));
         }
     }
 
@@ -813,7 +829,7 @@ public abstract class DeletedMessagesVaultTest {
 
     private String exportedFileLocationFromMailHeader(String messageId, AccessToken accessToken) {
         return with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
                 .post("/jmap")
             .jsonPath()
@@ -823,7 +839,7 @@ public abstract class DeletedMessagesVaultTest {
 
     private void homerSharesHisMailboxWithBart() {
         with()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -866,7 +882,7 @@ public abstract class DeletedMessagesVaultTest {
             "]";
 
         with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -898,7 +914,7 @@ public abstract class DeletedMessagesVaultTest {
             "]";
 
         with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -941,7 +957,7 @@ public abstract class DeletedMessagesVaultTest {
             "]";
 
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body(updateRequestBody)
             .when()
             .post("/jmap");
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java
new file mode 100644
index 0000000..ee38992
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java
@@ -0,0 +1,83 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.vault;
+
+import static org.hamcrest.Matchers.is;
+
+import io.restassured.specification.RequestSpecification;
+
+class DeletedMessagesVaultRequests {
+
+    static void exportVaultContent(RequestSpecification webAdminApi, ExportRequest exportRequest) {
+        String taskId =
+            webAdminApi.with()
+                .queryParam("action", "export")
+                .queryParam("exportTo", exportRequest.getSharee())
+                .body(exportRequest.getMatchingQuery())
+                .post("/deletedMessages/users/" + exportRequest.getUserExportFrom())
+            .jsonPath()
+                .get("taskId");
+
+        webAdminApi.with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+
+    static void restoreMessagesForUserWithQuery(RequestSpecification webAdminApi, String user, String criteria) {
+        String taskId = webAdminApi.with()
+            .body(criteria)
+            .post("/deletedMessages/users/" + user + "?action=restore")
+        .jsonPath()
+            .get("taskId");
+
+        webAdminApi.given()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+
+    static void purgeVault(RequestSpecification webAdminApi) {
+        String taskId =
+            webAdminApi.with()
+                .queryParam("scope", "expired")
+                .delete("/deletedMessages")
+            .jsonPath()
+                .get("taskId");
+
+        webAdminApi.with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+
+    static void deleteFromVault(RequestSpecification webAdminApi, String user, String messageId) {
+        String taskId =
+            webAdminApi.with()
+                .delete("/deletedMessages/users/" + user + "/messages/" + messageId)
+            .jsonPath()
+                .get("taskId");
+
+        webAdminApi.with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+}
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/ExportRequest.java
similarity index 50%
rename from server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java
rename to server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/ExportRequest.java
index 1af2008..418ca2c 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/ExportRequest.java
@@ -17,34 +17,46 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.memory;
-
-import java.io.IOException;
-import java.time.Clock;
-
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.MemoryJmapTestRule;
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.jmap.draft.methods.integration.DeletedMessagesVaultTest;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.Rule;
-
-public class MemoryDeletedMessagesVaultTest extends DeletedMessagesVaultTest {
-    @Rule
-    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
-
-    @Override
-    protected GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
-        return memoryJmap.jmapServer(
-            new TestDeleteMessageVaultPreDeletionHookModule(),
-            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
-            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
-            binder -> binder.bind(Clock.class).toInstance(clock));
+package org.apache.james.webadmin.integration.vault;
+
+class ExportRequest {
+
+    public static class Builder {
+
+        @FunctionalInterface
+        public interface RequireSharee {
+            RequireMatchingQuery exportTo(String sharee);
+        }
+
+        @FunctionalInterface
+        public interface RequireMatchingQuery {
+            ExportRequest query(String query);
+        }
+    }
+
+    static Builder.RequireSharee userExportFrom(String userExportFrom) {
+        return sharee -> query -> new ExportRequest(userExportFrom, sharee, query);
     }
 
-    @Override
-    protected void awaitSearchUpToDate() {
+    private final String userExportFrom;
+    private final String sharee;
+    private final String matchingQuery;
+
+    private ExportRequest(String userExportFrom, String sharee, String matchingQuery) {
+        this.userExportFrom = userExportFrom;
+        this.sharee = sharee;
+        this.matchingQuery = matchingQuery;
+    }
+
+    String getUserExportFrom() {
+        return userExportFrom;
+    }
+
+    String getSharee() {
+        return sharee;
+    }
 
+    String getMatchingQuery() {
+        return matchingQuery;
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 10/14: JAMES-3012 Add basic tests qualifier on more test to match previous behaviour

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 363250e37b0ebeec2c46b016d1cef5d63a704f1a
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 18 04:42:23 2019 +0100

    JAMES-3012 Add basic tests qualifier on more test to match previous behaviour
---
 .../rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java         | 2 --
 .../rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java      | 8 ++++----
 .../integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java   | 3 +++
 .../rabbitmq/RabbitMQWebAdminServerIntegrationTest.java           | 3 +++
 .../RabbitMQWebAdminServerTaskSerializationIntegrationTest.java   | 3 +++
 5 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
index d9990fc..e25fcc4 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
@@ -358,7 +358,6 @@ public class RabbitMQEventDeadLettersIntegrationTest {
             .statusCode(HttpStatus.NOT_FOUND_404);
     }
 
-    @Category(BasicFeature.class)
     @Test
     public void failedEventShouldBeCorrectlyProcessedByListenerAfterSuccessfulRedelivery() throws InterruptedException {
         retryEventsListener.callsPerEventBeforeSuccess(MAX_RETRIES + 1);
@@ -507,7 +506,6 @@ public class RabbitMQEventDeadLettersIntegrationTest {
             .body(".", hasSize(0));
     }
 
-    @Category(BasicFeature.class)
     @Test
     public void multipleFailedEventsShouldBeCorrectlyProcessedByListenerAfterSuccessfulAllRedelivery() {
         retryEventsListener.callsPerEventBeforeSuccess(MAX_RETRIES + 1);
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
index d5aeafd..18ac7fb 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
@@ -65,6 +65,7 @@ import io.restassured.RestAssured;
 import io.restassured.parsing.Parser;
 import io.restassured.specification.RequestSpecification;
 
+@Category(BasicFeature.class)
 class RabbitMQReindexingWithEventDeadLettersTest {
 
     private static final String ELASTICSEARCH_LISTENER_GROUP = "org.apache.james.mailbox.elasticsearch.events.ElasticSearchListeningMessageSearchIndex$ElasticSearchListeningMessageSearchIndexGroup";
@@ -123,7 +124,7 @@ class RabbitMQReindexingWithEventDeadLettersTest {
 
     @Disabled("JAMES-3011 It's already fails for a long time, but CI didn't detect this when it's not marked as BasicFeature")
     @Test
-    protected void indexationShouldBeFailingWhenElasticSearchContainerIsPaused() throws Exception {
+    void indexationShouldBeFailingWhenElasticSearchContainerIsPaused() throws Exception {
         aliceSavesADraft();
 
         CALMLY_AWAIT.until(() -> listElasticSearchFailedEvents().size() == 1);
@@ -132,9 +133,8 @@ class RabbitMQReindexingWithEventDeadLettersTest {
         assertThat(listMessageIdsForAccount(aliceAccessToken)).isEmpty();
     }
 
-    @Category(BasicFeature.class)
     @Test
-    protected void redeliverShouldReIndexFailedMessages() throws Exception {
+    void redeliverShouldReIndexFailedMessages() throws Exception {
         aliceSavesADraft();
         CALMLY_AWAIT.until(() -> listElasticSearchFailedEvents().size() == 1);
 
@@ -145,7 +145,7 @@ class RabbitMQReindexingWithEventDeadLettersTest {
     }
 
     @Test
-    protected void redeliverShouldCleanEventDeadLetter() throws Exception {
+    void redeliverShouldCleanEventDeadLetter() throws Exception {
         aliceSavesADraft();
         CALMLY_AWAIT.until(() -> listElasticSearchFailedEvents().size() == 1);
 
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
index a5d757b..481813c 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
@@ -21,6 +21,7 @@ package org.apache.james.webadmin.integration.rabbitmq;
 
 import static io.restassured.RestAssured.when;
 
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.webadmin.integration.UnauthorizedEndpointsTest;
 import org.apache.james.webadmin.routes.AliasRoutes;
 import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
@@ -42,10 +43,12 @@ import org.apache.james.webadmin.routes.UserQuotaRoutes;
 import org.apache.james.webadmin.routes.UserRoutes;
 import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRoutes;
 import org.eclipse.jetty.http.HttpStatus;
+import org.junit.experimental.categories.Category;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
+@Category(BasicFeature.class)
 class RabbitMQUnauthorizedEndpointsTest extends UnauthorizedEndpointsTest {
 
     @RegisterExtension
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
index a291a06..188268a 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
@@ -31,6 +31,7 @@ import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
 import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.webadmin.integration.WebAdminServerIntegrationTest;
 import org.apache.james.webadmin.routes.AliasRoutes;
 import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
@@ -40,9 +41,11 @@ import org.awaitility.Duration;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import io.restassured.http.ContentType;
 
+@Category(BasicFeature.class)
 public class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegrationTest {
 
     private static final String VERSION = "/cassandra/version";
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
index 6afa076..0de9075 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
@@ -44,6 +44,7 @@ import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManage
 import org.apache.james.backends.cassandra.versions.SchemaVersion;
 import org.apache.james.core.Username;
 import org.apache.james.core.builder.MimeMessageBuilder;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.events.Event;
 import org.apache.james.mailbox.events.EventDeadLetters;
@@ -81,10 +82,12 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 
+@Category(BasicFeature.class)
 public class RabbitMQWebAdminServerTaskSerializationIntegrationTest {
 
     @Rule


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 09/14: JAMES-3012 BasicFeature tagging in webadmin integration tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 09c61f22aeef8f0f02d799badd5538bf1347d7fb
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Mon Dec 16 19:43:10 2019 +0700

    JAMES-3012 BasicFeature tagging in webadmin integration tests
---
 .../distributed-webadmin-integration-test/pom.xml         | 15 +++++++++++++++
 .../webadmin/integration/ForwardIntegrationTest.java      |  3 +++
 .../webadmin/integration/JwtFilterIntegrationTest.java    |  3 +++
 .../vault/DeletedMessageVaultIntegrationTest.java         | 13 ++++++++-----
 4 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
index 8c2b542..619c86b 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
@@ -91,4 +91,19 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <argLine>-Xms512m -Xmx1024m</argLine>
+                    <reuseForks>true</reuseForks>
+                    <!-- Fail tests longer than 2 hours, prevent form random locking tests -->
+                    <forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
+                    <groups combine.self="override">org.apache.james.junit.categories.BasicFeature</groups>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
index 3b8e236..15e6683 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
@@ -45,6 +45,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
@@ -56,6 +57,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import io.restassured.RestAssured;
 import io.restassured.specification.RequestSpecification;
@@ -97,6 +99,7 @@ public abstract class ForwardIntegrationTest {
         jmapServer.stop();
     }
 
+    @Category(BasicFeature.class)
     @Test
     public void messageShouldBeForwardedWhenDefinedInRESTAPI() {
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), BOB.asString()));
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
index 709124e..5b1d1d1 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
@@ -26,6 +26,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.Optional;
 
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.jwt.JwtConfiguration;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.utils.DataProbeImpl;
@@ -36,6 +37,7 @@ import org.eclipse.jetty.http.HttpStatus;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import io.restassured.RestAssured;
 
@@ -78,6 +80,7 @@ public abstract class JwtFilterIntegrationTest {
 
     protected abstract GuiceJamesServer createJamesServer(JwtConfiguration jwtConfiguration) throws Exception;
 
+    @Category(BasicFeature.class)
     @Test
     public void jwtAuthenticationShouldWork() throws Exception {
         given()
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index cd9c8aa..3299aaa 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -54,6 +54,7 @@ import org.apache.james.core.Username;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.Role;
 import org.apache.james.mailbox.backup.ZipAssert;
@@ -76,6 +77,7 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Strings;
@@ -167,7 +169,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
         jmapServer.stop();
     }
 
-
+    @Category(BasicFeature.class)
     @Test
     public void vaultEndpointShouldRestoreJmapDeletedEmail() {
         bartSendMessageToHomer();
@@ -191,6 +193,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
+    @Category(BasicFeature.class)
     @Test
     public void vaultEndpointShouldRestoreImapDeletedEmail() throws Exception {
         bartSendMessageToHomer();
@@ -219,7 +222,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
-
+    @Category(BasicFeature.class)
     @Test
     public void vaultEndpointShouldRestoreImapDeletedMailbox() throws Exception {
         bartSendMessageToHomer();
@@ -463,7 +466,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
-
+    @Category(BasicFeature.class)
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenJmapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
@@ -481,7 +484,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
         }
     }
 
-
+    @Category(BasicFeature.class)
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
@@ -504,7 +507,7 @@ public abstract class DeletedMessageVaultIntegrationTest {
         }
     }
 
-
+    @Category(BasicFeature.class)
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeletedMailbox() throws Exception {
         bartSendMessageToHomer();


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 04/14: JAMES-3012 Move ForwardIntegrationTest to webadmin-integration-tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6e43a39ffa7a5793595278a25555626b47e267ce
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Dec 13 14:11:28 2019 +0700

    JAMES-3012 Move ForwardIntegrationTest to webadmin-integration-tests
---
 .../cassandra/CassandraForwardIntegrationTest.java | 46 ----------
 .../jmap-draft-integration-testing-common/pom.xml  |  5 --
 .../jmap/memory/MemoryForwardIntegrationTest.java  | 42 ----------
 .../RabbitMQAwsS3ForwardIntegrationTest.java       | 47 -----------
 .../integration/ForwardIntegrationTest.java        | 97 ++++++++++++----------
 5 files changed, 55 insertions(+), 182 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraForwardIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraForwardIntegrationTest.java
deleted file mode 100644
index 80cc8c8..0000000
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraForwardIntegrationTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.cassandra;
-
-import java.io.IOException;
-
-import org.apache.james.CassandraJmapTestRule;
-import org.apache.james.DockerCassandraRule;
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.jmap.draft.methods.integration.ForwardIntegrationTest;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.Rule;
-
-public class CassandraForwardIntegrationTest extends ForwardIntegrationTest {
-
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
-    
-    @Override
-    protected GuiceJamesServer createJmapServer() throws IOException {
-        return rule.jmapServer(cassandra.getModule(),
-            binder -> binder.bind(WebAdminConfiguration.class)
-                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
-    }
-    
-}
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml
index 9b4d141..101fd2b 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml
@@ -114,11 +114,6 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-core</artifactId>
-            <type>test-jar</type>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>testing-base</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryForwardIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryForwardIntegrationTest.java
deleted file mode 100644
index a64c1f8..0000000
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryForwardIntegrationTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.memory;
-
-import java.io.IOException;
-
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.MemoryJmapTestRule;
-import org.apache.james.jmap.draft.methods.integration.ForwardIntegrationTest;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.Rule;
-
-public class MemoryForwardIntegrationTest extends ForwardIntegrationTest {
-
-    @Rule
-    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
-
-    @Override
-    protected GuiceJamesServer createJmapServer() throws IOException {
-        return memoryJmap
-            .jmapServer(binder -> binder.bind(WebAdminConfiguration.class)
-                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
-    }
-    
-}
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3ForwardIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3ForwardIntegrationTest.java
deleted file mode 100644
index 150c178..0000000
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3ForwardIntegrationTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.rabbitmq;
-
-import java.io.IOException;
-
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.jmap.draft.methods.integration.ForwardIntegrationTest;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.Rule;
-
-public class RabbitMQAwsS3ForwardIntegrationTest extends ForwardIntegrationTest {
-
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
-
-    @Override
-    protected GuiceJamesServer createJmapServer() throws IOException {
-        return rule.jmapServer(cassandra.getModule(),
-            binder -> binder.bind(WebAdminConfiguration.class)
-                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
-    }
-
-}
-
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/ForwardIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
similarity index 82%
rename from server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/ForwardIntegrationTest.java
rename to server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
index 4ddf25e..bc64e4e 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/ForwardIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
@@ -17,59 +17,64 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.draft.methods.integration;
+package org.apache.james.webadmin.integration;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.CEDRIC;
+import static org.apache.james.jmap.JMAPTestingConstants.CEDRIC_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.isAnyMessageFoundInRecipientsMailboxes;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.BOB;
-import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.CEDRIC;
-import static org.apache.james.jmap.TestingConstants.CEDRIC_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.jmap.api.access.AccessToken;
-import org.apache.james.jmap.categories.BasicFeature;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.probe.DataProbe;
+import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.WebAdminGuiceProbe;
+import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Duration;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.experimental.categories.Category;
 
 import io.restassured.RestAssured;
 import io.restassured.specification.RequestSpecification;
 
-public abstract class ForwardIntegrationTest {
+public class ForwardIntegrationTest {
 
     @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+    @Rule
     public SMTPMessageSender messageSender = new SMTPMessageSender(DOMAIN);
 
-    protected abstract GuiceJamesServer createJmapServer() throws IOException;
-
     private GuiceJamesServer jmapServer;
     private RequestSpecification webAdminApi;
+    private Port jmapPort;
 
     @Before
     public void setUp() throws Exception {
@@ -87,6 +92,15 @@ public abstract class ForwardIntegrationTest {
                 .build();
 
         webAdminApi = WebAdminUtils.spec(jmapServer.getProbe(WebAdminGuiceProbe.class).getWebAdminPort());
+
+        jmapPort = new Port(jmapServer.getProbe(JmapGuiceProbe.class)
+            .getJmapPort());
+    }
+
+    private GuiceJamesServer createJmapServer() throws IOException {
+        return rule.jmapServer(cassandra.getModule(),
+            binder -> binder.bind(WebAdminConfiguration.class)
+                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
     }
 
     @After
@@ -94,12 +108,11 @@ public abstract class ForwardIntegrationTest {
         jmapServer.stop();
     }
 
-    @Category(BasicFeature.class)
     @Test
     public void messageShouldBeForwardedWhenDefinedInRESTAPI() {
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), BOB.asString()));
 
-        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapServer), CEDRIC, CEDRIC_PASSWORD);
+        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapPort), CEDRIC, CEDRIC_PASSWORD);
         String messageCreationId = "creationId1337";
         String requestBody = "[" +
             "  [" +
@@ -122,16 +135,16 @@ public abstract class ForwardIntegrationTest {
             "]";
 
         with()
-            .header("Authorization", cedricAccessToken.serialize())
+            .header("Authorization", cedricAccessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
-        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapServer), BOB, BOB_PASSWORD);
+        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapPort), BOB, BOB_PASSWORD);
         calmlyAwait
             .pollDelay(Duration.FIVE_HUNDRED_MILLISECONDS)
             .atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(bobAccessToken));
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -147,8 +160,8 @@ public abstract class ForwardIntegrationTest {
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), BOB.asString()));
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), ALICE.asString()));
 
-        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapServer), CEDRIC, CEDRIC_PASSWORD);
-        AccessToken aliceAccessToken = authenticateJamesUser(baseUri(jmapServer), ALICE, ALICE_PASSWORD);
+        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapPort), CEDRIC, CEDRIC_PASSWORD);
+        AccessToken aliceAccessToken = authenticateJamesUser(baseUri(jmapPort), ALICE, ALICE_PASSWORD);
         String messageCreationId = "creationId1337";
         String requestBody = "[" +
             "  [" +
@@ -171,16 +184,16 @@ public abstract class ForwardIntegrationTest {
             "]";
 
         with()
-            .header("Authorization", cedricAccessToken.serialize())
+            .header("Authorization", cedricAccessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
-        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapServer), BOB, BOB_PASSWORD);
+        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapPort), BOB, BOB_PASSWORD);
         calmlyAwait
             .pollDelay(Duration.FIVE_HUNDRED_MILLISECONDS)
             .atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(bobAccessToken));
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -191,7 +204,7 @@ public abstract class ForwardIntegrationTest {
             .body(ARGUMENTS + ".messageIds", hasSize(1));
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -207,7 +220,7 @@ public abstract class ForwardIntegrationTest {
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), CEDRIC.asString()));
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", CEDRIC.asString(), BOB.asString()));
 
-        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapServer), CEDRIC, CEDRIC_PASSWORD);
+        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapPort), CEDRIC, CEDRIC_PASSWORD);
         String messageCreationId = "creationId1337";
         String requestBody = "[" +
             "  [" +
@@ -230,16 +243,16 @@ public abstract class ForwardIntegrationTest {
             "]";
 
         with()
-            .header("Authorization", cedricAccessToken.serialize())
+            .header("Authorization", cedricAccessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
-        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapServer), BOB, BOB_PASSWORD);
+        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapPort), BOB, BOB_PASSWORD);
         calmlyAwait
             .pollDelay(Duration.FIVE_HUNDRED_MILLISECONDS)
             .atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(bobAccessToken));
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -256,8 +269,8 @@ public abstract class ForwardIntegrationTest {
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), BOB.asString()));
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", BOB.asString(), CEDRIC.asString()));
 
-        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapServer), CEDRIC, CEDRIC_PASSWORD);
-        AccessToken aliceAccessToken = authenticateJamesUser(baseUri(jmapServer), ALICE, ALICE_PASSWORD);
+        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapPort), CEDRIC, CEDRIC_PASSWORD);
+        AccessToken aliceAccessToken = authenticateJamesUser(baseUri(jmapPort), ALICE, ALICE_PASSWORD);
         String messageCreationId = "creationId1337";
         String requestBody = "[" +
             "  [" +
@@ -280,7 +293,7 @@ public abstract class ForwardIntegrationTest {
             "]";
 
         with()
-            .header("Authorization", cedricAccessToken.serialize())
+            .header("Authorization", cedricAccessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
@@ -288,7 +301,7 @@ public abstract class ForwardIntegrationTest {
             .pollDelay(Duration.FIVE_HUNDRED_MILLISECONDS)
             .atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(aliceAccessToken));
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -303,8 +316,8 @@ public abstract class ForwardIntegrationTest {
     public void baseRecipientShouldNotReceiveEmailOnDefaultForward() {
         webAdminApi.put(String.format("/address/forwards/%s/targets/%s", ALICE.asString(), BOB.asString()));
 
-        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapServer), CEDRIC, CEDRIC_PASSWORD);
-        AccessToken aliceAccessToken = authenticateJamesUser(baseUri(jmapServer), ALICE, ALICE_PASSWORD);
+        AccessToken cedricAccessToken = authenticateJamesUser(baseUri(jmapPort), CEDRIC, CEDRIC_PASSWORD);
+        AccessToken aliceAccessToken = authenticateJamesUser(baseUri(jmapPort), ALICE, ALICE_PASSWORD);
         String messageCreationId = "creationId1337";
         String requestBody = "[" +
             "  [" +
@@ -327,17 +340,17 @@ public abstract class ForwardIntegrationTest {
             "]";
 
         with()
-            .header("Authorization", cedricAccessToken.serialize())
+            .header("Authorization", cedricAccessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
-        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapServer), BOB, BOB_PASSWORD);
+        AccessToken bobAccessToken = authenticateJamesUser(baseUri(jmapPort), BOB, BOB_PASSWORD);
         calmlyAwait
             .pollDelay(Duration.FIVE_HUNDRED_MILLISECONDS)
             .atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(bobAccessToken));
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 03/14: JAMES-3012 Move linshare integration tests to webadmin-integration-tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6551174ca2b1a4ee2f598d86f9ea14fc3a763d70
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Dec 13 11:13:00 2019 +0700

    JAMES-3012 Move linshare integration tests to webadmin-integration-tests
---
 .../james/modules/LinshareGuiceExtension.java      |  4 ++
 .../pom.xml                                        |  6 --
 ...LinshareBlobExportMechanismIntegrationTest.java | 54 --------------
 .../jmap-draft-integration-testing-common/pom.xml  | 10 ---
 .../james/jmap/DeletedMessagesVaultRequests.java   | 83 ----------------------
 .../java/org/apache/james/jmap/ExportRequest.java  | 62 ----------------
 .../memory-jmap-draft-integration-testing/pom.xml  |  6 --
 ...LinshareBlobExportMechanismIntegrationTest.java | 51 -------------
 server/protocols/webadmin-integration-test/pom.xml | 17 +++++
 .../vault/DeletedMessageVaultIntegrationTest.java  |  5 +-
 ...LinshareBlobExportMechanismIntegrationTest.java | 83 ++++++++++++++++------
 11 files changed, 84 insertions(+), 297 deletions(-)

diff --git a/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/LinshareGuiceExtension.java b/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/LinshareGuiceExtension.java
index 9ed556c..856e0fb 100644
--- a/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/LinshareGuiceExtension.java
+++ b/server/container/guice/blob-export-guice/src/test/java/org/apache/james/modules/LinshareGuiceExtension.java
@@ -61,4 +61,8 @@ public class LinshareGuiceExtension implements GuiceModuleTestExtension {
             }
         );
     }
+
+    public LinshareExtension getLinshareJunitExtension() {
+        return linshareExtension;
+    }
 }
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
index be5be85..9330511 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
@@ -35,12 +35,6 @@
     <dependencies>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-linshare</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>apache-james-backends-es</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraLinshareBlobExportMechanismIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraLinshareBlobExportMechanismIntegrationTest.java
deleted file mode 100644
index 3d83160..0000000
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraLinshareBlobExportMechanismIntegrationTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.cassandra;
-
-import static org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
-
-import org.apache.james.CassandraExtension;
-import org.apache.james.DockerElasticSearchExtension;
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.JamesServerBuilder;
-import org.apache.james.JamesServerExtension;
-import org.apache.james.jmap.draft.methods.integration.LinshareBlobExportMechanismIntegrationTest;
-import org.apache.james.modules.LinshareGuiceExtension;
-import org.apache.james.modules.TestJMAPServerModule;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-class CassandraLinshareBlobExportMechanismIntegrationTest extends LinshareBlobExportMechanismIntegrationTest {
-
-    private static final long LIMIT_TO_10_MESSAGES = 10;
-
-    private static final LinshareGuiceExtension linshareGuiceExtension = new LinshareGuiceExtension();
-
-    @RegisterExtension
-    JamesServerExtension testExtension = new JamesServerBuilder()
-        .extension(linshareGuiceExtension)
-        .extension(new DockerElasticSearchExtension())
-        .extension(new CassandraExtension())
-        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
-            .combineWith(ALL_BUT_JMX_CASSANDRA_MODULE)
-            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule())
-            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class)
-                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION)))
-        .build();
-}
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml
index e96d995..9b4d141 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/pom.xml
@@ -35,16 +35,6 @@
     <dependencies>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-linshare</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-linshare</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>apache-james-mailbox-api</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/DeletedMessagesVaultRequests.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/DeletedMessagesVaultRequests.java
deleted file mode 100644
index 21ace61..0000000
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/DeletedMessagesVaultRequests.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap;
-
-import static org.hamcrest.Matchers.is;
-
-import io.restassured.specification.RequestSpecification;
-
-public class DeletedMessagesVaultRequests {
-
-    public static void exportVaultContent(RequestSpecification webAdminApi, ExportRequest exportRequest) {
-        String taskId =
-            webAdminApi.with()
-                .queryParam("action", "export")
-                .queryParam("exportTo", exportRequest.getSharee())
-                .body(exportRequest.getMatchingQuery())
-                .post("/deletedMessages/users/" + exportRequest.getUserExportFrom())
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
-
-    public static void restoreMessagesForUserWithQuery(RequestSpecification webAdminApi, String user, String criteria) {
-        String taskId = webAdminApi.with()
-            .body(criteria)
-            .post("/deletedMessages/users/" + user + "?action=restore")
-        .jsonPath()
-            .get("taskId");
-
-        webAdminApi.given()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
-
-    public static void purgeVault(RequestSpecification webAdminApi) {
-        String taskId =
-            webAdminApi.with()
-                .queryParam("scope", "expired")
-                .delete("/deletedMessages")
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
-
-    public static void deleteFromVault(RequestSpecification webAdminApi, String user, String messageId) {
-        String taskId =
-            webAdminApi.with()
-                .delete("/deletedMessages/users/" + user + "/messages/" + messageId)
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
-}
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ExportRequest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ExportRequest.java
deleted file mode 100644
index 328701e..0000000
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ExportRequest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap;
-
-public class ExportRequest {
-
-    public static class Builder {
-
-        @FunctionalInterface
-        public interface RequireSharee {
-            RequireMatchingQuery exportTo(String sharee);
-        }
-
-        @FunctionalInterface
-        public interface RequireMatchingQuery {
-            ExportRequest query(String query);
-        }
-    }
-
-    public static Builder.RequireSharee userExportFrom(String userExportFrom) {
-        return sharee -> query -> new ExportRequest(userExportFrom, sharee, query);
-    }
-
-    private final String userExportFrom;
-    private final String sharee;
-    private final String matchingQuery;
-
-    private ExportRequest(String userExportFrom, String sharee, String matchingQuery) {
-        this.userExportFrom = userExportFrom;
-        this.sharee = sharee;
-        this.matchingQuery = matchingQuery;
-    }
-
-    public String getUserExportFrom() {
-        return userExportFrom;
-    }
-
-    public String getSharee() {
-        return sharee;
-    }
-
-    public String getMatchingQuery() {
-        return matchingQuery;
-    }
-}
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
index 67e79f1..37fe1f4 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/pom.xml
@@ -35,12 +35,6 @@
     <dependencies>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-linshare</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>apache-james-mailbox-api</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryLinshareBlobExportMechanismIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryLinshareBlobExportMechanismIntegrationTest.java
deleted file mode 100644
index 20172e2..0000000
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryLinshareBlobExportMechanismIntegrationTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap.memory;
-
-import org.apache.james.GuiceJamesServer;
-import org.apache.james.JamesServerBuilder;
-import org.apache.james.JamesServerExtension;
-import org.apache.james.MemoryJamesServerMain;
-import org.apache.james.jmap.draft.methods.integration.LinshareBlobExportMechanismIntegrationTest;
-import org.apache.james.modules.LinshareGuiceExtension;
-import org.apache.james.modules.TestJMAPServerModule;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
-import org.apache.james.webadmin.WebAdminConfiguration;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-class MemoryLinshareBlobExportMechanismIntegrationTest extends LinshareBlobExportMechanismIntegrationTest {
-
-    private static final int LIMIT_TO_10_MESSAGES = 10;
-
-    private static final LinshareGuiceExtension linshareGuiceExtension = new LinshareGuiceExtension();
-
-    @RegisterExtension
-    JamesServerExtension jamesServerExtension = new JamesServerBuilder()
-        .extension(linshareGuiceExtension)
-        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
-            .combineWith(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
-            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule())
-            .overrideWith(binder -> {
-                binder.bind(WebAdminConfiguration.class)
-                    .toInstance(WebAdminConfiguration.TEST_CONFIGURATION);
-            }))
-        .build();
-}
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index 9ef15ce..87fd9e0 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -70,12 +70,24 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>apache-james-linshare</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>backup</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>blob-export-guice</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>blob-objectstorage</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -172,5 +184,10 @@
             <artifactId>testcontainers</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.james</groupId>
+            <artifactId>james-server-jmap-draft-integration-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index 07755af..1cfb5e2 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -67,6 +67,7 @@ import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModul
 import org.apache.james.probe.DataProbe;
 import org.apache.james.server.core.JamesServerResourceLoader;
 import org.apache.james.server.core.filesystem.FileSystemImpl;
+import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.UpdatableTickingClock;
@@ -154,8 +155,8 @@ public class DeletedMessageVaultIntegrationTest {
         dataProbe.addUser(JACK, PASSWORD);
         mailboxProbe.createMailbox("#private", HOMER, DefaultMailboxes.INBOX);
         otherMailboxId = mailboxProbe.createMailbox("#private", HOMER, MAILBOX_NAME);
-        int jmapPort = jmapServer.getProbe(JmapGuiceProbe.class)
-            .getJmapPort();
+        Port jmapPort = Port.of(jmapServer.getProbe(JmapGuiceProbe.class)
+            .getJmapPort());
         homerAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(HOMER), PASSWORD);
         bartAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(BART), BOB_PASSWORD);
         jackAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(JACK), PASSWORD);
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/LinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
similarity index 76%
rename from server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
rename to server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
index 2eec969..cd38122 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
@@ -17,24 +17,24 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.draft.methods.integration;
+package org.apache.james.webadmin.integration.vault;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
-import static org.apache.james.jmap.DeletedMessagesVaultRequests.exportVaultContent;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.LOCALHOST_IP;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.deleteMessages;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.linshare.LinshareFixture.MATCH_ALL_QUERY;
 import static org.apache.james.linshare.LinshareFixture.USER_1;
 import static org.apache.james.mailbox.backup.ZipAssert.assertThatZip;
+import static org.apache.james.webadmin.integration.vault.DeletedMessagesVaultRequests.exportVaultContent;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.hasItem;
@@ -43,23 +43,37 @@ import static org.hamcrest.Matchers.hasSize;
 import java.io.ByteArrayInputStream;
 import java.util.List;
 
+import org.apache.james.CassandraExtension;
+import org.apache.james.CassandraRabbitMQJamesServerMain;
+import org.apache.james.DockerElasticSearchExtension;
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.JamesServerBuilder;
+import org.apache.james.JamesServerExtension;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.ExportRequest;
-import org.apache.james.jmap.api.access.AccessToken;
-import org.apache.james.linshare.LinshareExtension;
+import org.apache.james.jmap.AccessToken;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.linshare.client.Document;
 import org.apache.james.linshare.client.LinshareAPI;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.backup.ZipAssert;
+import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.probe.MailboxProbe;
+import org.apache.james.mailbox.store.search.PDFTextExtractor;
+import org.apache.james.modules.AwsS3BlobStoreExtension;
+import org.apache.james.modules.LinshareGuiceExtension;
 import org.apache.james.modules.MailboxProbeImpl;
+import org.apache.james.modules.RabbitMQExtension;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.modules.TestRabbitMQModule;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
+import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.utils.WebAdminGuiceProbe;
+import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
@@ -71,7 +85,8 @@ import io.restassured.RestAssured;
 import io.restassured.parsing.Parser;
 import io.restassured.specification.RequestSpecification;
 
-public abstract class LinshareBlobExportMechanismIntegrationTest {
+class LinshareBlobExportMechanismIntegrationTest {
+
     private static final String HOMER = "homer@" + DOMAIN;
     private static final String BART = "bart@" + DOMAIN;
     private static final String HOMER_PASSWORD = "homerPassword";
@@ -83,7 +98,27 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         .exportTo(USER_1.getUsername())
         .query(MATCH_ALL_QUERY);
 
-    private static LinshareExtension linshareExtension = new LinshareExtension();
+    private static final int LIMIT_TO_20_MESSAGES = 20;
+
+    private static final LinshareGuiceExtension linshareGuiceExtension = new LinshareGuiceExtension();
+    @RegisterExtension
+    static JamesServerExtension testExtension = new JamesServerBuilder()
+        .extension(new DockerElasticSearchExtension())
+        .extension(new CassandraExtension())
+        .extension(new RabbitMQExtension())
+        .extension(new AwsS3BlobStoreExtension())
+        .extension(linshareGuiceExtension)
+        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
+            .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
+            .overrideWith(binder -> binder.bind(TextExtractor.class).to(PDFTextExtractor.class))
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_20_MESSAGES))
+            .overrideWith(new TestRabbitMQModule(DockerRabbitMQSingleton.SINGLETON))
+            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION))
+            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule()))
+        .build();
+
+    @RegisterExtension
+    IMAPMessageReader imapMessageReader = new IMAPMessageReader();
 
     private AccessToken homerAccessToken;
     private AccessToken bartAccessToken;
@@ -92,9 +127,6 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
     private RequestSpecification fakeSmtpRequestSpecification;
     private LinshareAPI user1LinshareAPI;
 
-    @RegisterExtension
-    IMAPMessageReader imapMessageReader = new IMAPMessageReader();
-
     @BeforeEach
     void setup(GuiceJamesServer jmapServer) throws Throwable {
         this.jmapServer = jmapServer;
@@ -115,11 +147,14 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         MailboxProbe mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, HOMER, DefaultMailboxes.INBOX);
 
-        homerAccessToken = authenticateJamesUser(baseUri(jmapServer), Username.of(HOMER), HOMER_PASSWORD);
-        bartAccessToken = authenticateJamesUser(baseUri(jmapServer), Username.of(BART), BART_PASSWORD);
-        user1LinshareAPI = linshareExtension.getAPIFor(USER_1);
+        Port jmapPort = Port.of(jmapServer.getProbe(JmapGuiceProbe.class)
+            .getJmapPort());
+        homerAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(HOMER), HOMER_PASSWORD);
+        bartAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(BART), BART_PASSWORD);
+        user1LinshareAPI = linshareGuiceExtension.getLinshareJunitExtension().getAPIFor(USER_1);
 
-        fakeSmtpRequestSpecification = given(linshareExtension.getLinshare().fakeSmtpRequestSpecification());
+        fakeSmtpRequestSpecification = given(linshareGuiceExtension.getLinshareJunitExtension()
+            .getLinshare().fakeSmtpRequestSpecification());
     }
 
     @Test
@@ -226,7 +261,8 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         exportVaultContent(webAdminApi, EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
 
         Document sharedDoc = user1LinshareAPI.receivedShares().get(0).getDocument();
-        byte[] sharedFile =  linshareExtension.downloadSharedFile(USER_1, sharedDoc.getId(), sharedDoc.getName());
+        byte[] sharedFile =  linshareGuiceExtension.getLinshareJunitExtension()
+            .downloadSharedFile(USER_1, sharedDoc.getId(), sharedDoc.getName());
 
         try (ZipAssert zipAssert = assertThatZip(new ByteArrayInputStream(sharedFile))) {
             zipAssert.hasEntriesSize(1);
@@ -250,7 +286,8 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         exportVaultContent(webAdminApi, EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
 
         Document sharedDoc = user1LinshareAPI.receivedShares().get(0).getDocument();
-        byte[] sharedFile =  linshareExtension.downloadSharedFile(USER_1, sharedDoc.getId(), sharedDoc.getName());
+        byte[] sharedFile =  linshareGuiceExtension.getLinshareJunitExtension()
+            .downloadSharedFile(USER_1, sharedDoc.getId(), sharedDoc.getName());
 
         try (ZipAssert zipAssert = assertThatZip(new ByteArrayInputStream(sharedFile))) {
             zipAssert.hasEntriesSize(1);
@@ -279,7 +316,7 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
             "]";
 
         with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 06/14: JAMES-3012 Cleanup common components

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 92dc69aab9abf0392a242511f8b05425c5752a7e
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Dec 13 15:38:21 2019 +0700

    JAMES-3012 Cleanup common components
---
 .../test/java/org/apache/james/ESReporterTest.java |   6 +-
 .../org/apache/james/FixingGhostMailboxTest.java   |  12 +-
 .../jmap/cassandra/CassandraBulkOperationTest.java |  16 +-
 .../CassandraGetMessageListMethodTest.java         |   4 +-
 .../jmap/cassandra/CassandraImapErrorTest.java     |   9 +-
 .../apache/james/jmap/HttpJmapAuthentication.java  |  74 ----
 .../apache/james/jmap/JMAPAuthenticationTest.java  |   4 +-
 .../org/apache/james/jmap/JmapCommonRequests.java  | 207 ----------
 .../java/org/apache/james/jmap/JmapURIBuilder.java |  11 +-
 .../org/apache/james/jmap/ProvisioningTest.java    |  18 +-
 .../org/apache/james/jmap/TestingConstants.java    |  69 ----
 .../apache/james/jmap/VacationIntegrationTest.java |  53 +--
 .../james/jmap/VacationRelayIntegrationTest.java   |   8 +-
 .../jmap/draft/methods/integration/FilterTest.java | 178 ++++-----
 .../integration/GetMailboxesMethodTest.java        |  96 ++---
 .../integration/GetMessageListMethodTest.java      | 212 +++++-----
 .../integration/GetVacationResponseTest.java       |  26 +-
 .../methods/integration/QuotaMailingTest.java      |  16 +-
 .../methods/integration/SendMDNMethodTest.java     |  40 +-
 .../integration/SetMailboxesMethodTest.java        | 180 ++++-----
 .../SetMessagesMethodReRoutingTest.java            |  16 +-
 .../methods/integration/SetMessagesMethodTest.java | 440 +++++++++++----------
 .../SetMessagesOutboxFlagUpdateTest.java           |  18 +-
 .../integration/SetVacationResponseTest.java       |  32 +-
 .../methods/integration/SpamAssassinContract.java  |  84 ++--
 .../integration/cucumber/DownloadStepdefs.java     |  12 +-
 .../cucumber/GetMailboxesMethodStepdefs.java       |   4 +-
 .../cucumber/GetMessageListMethodStepdefs.java     |   4 +-
 .../cucumber/GetMessagesMethodStepdefs.java        |   8 +-
 .../methods/integration/cucumber/HttpClient.java   |   2 +-
 .../cucumber/SetMailboxesMethodStepdefs.java       |   6 +-
 .../integration/cucumber/UploadStepdefs.java       |  12 +-
 .../methods/integration/cucumber/UserStepdefs.java |   2 +-
 .../integration/ForwardIntegrationTest.java        |   2 +-
 .../ReindexingWithEventDeadLettersTest.java        |   4 +-
 .../vault/DeletedMessageVaultIntegrationTest.java  |   2 +-
 ...LinshareBlobExportMechanismIntegrationTest.java |   2 +-
 ...mapURIBuilder.java => LocalHostURIBuilder.java} |   2 +-
 38 files changed, 760 insertions(+), 1131 deletions(-)

diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
index a1c1189..f854203 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
@@ -35,14 +35,14 @@ import java.util.stream.Collectors;
 
 import org.apache.commons.net.imap.IMAPClient;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.store.search.PDFTextExtractor;
 import org.apache.james.modules.TestDockerESMetricReporterModule;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.awaitility.Duration;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.client.RestHighLevelClient;
@@ -138,7 +138,7 @@ class ESReporterTest {
             public void run() {
                 try {
                     given()
-                        .header("Authorization", accessToken.serialize())
+                        .header("Authorization", accessToken.asString())
                         .body("[[\"getMailboxes\", {}, \"#0\"]]")
                     .with()
                         .post("/jmap");
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
index 5531ae7..a51febe 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
@@ -42,7 +42,7 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTask;
@@ -168,7 +168,7 @@ public class FixingGhostMailboxTest {
 
         // trigger provisioning
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -199,7 +199,7 @@ public class FixingGhostMailboxTest {
         MailboxId newAliceInbox = mailboxProbe.getMailboxId(MailboxConstants.USER_NAMESPACE, ALICE, MailboxConstants.INBOX);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + newAliceInbox.serialize() + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -218,7 +218,7 @@ public class FixingGhostMailboxTest {
         fixGhostMailboxes(newAliceInbox);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + newAliceInbox.serialize() + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -239,7 +239,7 @@ public class FixingGhostMailboxTest {
         fixGhostMailboxes(newAliceInbox);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + newAliceInbox.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -258,7 +258,7 @@ public class FixingGhostMailboxTest {
         fixGhostMailboxes(newAliceInbox);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + aliceGhostInboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java
index 55752e2..ac02f49 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java
@@ -20,11 +20,11 @@
 package org.apache.james.jmap.cassandra;
 
 import static io.restassured.RestAssured.given;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 
@@ -40,8 +40,9 @@ import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
 import org.apache.james.core.Username;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.HttpJmapAuthentication;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -49,7 +50,6 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -93,7 +93,7 @@ public class CassandraBulkOperationTest {
 
         AccessToken accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(jmapServer), Username.of(USERNAME), PASSWORD);
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"destroy\": [" + mailIds + "]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -111,7 +111,7 @@ public class CassandraBulkOperationTest {
 
         AccessToken accessToken = HttpJmapAuthentication.authenticateJamesUser(baseUri(jmapServer), Username.of(USERNAME), PASSWORD);
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"destroy\": [" + mailIds + "]}, \"#0\"]]")
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
index fa9b3d7..9a4b681 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
@@ -20,7 +20,7 @@
 package org.apache.james.jmap.cassandra;
 
 import static io.restassured.RestAssured.given;
-import static org.apache.james.jmap.TestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
 
 import java.io.IOException;
 import java.util.Date;
@@ -70,7 +70,7 @@ public class CassandraGetMessageListMethodTest extends GetMessageListMethodTest
 
         try {
             given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"AND\",\"conditions\":[{\"isFlagged\":\"true\"},{\"isUnread\":\"true\"}]}}, \"#0\"]]")
             .when()
                 .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
index f152a12..b3e69d7 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
@@ -20,9 +20,9 @@
 package org.apache.james.jmap.cassandra;
 
 import static org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.LOCALHOST_IP;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.commons.net.imap.IMAPClient;
@@ -31,17 +31,16 @@ import org.apache.james.DockerElasticSearchExtension;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.store.search.PDFTextExtractor;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.utils.DataProbeImpl;
-
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
+
 import io.restassured.RestAssured;
 
 class CassandraImapErrorTest {
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/HttpJmapAuthentication.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/HttpJmapAuthentication.java
deleted file mode 100644
index 7763209..0000000
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/HttpJmapAuthentication.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap;
-
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.fluent.Request;
-import org.apache.http.client.fluent.Response;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.ContentType;
-import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
-import org.hamcrest.core.IsAnything;
-
-import com.jayway.jsonpath.JsonPath;
-
-public class HttpJmapAuthentication {
-
-    public static AccessToken authenticateJamesUser(URIBuilder uriBuilder, Username username, String password) {
-        return calmlyAwait.until(
-            () -> doAuthenticate(uriBuilder, username, password), IsAnything.anything());
-    }
-
-    public static AccessToken doAuthenticate(URIBuilder uriBuilder, Username username, String password) throws ClientProtocolException, IOException, URISyntaxException {
-        String continuationToken = getContinuationToken(uriBuilder, username);
-
-        Response response = postAuthenticate(uriBuilder, password, continuationToken);
-
-        return AccessToken.fromString(
-            JsonPath.parse(response.returnContent().asString())
-                .read("accessToken"));
-    }
-
-    private static Response postAuthenticate(URIBuilder uriBuilder, String password, String continuationToken) throws ClientProtocolException, IOException, URISyntaxException {
-        return Request.Post(uriBuilder.setPath("/authentication").build())
-                .bodyString("{\"token\": \"" + continuationToken + "\", \"method\": \"password\", \"password\": \"" + password + "\"}", 
-                        ContentType.APPLICATION_JSON)
-                .setHeader("Accept", ContentType.APPLICATION_JSON.getMimeType())
-                .execute();
-    }
-
-    private static String getContinuationToken(URIBuilder uriBuilder, Username username) throws ClientProtocolException, IOException, URISyntaxException {
-        Response response = Request.Post(uriBuilder.setPath("/authentication").build())
-            .bodyString("{\"username\": \"" + username.asString() + "\", \"clientName\": \"Mozilla Thunderbird\", \"clientVersion\": \"42.0\", \"deviceName\": \"Joe Blogg’s iPhone\"}",
-                ContentType.APPLICATION_JSON)
-            .setHeader("Accept", ContentType.APPLICATION_JSON.getMimeType())
-            .execute();
-
-        return JsonPath.parse(response.returnContent().asString())
-            .read("continuationToken");
-    }
-
-}
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
index acb2973..e7931ee 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
@@ -20,7 +20,7 @@ package org.apache.james.jmap;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.hamcrest.Matchers.both;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasItem;
@@ -34,9 +34,9 @@ import java.util.UUID;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.categories.BasicFeature;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.model.ContinuationToken;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapCommonRequests.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapCommonRequests.java
deleted file mode 100644
index 9f3b01b..0000000
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapCommonRequests.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap;
-
-import static io.restassured.RestAssured.with;
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasKey;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.core.Is.is;
-import static org.hamcrest.text.IsEmptyString.emptyOrNullString;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.apache.james.jmap.api.access.AccessToken;
-import org.apache.james.mailbox.Role;
-import org.apache.james.mailbox.model.MailboxId;
-
-import io.restassured.builder.ResponseSpecBuilder;
-import io.restassured.path.json.JsonPath;
-import io.restassured.specification.ResponseSpecification;
-
-public class JmapCommonRequests {
-    private static final String NAME = "[0][0]";
-    private static final String ARGUMENTS = "[0][1]";
-    private static final String NOT_UPDATED = ARGUMENTS + ".notUpdated";
-
-    public static String getOutboxId(AccessToken accessToken) {
-        return getMailboxId(accessToken, Role.OUTBOX);
-    }
-
-    public static String getDraftId(AccessToken accessToken) {
-        return getMailboxId(accessToken, Role.DRAFTS);
-    }
-
-    public static String getMailboxId(AccessToken accessToken, Role role) {
-        return getAllMailboxesIds(accessToken).stream()
-            .filter(mailbox -> mailbox.get("role").equals(role.serialize()))
-            .map(mailbox -> mailbox.get("id"))
-            .findFirst().get();
-    }
-
-    public static List<Map<String, String>> getAllMailboxesIds(AccessToken accessToken) {
-        return with()
-            .header("Authorization", accessToken.serialize())
-            .body("[[\"getMailboxes\", {\"properties\": [\"role\", \"name\", \"id\"]}, \"#0\"]]")
-            .post("/jmap")
-        .andReturn()
-            .body()
-            .jsonPath()
-            .getList(ARGUMENTS + ".list");
-    }
-
-    public static boolean isAnyMessageFoundInRecipientsMailboxes(AccessToken recipientToken) {
-        try {
-            with()
-                .header("Authorization", recipientToken.serialize())
-                .body("[[\"getMessageList\", {}, \"#0\"]]")
-            .when()
-                .post("/jmap")
-            .then()
-                .statusCode(200)
-                .body(NAME, equalTo("messageList"))
-                .body(ARGUMENTS + ".messageIds", hasSize(1));
-            return true;
-
-        } catch (AssertionError e) {
-            return false;
-        }
-    }
-
-    public static boolean isAnyMessageFoundInRecipientsMailbox(AccessToken recipientToken, MailboxId mailboxId) {
-        try {
-            with()
-                .header("Authorization", recipientToken.serialize())
-                .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"]}}, \"#0\"]]")
-            .when()
-                .post("/jmap")
-            .then()
-                .statusCode(200)
-                .body(NAME, equalTo("messageList"))
-                .body(ARGUMENTS + ".messageIds", hasSize(1));
-            return true;
-
-        } catch (AssertionError e) {
-            return false;
-        }
-    }
-
-    public static String getInboxId(AccessToken accessToken) {
-        return getMailboxId(accessToken, Role.INBOX);
-    }
-
-    public static List<String> listMessageIdsForAccount(AccessToken accessToken) {
-        return with()
-                .header("Authorization", accessToken.serialize())
-                .body("[[\"getMessageList\", {}, \"#0\"]]")
-                .post("/jmap")
-            .then()
-                .extract()
-                .body()
-                .path(ARGUMENTS + ".messageIds");
-    }
-
-    public static String getLastMessageId(AccessToken accessToken) {
-        return with()
-                .header("Authorization", accessToken.serialize())
-                .body("[[\"getMessageList\", {\"sort\":[\"date desc\"]}, \"#0\"]]")
-                .post("/jmap")
-            .then()
-                .extract()
-                .body()
-                .path(ARGUMENTS + ".messageIds[0]");
-    }
-
-    public static String getLatestMessageId(AccessToken accessToken, Role mailbox) {
-        String inboxId = getMailboxId(accessToken, mailbox);
-        return with()
-                .header("Authorization", accessToken.serialize())
-                .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}, \"sort\":[\"date desc\"]}, \"#0\"]]")
-                .post("/jmap")
-            .then()
-                .extract()
-                .path(ARGUMENTS + ".messageIds[0]");
-    }
-
-    public static String bodyOfMessage(AccessToken accessToken, String messageId) {
-        return getMessageContent(accessToken, messageId)
-                .get(ARGUMENTS + ".list[0].textBody");
-    }
-
-    public static List<String> receiversOfMessage(AccessToken accessToken, String messageId) {
-        return getMessageContent(accessToken, messageId)
-                .getList(ARGUMENTS + ".list[0].to.email");
-    }
-
-    private static JsonPath getMessageContent(AccessToken accessToken, String messageId) {
-        return with()
-                .header("Authorization", accessToken.serialize())
-                .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
-            .when()
-                .post("/jmap")
-            .then()
-                .statusCode(200)
-                .body(NAME, equalTo("messages"))
-                .body(ARGUMENTS + ".list", hasSize(1))
-            .extract()
-                .jsonPath();
-    }
-
-    public static List<String> listMessageIdsInMailbox(AccessToken accessToken, String mailboxId) {
-        return with()
-                .header("Authorization", accessToken.serialize())
-                .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId + "\"]}}, \"#0\"]]")
-                .post("/jmap")
-            .then()
-                .extract()
-                .body()
-                .path(ARGUMENTS + ".messageIds");
-    }
-
-    public static ResponseSpecification getSetMessagesUpdateOKResponseAssertions(String messageId) {
-        ResponseSpecBuilder builder = new ResponseSpecBuilder()
-            .expectStatusCode(200)
-            .expectBody(NAME, equalTo("messagesSet"))
-            .expectBody(ARGUMENTS + ".updated", hasSize(1))
-            .expectBody(ARGUMENTS + ".updated", contains(messageId))
-            .expectBody(ARGUMENTS + ".error", is(emptyOrNullString()))
-            .expectBody(NOT_UPDATED, not(hasKey(messageId)));
-        return builder.build();
-    }
-
-    public static void deleteMessages(AccessToken accessToken, List<String> idsToDestroy) {
-        String idString = concatMessageIds(idsToDestroy);
-
-        with()
-            .header("Authorization", accessToken.serialize())
-            .body("[[\"setMessages\", {\"destroy\": [" + idString + "]}, \"#0\"]]")
-            .post("/jmap");
-    }
-
-    public static String concatMessageIds(List<String> ids) {
-        return ids.stream()
-            .map(id -> "\"" + id + "\"")
-            .collect(Collectors.joining(","));
-    }
-}
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java
index e0241b9..64de331 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java
@@ -18,20 +18,15 @@
  ****************************************************************/
 package org.apache.james.jmap;
 
-import java.nio.charset.StandardCharsets;
-
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.util.Port;
 
 public class JmapURIBuilder {
 
     public static URIBuilder baseUri(GuiceJamesServer jamesServer) {
-        return new URIBuilder()
-            .setScheme("http")
-            .setHost("localhost")
-            .setPort(jamesServer.getProbe(JmapGuiceProbe.class)
-                .getJmapPort())
-            .setCharset(StandardCharsets.UTF_8);
+        return LocalHostURIBuilder.baseUri(
+            Port.of(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort()));
     }
 }
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
index 59c71bb..26bdf50 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
@@ -22,8 +22,8 @@ package org.apache.james.jmap;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasItems;
@@ -35,11 +35,11 @@ import java.time.Duration;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.categories.BasicFeature;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -53,10 +53,11 @@ public abstract class ProvisioningTest {
     private static final String DOMAIN = "mydomain.tld";
     private static final Username USER = Username.of("myuser@" + DOMAIN);
     private static final String PASSWORD = "secret";
-    
+
     protected abstract GuiceJamesServer createJmapServer() throws IOException;
 
     private GuiceJamesServer jmapServer;
+    private AccessToken userToken;
 
     @Before
     public void setup() throws Throwable {
@@ -70,6 +71,7 @@ public abstract class ProvisioningTest {
             .fluent()
             .addDomain(DOMAIN)
             .addUser(USER.asString(), PASSWORD);
+        userToken = authenticateJamesUser(baseUri(jmapServer), USER, PASSWORD);
     }
 
     @After
@@ -79,18 +81,16 @@ public abstract class ProvisioningTest {
 
     @Test
     public void provisionMailboxesShouldNotDuplicateMailboxByName() throws Exception {
-        String token = authenticateJamesUser(baseUri(jmapServer), USER, PASSWORD).serialize();
-
         ConcurrentTestRunner.builder()
             .operation((a, b) -> with()
-                .header("Authorization", token)
+                .header("Authorization", userToken.asString())
                 .body("[[\"getMailboxes\", {}, \"#0\"]]")
                 .post("/jmap"))
             .threadCount(10)
             .runSuccessfullyWithin(Duration.ofMinutes(1));
 
         given()
-            .header("Authorization", token)
+            .header("Authorization", userToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -104,10 +104,8 @@ public abstract class ProvisioningTest {
     @Category(BasicFeature.class)
     @Test
     public void provisionMailboxesShouldSubscribeToThem() throws Exception {
-        String token = authenticateJamesUser(baseUri(jmapServer), USER, PASSWORD).serialize();
-
         with()
-            .header("Authorization", token)
+            .header("Authorization", userToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
             .post("/jmap");
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/TestingConstants.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/TestingConstants.java
deleted file mode 100644
index 7ae5afd..0000000
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/TestingConstants.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.jmap;
-
-import static io.restassured.config.EncoderConfig.encoderConfig;
-import static io.restassured.config.RestAssuredConfig.newConfig;
-
-import java.nio.charset.StandardCharsets;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.james.core.Username;
-
-import org.awaitility.Awaitility;
-import org.awaitility.Duration;
-import org.awaitility.core.ConditionFactory;
-
-import io.restassured.builder.RequestSpecBuilder;
-import io.restassured.http.ContentType;
-
-public interface TestingConstants {
-    Duration slowPacedPollInterval = Duration.ONE_HUNDRED_MILLISECONDS;
-    Duration ONE_MILLISECOND = new Duration(1, TimeUnit.MILLISECONDS);
-
-    ConditionFactory calmlyAwait = Awaitility.with()
-        .pollInterval(slowPacedPollInterval)
-        .and().with()
-        .pollDelay(ONE_MILLISECOND)
-        .await();
-
-    RequestSpecBuilder jmapRequestSpecBuilder = new RequestSpecBuilder()
-        .setContentType(ContentType.JSON)
-        .setAccept(ContentType.JSON)
-        .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)));
-
-    String NAME = "[0][0]";
-    String ARGUMENTS = "[0][1]";
-    String FIRST_MAILBOX = ARGUMENTS + ".list[0]";
-    String SECOND_MAILBOX = ARGUMENTS + ".list[1]";
-    String SECOND_NAME = "[1][0]";
-    String SECOND_ARGUMENTS = "[1][1]";
-
-    String DOMAIN = "domain.tld";
-    Username BOB = Username.of("bob@" + DOMAIN);
-    String BOB_PASSWORD = "123456";
-    Username ALICE = Username.of("alice@" + DOMAIN);
-    String ALICE_PASSWORD = "789123";
-    Username CEDRIC = Username.of("cedric@" + DOMAIN);
-    String CEDRIC_PASSWORD = "456789";
-
-
-    String LOCALHOST_IP = "127.0.0.1";
-}
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
index 9798a79..a39a5e2 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
@@ -22,13 +22,13 @@ package org.apache.james.jmap;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.SECOND_ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.SECOND_NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.SECOND_ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.SECOND_NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
@@ -40,7 +40,6 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.VacationPatch;
 import org.apache.james.jmap.categories.BasicFeature;
@@ -69,6 +68,8 @@ public abstract class VacationIntegrationTest {
 
     private GuiceJamesServer guiceJamesServer;
     private JmapGuiceProbe jmapGuiceProbe;
+    private AccessToken user1AccessToken;
+    private AccessToken user2AccessToken;
 
     protected abstract GuiceJamesServer createJmapServer() throws IOException;
 
@@ -95,6 +96,9 @@ public abstract class VacationIntegrationTest {
         RestAssured.requestSpecification = jmapRequestSpecBuilder
             .setPort(jmapGuiceProbe.getJmapPort())
             .build();
+
+        user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
+        user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
     }
 
     @After
@@ -112,9 +116,6 @@ public abstract class VacationIntegrationTest {
             - User 2 should well receive a notification about user 1 vacation
         */
 
-        // Given
-        AccessToken user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
-        AccessToken user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
         // User 1 benw@mydomain.tld sets a Vacation on its account
         setVacationResponse(user1AccessToken);
 
@@ -134,9 +135,6 @@ public abstract class VacationIntegrationTest {
 
     @Test
     public void jmapVacationShouldGenerateAReplyEvenWhenNoText() throws Exception {
-        // Given
-        AccessToken user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
-        AccessToken user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
         jmapGuiceProbe.modifyVacation(
             AccountId.fromUsername(USER_1),
             VacationPatch.builder()
@@ -158,9 +156,6 @@ public abstract class VacationIntegrationTest {
 
     @Test
     public void jmapVacationShouldHaveSupportForHtmlMail() throws Exception {
-        // Given
-        AccessToken user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
-        AccessToken user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
         setHtmlVacationResponse(user1AccessToken);
 
         // When
@@ -182,10 +177,6 @@ public abstract class VacationIntegrationTest {
             - User 2 should not receive a notification
         */
 
-        // Given
-        AccessToken user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
-        AccessToken user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
-
         // When
         // User 2 matthieu@mydomain.tld sends User 1 a mail
         String user2OutboxId = getOutboxId(user2AccessToken);
@@ -198,7 +189,7 @@ public abstract class VacationIntegrationTest {
         // User 2 should not receive a notification
         Thread.sleep(1000L);
         with()
-            .header("Authorization", user2AccessToken.serialize())
+            .header("Authorization", user2AccessToken.asString())
             .body("[[\"getMessageList\", " +
                 "{" +
                 "  \"fetchMessages\": true, " +
@@ -223,9 +214,6 @@ public abstract class VacationIntegrationTest {
             - User 2 should well receive only one notification about user 1 vacation
         */
 
-        // Given
-        AccessToken user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
-        AccessToken user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
         // User 1 benw@mydomain.tld sets a Vacation on its account
         setVacationResponse(user1AccessToken);
 
@@ -254,9 +242,6 @@ public abstract class VacationIntegrationTest {
             - User 2 should well receive only one notification about user 1 vacation
         */
 
-        // Given
-        AccessToken user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
-        AccessToken user2AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_2, PASSWORD);
         // User 1 benw@mydomain.tld sets a Vacation on its account
         setVacationResponse(user1AccessToken);
         // User 2 matthieu@mydomain.tld sends User 1 a mail
@@ -292,7 +277,7 @@ public abstract class VacationIntegrationTest {
             "}, \"#0\"" +
             "]]";
         given()
-            .header("Authorization", user1AccessToken.serialize())
+            .header("Authorization", user1AccessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -314,7 +299,7 @@ public abstract class VacationIntegrationTest {
             "}, \"#0\"" +
             "]]";
         given()
-            .header("Authorization", user1AccessToken.serialize())
+            .header("Authorization", user1AccessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -339,7 +324,7 @@ public abstract class VacationIntegrationTest {
             "  ]" +
             "]";
         given()
-            .header("Authorization", user2AccessToken.serialize())
+            .header("Authorization", user2AccessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -348,7 +333,7 @@ public abstract class VacationIntegrationTest {
     private boolean areTwoTextMessageReceived(AccessToken recipientToken, String mailboxId) {
         try {
             with()
-                .header("Authorization", recipientToken.serialize())
+                .header("Authorization", recipientToken.asString())
                 .body("[[\"getMessageList\", " +
                     "{" +
                     "  \"fetchMessages\": true, " +
@@ -378,7 +363,7 @@ public abstract class VacationIntegrationTest {
 
     private void assertOneMessageReceived(AccessToken recipientToken, String mailboxId, String expectedTextBody, String expectedFrom, String expectedTo) {
         with()
-            .header("Authorization", recipientToken.serialize())
+            .header("Authorization", recipientToken.asString())
             .body("[[\"getMessageList\", " +
                 "{" +
                 "  \"fetchMessages\": true, " +
@@ -401,7 +386,7 @@ public abstract class VacationIntegrationTest {
     private boolean assertOneMessageWithHtmlBodyReceived(AccessToken recipientToken, String mailboxId, String expectedHtmlBody, String expectedFrom, String expectedTo) {
         try {
             with()
-                .header("Authorization", recipientToken.serialize())
+                .header("Authorization", recipientToken.asString())
                 .body("[[\"getMessageList\", " +
                     "{" +
                     "  \"fetchMessages\": true, " +
@@ -443,7 +428,7 @@ public abstract class VacationIntegrationTest {
 
     private List<Map<String, String>> getAllMailboxesIds(AccessToken accessToken) {
         return with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"properties\": [\"role\", \"id\"]}, \"#0\"]]")
             .post("/jmap")
         .andReturn()
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
index ae9a551..3bdb843 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
@@ -19,9 +19,9 @@
 
 package org.apache.james.jmap;
 
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.LOCALHOST_IP;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.hamcrest.Matchers.equalTo;
 
 import java.io.IOException;
@@ -33,6 +33,7 @@ import org.apache.james.dnsservice.api.InMemoryDNSService;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.VacationPatch;
 import org.apache.james.jmap.categories.BasicFeature;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.probe.MailboxProbe;
@@ -41,7 +42,6 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.FakeSmtp;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
index dfe76d6..2b377b0 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
@@ -22,18 +22,18 @@ package org.apache.james.jmap.draft.methods.integration;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.CEDRIC;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.BOB;
-import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.CEDRIC;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.awaitility.Duration.ONE_MINUTE;
 import static org.hamcrest.CoreMatchers.equalTo;
@@ -44,8 +44,8 @@ import java.io.IOException;
 import java.util.Locale;
 
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.JmapCommonRequests;
-import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.model.MailboxId;
@@ -108,7 +108,7 @@ public abstract class FilterTest {
                 "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(body)
         .when()
             .post("/jmap")
@@ -127,7 +127,7 @@ public abstract class FilterTest {
                 "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(body)
         .when()
             .post("/jmap")
@@ -146,7 +146,7 @@ public abstract class FilterTest {
                 "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(body)
         .when()
             .post("/jmap")
@@ -164,7 +164,7 @@ public abstract class FilterTest {
         MailboxId mailbox2 = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -192,7 +192,7 @@ public abstract class FilterTest {
             .statusCode(200);
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -220,7 +220,7 @@ public abstract class FilterTest {
             .statusCode(200);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"getFilter\", " +
                   "  {}, " +
@@ -245,7 +245,7 @@ public abstract class FilterTest {
         MailboxId mailbox = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -279,7 +279,7 @@ public abstract class FilterTest {
         MailboxId mailbox = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -330,7 +330,7 @@ public abstract class FilterTest {
         MailboxId mailbox2 = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -364,7 +364,7 @@ public abstract class FilterTest {
     @Test
     public void setFilterShouldRejectAccountId() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -384,7 +384,7 @@ public abstract class FilterTest {
     @Test
     public void setFilterShouldAcceptNullAccountId() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -403,7 +403,7 @@ public abstract class FilterTest {
     @Test
     public void setFilterShouldRejectIfInState() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -423,7 +423,7 @@ public abstract class FilterTest {
     @Test
     public void setFilterShouldAcceptNullIfInState() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -446,7 +446,7 @@ public abstract class FilterTest {
         MailboxId mailbox2 = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -488,7 +488,7 @@ public abstract class FilterTest {
             .statusCode(200);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"getFilter\", " +
                   "  {}, " +
@@ -520,7 +520,7 @@ public abstract class FilterTest {
         MailboxId mailbox = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -548,7 +548,7 @@ public abstract class FilterTest {
             .statusCode(200);
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -562,7 +562,7 @@ public abstract class FilterTest {
             .statusCode(200);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"getFilter\", " +
                   "  {}, " +
@@ -581,7 +581,7 @@ public abstract class FilterTest {
         MailboxId mailbox = randomMailboxId();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"setFilter\", " +
                   "  {" +
@@ -665,7 +665,7 @@ public abstract class FilterTest {
             .statusCode(200);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                   "  \"getFilter\", " +
                   "  {}, " +
@@ -698,7 +698,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenFromRuleMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -740,7 +740,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
@@ -751,7 +751,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenToRuleMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -793,7 +793,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -806,7 +806,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenCcRuleMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -849,7 +849,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -862,7 +862,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenRecipientRuleMatchesCc() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -905,7 +905,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -918,7 +918,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenRecipientRuleMatchesTo() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -961,7 +961,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -974,7 +974,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenSubjectRuleMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1016,7 +1016,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1030,7 +1030,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenFromDoesNotMatchRule() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1072,7 +1072,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1085,7 +1085,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenToDoesNotMatchRule() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1127,7 +1127,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1140,7 +1140,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenCcDoesNotMatchRule() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1183,7 +1183,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1196,7 +1196,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenRecipientDoesNotMatchRule() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1239,7 +1239,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1252,7 +1252,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenSubjectRuleDoesNotMatchRule() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1294,7 +1294,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1308,7 +1308,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenSubjectRuleDoesNotMatchRuleBecauseOfCase() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1350,7 +1350,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1363,7 +1363,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenContainsComparatorMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1405,7 +1405,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1418,7 +1418,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenContainsComparatorDoesNotMatch() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1460,7 +1460,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1473,7 +1473,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenExactlyEqualsMatchesName() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1515,7 +1515,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1528,7 +1528,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenExactlyEqualsMatchesAddress() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1570,7 +1570,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1583,7 +1583,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenExactlyEqualsMatchesFullHeader() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1625,7 +1625,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1639,7 +1639,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenExactlyEqualsMatchesCaseInsensitivelyFullHeader() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1681,7 +1681,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1694,7 +1694,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenExactlyEqualsComparatorDoesNotMatch() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1736,7 +1736,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1749,7 +1749,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenNotContainsComparatorMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1791,7 +1791,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1804,7 +1804,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenNotContainsComparatorDoesNotMatch() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1846,7 +1846,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1859,7 +1859,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenContainsNotExactlyEqualsMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1901,7 +1901,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1914,7 +1914,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenNotExactlyEqualsMatchesAddress() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -1956,7 +1956,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -1969,7 +1969,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenNotExactlyEqualsMatchesFullHeader() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -2011,7 +2011,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -2024,7 +2024,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInInboxWhenNotExactlyEqualsComparatorMatchesName() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -2066,7 +2066,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -2079,7 +2079,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenFirstRuleMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -2135,7 +2135,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
@@ -2146,7 +2146,7 @@ public abstract class FilterTest {
     @Test
     public void messageShouldBeAppendedInSpecificMailboxWhenSecondRuleMatches() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -2202,7 +2202,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
@@ -2213,7 +2213,7 @@ public abstract class FilterTest {
     @Test
     public void inboxShouldBeEmptyWhenFromRuleMatchesInSpecificMailbox() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -2255,7 +2255,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
@@ -2267,7 +2267,7 @@ public abstract class FilterTest {
     @Test
     public void matchedMailboxShouldBeEmptyWhenFromRuleDoesntMatch() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "  \"setFilter\", " +
                 "  {" +
@@ -2309,7 +2309,7 @@ public abstract class FilterTest {
             "]]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
index cc5b7e8..3fef5aa 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
@@ -21,18 +21,18 @@ package org.apache.james.jmap.draft.methods.integration;
 
 import static io.restassured.RestAssured.given;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.CEDRIC;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.FIRST_MAILBOX;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.SECOND_MAILBOX;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.BOB;
-import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.CEDRIC;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.FIRST_MAILBOX;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.SECOND_MAILBOX;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.empty;
@@ -57,7 +57,7 @@ import java.util.Optional;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.quota.QuotaCountLimit;
 import org.apache.james.core.quota.QuotaSizeLimit;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.model.mailbox.MailboxNamespace;
@@ -136,7 +136,7 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldErrorNotSupportedWhenRequestContainsNonNullAccountId() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"accountId\": \"1\"}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -154,7 +154,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.deleteMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), "quicklyRemoved");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + removedId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -167,7 +167,7 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnErrorWhenInvalidMailboxId() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"invalid id\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -184,7 +184,7 @@ public abstract class GetMailboxesMethodTest {
         String mailboxId2 = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), "myMailbox").serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\", \"" + mailboxId2 + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -202,7 +202,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), "myMailbox");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -218,7 +218,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": []}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -241,7 +241,7 @@ public abstract class GetMailboxesMethodTest {
                 .build();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": null}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -263,7 +263,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser2, new Rfc4314Rights(Right.Read, Right.Lookup));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -285,7 +285,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser1, new Rfc4314Rights(Right.Read, Right.Lookup));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -302,7 +302,7 @@ public abstract class GetMailboxesMethodTest {
         String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), mailboxName).serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -322,7 +322,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(MailboxPath.forUser(ALICE, mailboxName), targetUser1, new Rfc4314Rights(Right.Lookup, Right.Post));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -336,7 +336,7 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldErrorInvalidArgumentsWhenRequestIsInvalid() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": true}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -394,7 +394,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.appendMessage(ALICE.asString(), MailboxPath.forUser(ALICE, "name"), AppendCommand.from(message));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -411,7 +411,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.appendMessage(ALICE.asString(), MailboxPath.forUser(ALICE, "name"), AppendCommand.from(message));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -439,7 +439,7 @@ public abstract class GetMailboxesMethodTest {
         String myMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), "name").serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + myMailboxId + "\"], \"properties\" : [\"unreadMessages\", \"sortOrder\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -468,7 +468,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), "name");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"properties\" : []}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -484,7 +484,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), "name");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"properties\" : [\"unknown\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -501,7 +501,7 @@ public abstract class GetMailboxesMethodTest {
         MailboxId trashId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.TRASH);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + inboxId.serialize() + "\", \"" + trashId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -520,7 +520,7 @@ public abstract class GetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.OUTBOX);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -541,7 +541,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(bobMailboxPath, CEDRIC.asString(), new Rfc4314Rights(Right.Lookup));
 
         Map<String, String> sharedWith = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + bobMailbox.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -565,7 +565,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(bobMailboxPath, CEDRIC.asString(), new Rfc4314Rights(Right.Lookup));
 
         Map<String, String> sharedWith = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + bobMailbox.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -597,7 +597,7 @@ public abstract class GetMailboxesMethodTest {
             .build();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -629,7 +629,7 @@ public abstract class GetMailboxesMethodTest {
             .build();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -650,7 +650,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(bobMailboxPath, ALICE.asString(), new Rfc4314Rights(Right.Lookup));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + aliceInboxMailbox.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -672,7 +672,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(bobMailboxPath, ALICE.asString(), new Rfc4314Rights(Right.Lookup));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -692,7 +692,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(bobMailboxPath, ALICE.asString(), new Rfc4314Rights(Right.Lookup));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -709,7 +709,7 @@ public abstract class GetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -727,7 +727,7 @@ public abstract class GetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -752,7 +752,7 @@ public abstract class GetMailboxesMethodTest {
         aclProbe.replaceRights(bobMailboxPath, ALICE.asString(), new Rfc4314Rights(Right.Lookup, Right.Read));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -773,7 +773,7 @@ public abstract class GetMailboxesMethodTest {
         String mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX).serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -792,7 +792,7 @@ public abstract class GetMailboxesMethodTest {
         String mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX).serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -809,7 +809,7 @@ public abstract class GetMailboxesMethodTest {
         String mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX).serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -833,7 +833,7 @@ public abstract class GetMailboxesMethodTest {
         quotaProbe.setMaxMessageCount("#private&bob@domain.tld", SerializableQuotaLimitValue.valueOf(Optional.of(QuotaCountLimit.count(43))));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\",\"" + sharedMailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -848,7 +848,7 @@ public abstract class GetMailboxesMethodTest {
     @Test
     public void getMailboxesShouldReturnQuotaRootForAllMailboxes() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -863,7 +863,7 @@ public abstract class GetMailboxesMethodTest {
         String mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE.asString(), DefaultMailboxes.INBOX).serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -883,7 +883,7 @@ public abstract class GetMailboxesMethodTest {
         mailboxProbe.appendMessage(ALICE.asString(), MailboxPath.forUser(ALICE, DefaultMailboxes.INBOX), AppendCommand.from(message));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
index 2537cc3..601d2ed 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
@@ -22,19 +22,19 @@ package org.apache.james.jmap.draft.methods.integration;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.bodyOfMessage;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsInMailbox;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.BOB;
-import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.transport.mailets.remote.delivery.HeloNameProvider.LOCALHOST;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.allOf;
@@ -61,7 +61,7 @@ import javax.mail.Flags;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.categories.CassandraAndElasticSearchCategory;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
@@ -156,7 +156,7 @@ public abstract class GetMessageListMethodTest {
             new Rfc4314Rights(Right.Lookup));
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -181,7 +181,7 @@ public abstract class GetMessageListMethodTest {
             new Rfc4314Rights(Right.Read));
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -203,7 +203,7 @@ public abstract class GetMessageListMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"setMessages\", {\"update\":{\"" + messageId + "\":{\"mailboxIds\": [\"" + otherMailboxId.serialize() + "\"]}}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -212,7 +212,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"text\":\"tiramisu\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -249,7 +249,7 @@ public abstract class GetMessageListMethodTest {
             "]";
 
         String messageId = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -285,7 +285,7 @@ public abstract class GetMessageListMethodTest {
             "]";
 
         return with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(searchRequest)
             .post("/jmap")
         .then()
@@ -314,7 +314,7 @@ public abstract class GetMessageListMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body("[[\"setMessages\", {\"update\":{\"" + messageId + "\":{\"mailboxIds\": [\"" + delegatedMailboxId.serialize() + "\"]}}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -323,7 +323,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"subject\":\"chaussette\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -347,7 +347,7 @@ public abstract class GetMessageListMethodTest {
         jmapServer.getProbe(JmapGuiceProbe.class).setInMailboxes(message.getMessageId(), ALICE, mailboxId, mailboxId2);
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -369,7 +369,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isFlagged\":\"true\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -393,7 +393,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isFlagged\":\"false\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -417,7 +417,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isUnread\":\"false\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -441,7 +441,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isUnread\":\"true\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -465,7 +465,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isDraft\":\"true\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -489,7 +489,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isDraft\":\"false\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -513,7 +513,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isAnswered\":\"true\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -537,7 +537,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isAnswered\":\"false\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -561,7 +561,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isForwarded\":\"true\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -585,7 +585,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"isForwarded\":\"false\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -614,7 +614,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"AND\",\"conditions\":[{\"isFlagged\":\"true\"},{\"isUnread\":\"true\"}]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -644,7 +644,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"OR\",\"conditions\":[{\"isFlagged\":\"true\"},{\"isUnread\":\"true\"}]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -674,7 +674,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"NOT\",\"conditions\":[{\"isFlagged\":\"true\"},{\"isUnread\":\"true\"}]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -704,7 +704,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"OR\",\"conditions\":[" +
                 "{\"operator\":\"AND\", \"conditions\":[{\"isFlagged\":\"true\"},{\"isUnread\":\"true\"}]}," +
                 "{\"operator\":\"AND\", \"conditions\":[{\"isFlagged\":\"true\"},{\"isUnread\":\"false\"}]}" +
@@ -724,7 +724,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldReturnErrorInvalidArgumentsWhenRequestIsInvalid() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\": true}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -737,7 +737,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldReturnErrorInvalidArgumentsWhenHeaderIsInvalid() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"header\":[\"132\", \"456\", \"789\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -760,7 +760,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"hasAttachment\":\"true\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -783,7 +783,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"hasAttachment\":\"false\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -796,7 +796,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldNotFailWhenHeaderIsValid() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"header\":[\"132\", \"456\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -816,7 +816,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -838,7 +838,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -870,7 +870,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -889,7 +889,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -914,7 +914,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"],\"text\":\"test\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -934,7 +934,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"%s\", \"%s\"]}}, \"#0\"]]", mailboxId.serialize(), mailboxId2.serialize()))
         .when()
             .post("/jmap")
@@ -953,7 +953,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"notInMailboxes\":[\"%s\"]}}, \"#0\"]]", mailboxId.serialize()))
         .when()
             .post("/jmap")
@@ -975,7 +975,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"notInMailboxes\":[\"%s\", \"%s\"]}}, \"#0\"]]", mailboxId.serialize(), mailbox2Id.serialize()))
         .when()
             .post("/jmap")
@@ -993,7 +993,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"notInMailboxes\":[\"%s\"], \"inMailboxes\":[\"%s\"]}}, \"#0\"]]", mailboxId.serialize(), mailboxId.serialize()))
         .when()
             .post("/jmap")
@@ -1013,7 +1013,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"notInMailboxes\":[\"%s\"]}}, \"#0\"]]", mailbox2Id.serialize()))
         .when()
             .post("/jmap")
@@ -1033,7 +1033,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"notInMailboxes\":[]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1053,7 +1053,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(String.format("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"%s\"]}}, \"#0\"]]", emptyMailboxId.serialize()))
         .when()
             .post("/jmap")
@@ -1070,7 +1070,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"text\":\"bad\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1088,7 +1088,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"text\":\"html\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1107,7 +1107,7 @@ public abstract class GetMessageListMethodTest {
         // text/html contains: "This is a mail with beautifull html content which contains a banana."
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"text\":\"contain banana\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1124,7 +1124,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"subject\":\"Image\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1141,7 +1141,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"from\":\"from@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1158,7 +1158,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"from\":\"to@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1175,7 +1175,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"to\":\"to@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1192,7 +1192,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"to\":\"from@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1209,7 +1209,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"cc\":\"cc@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1226,7 +1226,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"cc\":\"bcc@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1243,7 +1243,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"bcc\":\"bcc@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1260,7 +1260,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"bcc\":\"to@james.org\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1289,7 +1289,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"attachments\":\"no apple inside\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1318,7 +1318,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"attachments\":\"beautiful banana\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1340,7 +1340,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"date\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1363,7 +1363,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"date desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1385,7 +1385,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"date asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1407,7 +1407,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"subject asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1429,7 +1429,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"subject desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1451,7 +1451,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"from asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1473,7 +1473,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"from desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1495,7 +1495,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"to asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1517,7 +1517,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"to desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1540,7 +1540,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"size asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1562,7 +1562,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"size desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1587,7 +1587,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"size asc\", \"date desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1612,7 +1612,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"date desc\", \"size asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1635,7 +1635,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"id\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1657,7 +1657,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"date desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1670,7 +1670,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldWorkWhenCollapseThreadIsFalse() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"collapseThreads\":false}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1682,7 +1682,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldWorkWhenCollapseThreadIsTrue() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"collapseThreads\":true}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1703,7 +1703,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1725,7 +1725,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"position\":1, \"sort\":[\"date desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1750,7 +1750,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"position\":1, \"limit\":1, \"sort\":[\"date desc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1772,7 +1772,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1794,7 +1794,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"limit\":1}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1820,7 +1820,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1841,7 +1841,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\":true}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1870,7 +1870,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\": true, \"fetchMessageProperties\": [\"htmlBody\", \"textBody\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1895,7 +1895,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"hasKeyword\":\"$Flagged\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1924,7 +1924,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"AND\",\"conditions\":[{\"hasKeyword\":\"$Flagged\"},{\"hasKeyword\":\"$Forwarded\"}]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1948,7 +1948,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"notKeyword\":\"$Flagged\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1977,7 +1977,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"AND\",\"conditions\":[{\"notKeyword\":\"$Flagged\"},{\"notKeyword\":\"$Forwarded\"}]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2006,7 +2006,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"operator\":\"OR\",\"conditions\":[{\"notKeyword\":\"$Flagged\"},{\"notKeyword\":\"$Forwarded\"}]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2029,7 +2029,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"hasKeyword\":\"$Flagged\", \"notKeyword\":\"$Draft\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2053,7 +2053,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"hasKeyword\":\"$Deleted\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2076,7 +2076,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"hasKeyword\":\"$Recent\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2099,7 +2099,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"notKeyword\":\"$Deleted\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2122,7 +2122,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"notKeyword\":\"$Recent\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2146,7 +2146,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"sort\":[\"date asc\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2182,7 +2182,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"attachmentFileName\":\"matchme.txt\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2213,7 +2213,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"attachmentFileName\":\"matchme.txt\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2249,7 +2249,7 @@ public abstract class GetMessageListMethodTest {
         await();
 
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"text\":\"matchme.txt\"}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2266,7 +2266,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldAcceptLessThan2Pow53NumberForPosition() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"position\":" + Number.MAX_VALUE + "}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2278,7 +2278,7 @@ public abstract class GetMessageListMethodTest {
     @Test
     public void getMessageListShouldErrorWhenPositionOver2Pow53() {
         given()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"position\":" + Number.MAX_VALUE + 1 + "}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2341,7 +2341,7 @@ public abstract class GetMessageListMethodTest {
     private boolean twoMessagesFoundInMailbox(MailboxId mailboxId) {
         try {
             with()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"]}}, \"#0\"]]")
             .when()
                 .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
index 9e7c993..2733f67 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
@@ -21,13 +21,13 @@ package org.apache.james.jmap.draft.methods.integration;
 
 import static io.restassured.RestAssured.given;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.core.IsNull.nullValue;
@@ -36,8 +36,8 @@ import java.io.IOException;
 import java.time.ZonedDateTime;
 
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.FixedDateZonedDateTimeProvider;
-import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.VacationPatch;
 import org.apache.james.jmap.categories.BasicFeature;
@@ -96,7 +96,7 @@ public abstract class GetVacationResponseTest {
     @Test
     public void getVacationResponseShouldReturnDefaultValue() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "\"getVacationResponse\", " +
                 "{}, " +
@@ -132,7 +132,7 @@ public abstract class GetVacationResponseTest {
                 .build());
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "\"getVacationResponse\", " +
                 "{}, " +
@@ -165,7 +165,7 @@ public abstract class GetVacationResponseTest {
                 .build());
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "\"getVacationResponse\", " +
                 "{}, " +
@@ -198,7 +198,7 @@ public abstract class GetVacationResponseTest {
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                     "\"getVacationResponse\", " +
                     "{}, " +
@@ -227,7 +227,7 @@ public abstract class GetVacationResponseTest {
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                     "\"getVacationResponse\", " +
                     "{}, " +
@@ -252,7 +252,7 @@ public abstract class GetVacationResponseTest {
                 .build());
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[" +
                 "\"getVacationResponse\", " +
                 "{\"accountId\":\"1\"}, " +
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
index 23a18b5..6412336 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
@@ -22,14 +22,14 @@ package org.apache.james.jmap.draft.methods.integration;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.concatMessageIds;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.hasItem;
 
@@ -39,7 +39,7 @@ import java.util.List;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.core.quota.QuotaSizeLimit;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
@@ -116,7 +116,7 @@ public abstract class QuotaMailingTest {
         String idString = concatMessageIds(ids);
 
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [" + idString + "]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -145,7 +145,7 @@ public abstract class QuotaMailingTest {
         String idString = concatMessageIds(ids);
 
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [" + idString + "]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -181,7 +181,7 @@ public abstract class QuotaMailingTest {
             "]";
 
         with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
index d8692ee..100023b 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
@@ -22,16 +22,16 @@ package org.apache.james.jmap.draft.methods.integration;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.getInboxId;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsInMailbox;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.awaitility.Duration.TWO_MINUTES;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsString;
@@ -47,8 +47,8 @@ import java.util.Optional;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.core.quota.QuotaSizeLimit;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.MessageAppender;
-import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
@@ -124,7 +124,7 @@ public abstract class SendMDNMethodTest {
             "]";
 
         String id = with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -157,7 +157,7 @@ public abstract class SendMDNMethodTest {
             "]";
 
         with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body(requestBody)
             .post("/jmap")
         .then()
@@ -176,7 +176,7 @@ public abstract class SendMDNMethodTest {
 
         String creationId = "creation-1";
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                     "    \"messageId\":\"" + messageIds.get(0) + "\"," +
@@ -206,7 +206,7 @@ public abstract class SendMDNMethodTest {
         String creationId = "creation-1";
         String randomMessageId = randomMessageId().serialize();
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                     "    \"messageId\":\"" + randomMessageId + "\"," +
@@ -242,7 +242,7 @@ public abstract class SendMDNMethodTest {
         String creationId = "creation-1";
 
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                     "    \"messageId\":\"" + messageIds.get(0) + "\"," +
@@ -282,7 +282,7 @@ public abstract class SendMDNMethodTest {
         // HOMER sends a MDN back to BART
         String creationId = "creation-1";
         with()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                 "    \"messageId\":\"" + homerReceivedMessageId + "\"," +
@@ -304,7 +304,7 @@ public abstract class SendMDNMethodTest {
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + bartInboxMessageIds + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -329,7 +329,7 @@ public abstract class SendMDNMethodTest {
         // USER sends a MDN back to BART
         String creationId = "creation-1";
         with()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                 "    \"messageId\":\"" + messageIds.get(0) + "\"," +
@@ -350,7 +350,7 @@ public abstract class SendMDNMethodTest {
         List<String> bobInboxMessageIds = listMessageIdsInMailbox(bartAccessToken, getInboxId(bartAccessToken));
 
         String blobId = with()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + bobInboxMessageIds.get(0) + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -359,7 +359,7 @@ public abstract class SendMDNMethodTest {
             .path(ARGUMENTS + ".list[0].attachments[0].blobId");
 
         given()
-            .header("Authorization", bartAccessToken.serialize())
+            .header("Authorization", bartAccessToken.asString())
         .when()
             .get("/download/" + blobId)
         .then()
@@ -375,7 +375,7 @@ public abstract class SendMDNMethodTest {
         String creationId = "creation-1";
         // Missing subject
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                     "    \"messageId\":\"" + randomMessageId().serialize() + "\"," +
@@ -412,7 +412,7 @@ public abstract class SendMDNMethodTest {
 
         String creationId = "creation-1";
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                 "    \"messageId\":\"" + messageIds.get(0) + "\"," +
@@ -442,7 +442,7 @@ public abstract class SendMDNMethodTest {
         String creationId = "creation-1";
         // Missing actionMode
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                 "    \"messageId\":\"" + randomMessageId().serialize() + "\"," +
@@ -469,7 +469,7 @@ public abstract class SendMDNMethodTest {
     void invalidEnumValuesInMDNShouldBeReported() {
         String creationId = "creation-1";
         given()
-            .header("Authorization", homerAccessToken.serialize())
+            .header("Authorization", homerAccessToken.asString())
             .body("[[\"setMessages\", {\"sendMDN\": {" +
                 "\"" + creationId + "\":{" +
                 "    \"messageId\":\"" + randomMessageId().serialize() + "\"," +
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
index 30ac30e..8a24c6f 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
@@ -22,12 +22,12 @@ package org.apache.james.jmap.draft.methods.integration;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.FIRST_MAILBOX;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.FIRST_MAILBOX;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -48,9 +48,10 @@ import java.io.IOException;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.categories.CassandraAndElasticSearchCategory;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.model.MailboxACL;
@@ -63,7 +64,6 @@ import org.apache.james.modules.ACLProbeImpl;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.hamcrest.Matchers;
 import org.junit.After;
 import org.junit.Before;
@@ -137,7 +137,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -170,7 +170,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -202,7 +202,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -232,7 +232,7 @@ public abstract class SetMailboxesMethodTest {
                 "  ]" +
                 "]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -264,7 +264,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -294,7 +294,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -328,7 +328,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -357,7 +357,7 @@ public abstract class SetMailboxesMethodTest {
                 "  ]" +
                 "]";
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
@@ -383,7 +383,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -409,7 +409,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
@@ -435,7 +435,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -467,7 +467,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -489,7 +489,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -521,7 +521,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -550,7 +550,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -579,7 +579,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -606,13 +606,13 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -626,7 +626,7 @@ public abstract class SetMailboxesMethodTest {
     public void setMailboxesShouldReturnCreatedMailboxWhenChildOfInboxMailbox() {
         String inboxId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMailboxes\", {}, \"#0\"]]")
             .when()
                 .post("/jmap")
@@ -651,7 +651,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -684,13 +684,13 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -718,7 +718,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -752,7 +752,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -789,7 +789,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -823,7 +823,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -858,7 +858,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -893,7 +893,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
             given()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(requestBody)
             .when()
                 .post("/jmap")
@@ -922,7 +922,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -946,7 +946,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -954,7 +954,7 @@ public abstract class SetMailboxesMethodTest {
             .statusCode(200);
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -978,7 +978,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1006,7 +1006,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1033,7 +1033,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1061,7 +1061,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1086,7 +1086,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1120,7 +1120,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1149,7 +1149,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1178,7 +1178,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1206,7 +1206,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1234,7 +1234,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1251,7 +1251,7 @@ public abstract class SetMailboxesMethodTest {
             .serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1280,7 +1280,7 @@ public abstract class SetMailboxesMethodTest {
             .serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1309,7 +1309,7 @@ public abstract class SetMailboxesMethodTest {
             .serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1351,12 +1351,12 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1375,7 +1375,7 @@ public abstract class SetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username.asString(), myBox);
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1391,7 +1391,7 @@ public abstract class SetMailboxesMethodTest {
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1407,7 +1407,7 @@ public abstract class SetMailboxesMethodTest {
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1425,7 +1425,7 @@ public abstract class SetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username.asString(), myBox);
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1441,7 +1441,7 @@ public abstract class SetMailboxesMethodTest {
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1457,7 +1457,7 @@ public abstract class SetMailboxesMethodTest {
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1476,7 +1476,7 @@ public abstract class SetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username.asString(), myBox);
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1492,7 +1492,7 @@ public abstract class SetMailboxesMethodTest {
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1508,7 +1508,7 @@ public abstract class SetMailboxesMethodTest {
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1526,7 +1526,7 @@ public abstract class SetMailboxesMethodTest {
         MailboxId mailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, username.asString(), myBox);
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[" +
                 "  [ \"setMailboxes\"," +
                 "    {" +
@@ -1567,12 +1567,12 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1607,7 +1607,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1640,12 +1640,12 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1682,7 +1682,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1715,12 +1715,12 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1752,7 +1752,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1783,12 +1783,12 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1821,7 +1821,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1853,12 +1853,12 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1888,7 +1888,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1919,7 +1919,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1956,7 +1956,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1989,7 +1989,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2021,7 +2021,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2051,12 +2051,12 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"ids\": [\"" + mailboxId.serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2086,7 +2086,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2117,7 +2117,7 @@ public abstract class SetMailboxesMethodTest {
                     "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2151,7 +2151,7 @@ public abstract class SetMailboxesMethodTest {
                   "]";
 
       given()
-          .header("Authorization", accessToken.serialize())
+          .header("Authorization", accessToken.asString())
           .body(requestBody)
       .when()
           .post("/jmap")
@@ -2180,7 +2180,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2208,7 +2208,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2239,7 +2239,7 @@ public abstract class SetMailboxesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java
index 419a2b4..49fa832 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java
@@ -23,14 +23,14 @@ import static io.restassured.RestAssured.given;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.apache.james.jmap.JmapCommonRequests.bodyOfMessage;
 import static org.apache.james.jmap.JmapCommonRequests.getLatestMessageId;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.receiversOfMessage;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.collection.IsMapWithSize.aMapWithSize;
@@ -41,13 +41,13 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.Role;
 import org.apache.james.mailbox.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.awaitility.Duration;
 import org.junit.After;
 import org.junit.Before;
@@ -129,7 +129,7 @@ public abstract class SetMessagesMethodReRoutingTest {
             "  ]" +
             "]";
         given()
-            .header("Authorization", senderAtDestinationDomainToken.serialize())
+            .header("Authorization", senderAtDestinationDomainToken.asString())
             .body(sendMessageBody)
         .when()
             .post("/jmap")
@@ -173,7 +173,7 @@ public abstract class SetMessagesMethodReRoutingTest {
             "  ]" +
             "]";
         given()
-            .header("Authorization", senderAtDestinationDomainToken.serialize())
+            .header("Authorization", senderAtDestinationDomainToken.asString())
             .body(sendMessageBody)
         .when()
             .post("/jmap")
@@ -219,7 +219,7 @@ public abstract class SetMessagesMethodReRoutingTest {
             "  ]" +
             "]";
         given()
-            .header("Authorization", senderAtDestinationDomainToken.serialize())
+            .header("Authorization", senderAtDestinationDomainToken.asString())
             .body(sendMessageBody)
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
index 48bf442..8ed6dcd 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
@@ -23,23 +23,23 @@ import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.LOCALHOST_IP;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.SECOND_ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.SECOND_NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.apache.james.jmap.JmapCommonRequests.getDraftId;
 import static org.apache.james.jmap.JmapCommonRequests.getInboxId;
 import static org.apache.james.jmap.JmapCommonRequests.getMailboxId;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.getSetMessagesUpdateOKResponseAssertions;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.BOB;
-import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.SECOND_ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.SECOND_NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -75,9 +75,9 @@ import org.apache.commons.io.IOUtils;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.core.quota.QuotaSizeLimit;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.HttpJmapAuthentication;
 import org.apache.james.jmap.MessageAppender;
-import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.MessageIdProbe;
@@ -108,6 +108,7 @@ import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.util.MimeMessageUtil;
+import org.apache.james.util.Port;
 import org.apache.james.util.ZeroedInputStream;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
@@ -156,6 +157,7 @@ public abstract class SetMessagesMethodTest {
     private DataProbe dataProbe;
     private MessageIdProbe messageProbe;
     private ACLProbe aclProbe;
+    private Port jmapPort;
 
     @Before
     public void setup() throws Throwable {
@@ -191,7 +193,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void setMessagesShouldReturnAnErrorNotSupportedWhenRequestContainsNonNullAccountId() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"accountId\": \"1\"}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -206,7 +208,7 @@ public abstract class SetMessagesMethodTest {
     @Test
     public void setMessagesShouldReturnAnErrorNotSupportedWhenRequestContainsNonNullIfInState() {
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"ifInState\": \"1\"}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -223,7 +225,7 @@ public abstract class SetMessagesMethodTest {
 
         String unknownMailboxMessageId = randomMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"destroy\": [\"" + unknownMailboxMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -245,7 +247,7 @@ public abstract class SetMessagesMethodTest {
 
         String messageId = randomMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"destroy\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -271,7 +273,7 @@ public abstract class SetMessagesMethodTest {
         await();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"destroy\": [\"" + message.getMessageId().serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -296,7 +298,7 @@ public abstract class SetMessagesMethodTest {
 
         // When
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"setMessages\", {\"destroy\": [\"" + message.getMessageId().serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -306,7 +308,7 @@ public abstract class SetMessagesMethodTest {
 
         // Then
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + message.getMessageId().serialize() + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -333,7 +335,7 @@ public abstract class SetMessagesMethodTest {
 
         String missingMessageId = randomMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"destroy\": [\"%s\", \"%s\", \"%s\"]}, \"#0\"]]",
                 message1.getMessageId().serialize(),
                 missingMessageId,
@@ -370,7 +372,7 @@ public abstract class SetMessagesMethodTest {
 
         // When
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"destroy\": [\"%s\", \"%s\", \"%s\"]}, \"#0\"]]",
                 message1.getMessageId().serialize(),
                 randomMessageId().serialize(),
@@ -379,7 +381,7 @@ public abstract class SetMessagesMethodTest {
 
         // Then
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"getMessages\", {\"ids\": [\"%s\", \"%s\", \"%s\"]}, \"#0\"]]",
                 message1.getMessageId().serialize(),
                 message2.getMessageId().serialize(),
@@ -406,7 +408,7 @@ public abstract class SetMessagesMethodTest {
 
         // When
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : false } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap")
@@ -427,7 +429,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : false, \"keywords\": {\"$Seen\": true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -451,7 +453,7 @@ public abstract class SetMessagesMethodTest {
         String serializedMessageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Seen\": true, \"$Flagged\": true} } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap")
@@ -460,7 +462,7 @@ public abstract class SetMessagesMethodTest {
             .spec(getSetMessagesUpdateOKResponseAssertions(serializedMessageId));
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -483,7 +485,7 @@ public abstract class SetMessagesMethodTest {
         String serializedMessageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Seen\": true, \"$Forwarded\": true} } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap")
@@ -492,7 +494,7 @@ public abstract class SetMessagesMethodTest {
             .spec(getSetMessagesUpdateOKResponseAssertions(serializedMessageId));
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -519,7 +521,7 @@ public abstract class SetMessagesMethodTest {
         String serializedMessageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Seen\": true} } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap")
@@ -528,7 +530,7 @@ public abstract class SetMessagesMethodTest {
             .spec(getSetMessagesUpdateOKResponseAssertions(serializedMessageId));
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -550,7 +552,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Answered\": true, \"$Deleted\" : true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -573,7 +575,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Answered\": true, \"$Recent\": true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -596,7 +598,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Answered\": true, \"$Forwarded\": true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -629,7 +631,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Answered\": true, \"$Forwarded\": true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -664,7 +666,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Answered\": true, \"$Flagged\": true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -673,7 +675,7 @@ public abstract class SetMessagesMethodTest {
             .spec(getSetMessagesUpdateOKResponseAssertions(messageId));
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -696,14 +698,14 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : false } } }, \"#0\"]]", serializedMessageId))
         // When
         .when()
             .post("/jmap");
         // Then
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -725,7 +727,7 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : true } } }, \"#0\"]]", serializedMessageId))
         // When
         .when()
@@ -747,14 +749,14 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : true } } }, \"#0\"]]", serializedMessageId))
         // When
         .when()
             .post("/jmap");
         // Then
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -776,7 +778,7 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isFlagged\" : true } } }, \"#0\"]]", serializedMessageId))
         // When
         .when()
@@ -798,14 +800,14 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isFlagged\" : true } } }, \"#0\"]]", serializedMessageId))
         // When
         .when()
             .post("/jmap");
         // Then
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -826,7 +828,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = randomMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : \"123\" } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -854,7 +856,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = USERNAME.asString() + "|mailbox|1";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : \"123\", \"isFlagged\" : 456 } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -882,7 +884,7 @@ public abstract class SetMessagesMethodTest {
         String serializedMessageId = message.getMessageId().serialize();
         // When
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isAnswered\" : true } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap")
@@ -903,14 +905,14 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isAnswered\" : true } } }, \"#0\"]]", serializedMessageId))
         // When
         .when()
             .post("/jmap");
         // Then
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -932,7 +934,7 @@ public abstract class SetMessagesMethodTest {
         String serializedMessageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isForwarded\" : true } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap")
@@ -951,13 +953,13 @@ public abstract class SetMessagesMethodTest {
 
         String serializedMessageId = message.getMessageId().serialize();
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isForwarded\" : true } } }, \"#0\"]]", serializedMessageId))
         .when()
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + serializedMessageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -974,7 +976,7 @@ public abstract class SetMessagesMethodTest {
         String nonExistingMessageId = randomMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"isUnread\" : true } } }, \"#0\"]]", nonExistingMessageId))
         .when()
             .post("/jmap")
@@ -1010,7 +1012,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1060,7 +1062,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1094,7 +1096,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
        .when()
             .post("/jmap")
@@ -1128,7 +1130,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1162,7 +1164,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
        .when()
             .post("/jmap")
@@ -1201,7 +1203,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
        .when()
             .post("/jmap")
@@ -1238,7 +1240,7 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1271,7 +1273,7 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1308,7 +1310,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1349,7 +1351,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1392,7 +1394,7 @@ public abstract class SetMessagesMethodTest {
                 .toString();
 
             given()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(requestBody)
             .when()
                 .post("/jmap")
@@ -1414,7 +1416,7 @@ public abstract class SetMessagesMethodTest {
             String inboxId = getMailboxId(accessToken, Role.INBOX);
             String receivedMessageId =
                 with()
-                    .header("Authorization", accessToken.serialize())
+                    .header("Authorization", accessToken.asString())
                     .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
                     .post("/jmap")
                 .then()
@@ -1422,7 +1424,7 @@ public abstract class SetMessagesMethodTest {
                     .path(ARGUMENTS + ".messageIds[0]");
 
             given()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
             .when()
                 .post("/jmap")
@@ -1461,7 +1463,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1497,7 +1499,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1507,7 +1509,7 @@ public abstract class SetMessagesMethodTest {
             .path(ARGUMENTS + ".created." + messageCreationId + ".id");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -1539,7 +1541,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1573,7 +1575,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1612,7 +1614,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1646,7 +1648,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1680,7 +1682,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1690,7 +1692,7 @@ public abstract class SetMessagesMethodTest {
             .path(ARGUMENTS + ".created." + messageCreationId + ".id");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -1722,7 +1724,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1760,7 +1762,7 @@ public abstract class SetMessagesMethodTest {
 
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(requestBody)
                 .post("/jmap")
                 .then()
@@ -1769,7 +1771,7 @@ public abstract class SetMessagesMethodTest {
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -1800,7 +1802,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1833,7 +1835,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .when()
             .post("/jmap")
@@ -1865,7 +1867,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1897,7 +1899,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1931,7 +1933,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -1971,7 +1973,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2018,7 +2020,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .when()
             .post("/jmap")
@@ -2049,7 +2051,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2089,7 +2091,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2128,7 +2130,7 @@ public abstract class SetMessagesMethodTest {
 
         String draftId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(createDraft)
                 .post("/jmap")
             .then()
@@ -2149,7 +2151,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(moveDraftToOutBox)
             .post("/jmap");
 
@@ -2180,7 +2182,7 @@ public abstract class SetMessagesMethodTest {
 
         String draftId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(createDraft)
                 .post("/jmap")
             .then()
@@ -2201,7 +2203,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(copyDraftToOutBox)
         .when()
             .post("/jmap")
@@ -2236,7 +2238,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(moveMessageToOutBox)
         .when()
             .post("/jmap")
@@ -2272,7 +2274,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2312,7 +2314,7 @@ public abstract class SetMessagesMethodTest {
         jmapServer.getProbe(JmapGuiceProbe.class).addMailboxListener(eventCollector);
 
         String messageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .post("/jmap")
@@ -2363,7 +2365,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2376,7 +2378,7 @@ public abstract class SetMessagesMethodTest {
     private boolean messageHasBeenMovedToSentBox(String sentMailboxId) {
         try {
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"fetchMessages\":true, \"filter\":{\"inMailboxes\":[\"" + sentMailboxId + "\"]}}, \"#0\"]]")
             .when()
                 .post("/jmap")
@@ -2412,7 +2414,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2447,7 +2449,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2484,7 +2486,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2519,7 +2521,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2534,7 +2536,7 @@ public abstract class SetMessagesMethodTest {
     private boolean hasNoMessageIn(AccessToken accessToken, String mailboxId) {
         try {
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId + "\"]}}, \"#0\"]]")
             .when()
                 .post("/jmap")
@@ -2570,7 +2572,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2607,7 +2609,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2647,7 +2649,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2677,7 +2679,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2709,7 +2711,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -2758,7 +2760,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2805,7 +2807,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2852,7 +2854,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2861,7 +2863,7 @@ public abstract class SetMessagesMethodTest {
         // Then
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(recipientToken));
         with()
-            .header("Authorization", recipientToken.serialize())
+            .header("Authorization", recipientToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\": true, \"fetchMessageProperties\": [\"bcc\"] }, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2907,7 +2909,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2916,7 +2918,7 @@ public abstract class SetMessagesMethodTest {
         // Then
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> messageHasBeenMovedToSentBox(sentMailboxId));
         with()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\":true, \"fetchMessageProperties\": [\"bcc\"], \"filter\":{\"inMailboxes\":[\"" + sentMailboxId + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2964,7 +2966,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -2973,7 +2975,7 @@ public abstract class SetMessagesMethodTest {
         // Then
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInRecipientsMailboxes(bobAccessToken));
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\": true, \"fetchMessageProperties\": [\"bcc\"] }, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -2988,7 +2990,7 @@ public abstract class SetMessagesMethodTest {
     private boolean isAnyMessageFoundInRecipientsMailboxes(AccessToken recipientToken) {
         try {
             with()
-                .header("Authorization", recipientToken.serialize())
+                .header("Authorization", recipientToken.asString())
                 .body("[[\"getMessageList\", {}, \"#0\"]]")
             .when()
                 .post("/jmap")
@@ -3034,7 +3036,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -3077,7 +3079,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3120,7 +3122,7 @@ public abstract class SetMessagesMethodTest {
 
         String notCreatedMessage = ARGUMENTS + ".notCreated[\"" + messageCreationId + "\"]";
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3136,7 +3138,7 @@ public abstract class SetMessagesMethodTest {
     private boolean isHtmlMessageReceived(AccessToken recipientToken) {
         try {
             with()
-                .header("Authorization", recipientToken.serialize())
+                .header("Authorization", recipientToken.asString())
                 .body("[[\"getMessageList\", {\"fetchMessages\": true, \"fetchMessageProperties\": [\"htmlBody\"]}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -3182,7 +3184,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -3195,7 +3197,7 @@ public abstract class SetMessagesMethodTest {
     private boolean isTextPlusHtmlMessageReceived(AccessToken recipientToken) {
         try {
             with()
-                .header("Authorization", recipientToken.serialize())
+                .header("Authorization", recipientToken.asString())
                 .body("[[\"getMessageList\", {\"fetchMessages\": true, \"fetchMessageProperties\": [\"htmlBody\", \"textBody\"]}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -3232,7 +3234,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3265,14 +3267,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3309,14 +3311,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3353,14 +3355,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3393,14 +3395,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3437,7 +3439,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3470,7 +3472,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3509,7 +3511,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3542,14 +3544,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3584,7 +3586,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3621,14 +3623,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
 
         String firstMessage = ARGUMENTS + ".list[0]";
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3668,7 +3670,7 @@ public abstract class SetMessagesMethodTest {
         String notCreatedPath = ARGUMENTS + ".notCreated[\"" + messageCreationId + "\"]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3729,7 +3731,7 @@ public abstract class SetMessagesMethodTest {
         String secondAttachment = createdPath + ".attachments[1]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3822,7 +3824,7 @@ public abstract class SetMessagesMethodTest {
         String thirdAttachment = createdPath + ".attachments[2]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -3905,7 +3907,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap").then();
@@ -3920,7 +3922,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
                 .post("/jmap")
             .then()
@@ -3928,7 +3930,7 @@ public abstract class SetMessagesMethodTest {
                 .path(ARGUMENTS + ".messageIds[0]");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -3945,7 +3947,7 @@ public abstract class SetMessagesMethodTest {
 
     private String uploadAttachment(Attachment attachment) throws IOException {
         return with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .contentType(attachment.getType())
             .body(attachment.getStream())
             .post("/upload")
@@ -3958,7 +3960,7 @@ public abstract class SetMessagesMethodTest {
 
     private String uploadTextAttachment(Attachment attachment) throws IOException {
         return with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .contentType(attachment.getType())
             .body(new String(IOUtils.toByteArray(attachment.getStream()), StandardCharsets.UTF_8))
             .post("/upload")
@@ -4011,7 +4013,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
@@ -4020,7 +4022,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -4030,7 +4032,7 @@ public abstract class SetMessagesMethodTest {
         String firstMessage = ARGUMENTS + ".list[0]";
         String firstAttachment = firstMessage + ".attachments[0]";
         String blobId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4087,7 +4089,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -4097,7 +4099,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -4107,7 +4109,7 @@ public abstract class SetMessagesMethodTest {
         String firstMessage = ARGUMENTS + ".list[0]";
         String firstAttachment = firstMessage + ".attachments[0]";
         String blobId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4131,7 +4133,7 @@ public abstract class SetMessagesMethodTest {
         try {
             String inboxId = getMailboxId(recipientToken, Role.INBOX);
             with()
-                .header("Authorization", recipientToken.serialize())
+                .header("Authorization", recipientToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
             .when()
                 .post("/jmap")
@@ -4184,7 +4186,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -4194,7 +4196,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -4204,7 +4206,7 @@ public abstract class SetMessagesMethodTest {
         String firstMessage = ARGUMENTS + ".list[0]";
         String firstAttachment = firstMessage + ".attachments[0]";
         String blobId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4262,7 +4264,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -4272,7 +4274,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -4282,7 +4284,7 @@ public abstract class SetMessagesMethodTest {
         String firstMessage = ARGUMENTS + ".list[0]";
         String firstAttachment = firstMessage + ".attachments[0]";
         String blobId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4305,7 +4307,7 @@ public abstract class SetMessagesMethodTest {
 
     public void checkBlobContent(String blobId, byte[] rawBytes) {
         byte[] attachmentBytes = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .get("/download/" + blobId)
         .then()
             .extract()
@@ -4349,7 +4351,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -4359,7 +4361,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
             .post("/jmap")
             .then()
@@ -4369,7 +4371,7 @@ public abstract class SetMessagesMethodTest {
         String firstMessage = ARGUMENTS + ".list[0]";
         String firstAttachment = firstMessage + ".attachments[0]";
         String blobId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4416,7 +4418,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
@@ -4453,7 +4455,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
@@ -4480,7 +4482,7 @@ public abstract class SetMessagesMethodTest {
     private boolean messageInMailboxHasHeaders(String mailboxId, ImmutableList<String> expectedHeaders) {
         try {
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", "
                     + "{"
                     + "\"fetchMessages\": true, "
@@ -4529,7 +4531,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .post("/jmap")
@@ -4543,7 +4545,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4578,7 +4580,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -4592,7 +4594,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4630,7 +4632,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -4640,7 +4642,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + firstMessage.jmapMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4677,7 +4679,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap");
@@ -4687,7 +4689,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + firstMessage.jmapMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4725,7 +4727,7 @@ public abstract class SetMessagesMethodTest {
 
         String draftId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(createDraft)
                 .post("/jmap")
             .then()
@@ -4746,7 +4748,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(moveDraftToOutBox)
             .post("/jmap");
 
@@ -4755,7 +4757,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + firstMessage.jmapMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4793,7 +4795,7 @@ public abstract class SetMessagesMethodTest {
 
         String draftId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body(createDraft)
                 .post("/jmap")
             .then()
@@ -4814,7 +4816,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(moveDraftToOutBox)
             .post("/jmap");
 
@@ -4823,7 +4825,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + firstMessage.jmapMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4855,14 +4857,14 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         with()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInInbox(accessToken));
 
         String jmapMessageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4872,7 +4874,7 @@ public abstract class SetMessagesMethodTest {
             .<String>path(ARGUMENTS + ".messageIds[0]");
 
         String mimeMessageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + jmapMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4919,7 +4921,7 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
@@ -4929,7 +4931,7 @@ public abstract class SetMessagesMethodTest {
 
         String message = SECOND_ARGUMENTS + ".list[0]";
         with()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\":true, \"fetchMessageProperties\": [\"headers\"], \"filter\":{\"inMailboxes\":[\"" + sentMailboxId + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -4964,7 +4966,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .post("/jmap")
@@ -4978,7 +4980,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -5011,7 +5013,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
@@ -5048,7 +5050,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .post("/jmap")
@@ -5062,7 +5064,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -5115,7 +5117,7 @@ public abstract class SetMessagesMethodTest {
         String singleAttachment = createdPath + ".attachments[0]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5164,7 +5166,7 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         String messageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         // When
         .post("/jmap")
@@ -5178,7 +5180,7 @@ public abstract class SetMessagesMethodTest {
         String message = ARGUMENTS + ".list[0]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -5225,14 +5227,14 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .post("/jmap");
 
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInInbox(accessToken));
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{" +
                 "   \"body\": \"Test body\", " +
                 "   \"inMailboxes\":[\"" + inboxId  + "\"]}}, " +
@@ -5292,7 +5294,7 @@ public abstract class SetMessagesMethodTest {
         String secondAttachment = createdPath + ".attachments[1]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5325,7 +5327,7 @@ public abstract class SetMessagesMethodTest {
         String messageId = message.getMessageId().serialize();
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Seen\": true, \"$Unknown\": true} } } }, \"#0\"]]", messageId))
         .when()
             .post("/jmap")
@@ -5356,7 +5358,7 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5389,7 +5391,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5424,7 +5426,7 @@ public abstract class SetMessagesMethodTest {
         String inboxId = getMailboxId(accessToken, Role.INBOX);
         String receivedMessageId =
             with()
-                .header("Authorization", accessToken.serialize())
+                .header("Authorization", accessToken.asString())
                 .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}}, \"#0\"]]")
                 .post("/jmap")
             .then()
@@ -5432,7 +5434,7 @@ public abstract class SetMessagesMethodTest {
                 .path(ARGUMENTS + ".messageIds[0]");
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + receivedMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -5478,7 +5480,7 @@ public abstract class SetMessagesMethodTest {
 
         // Given
         given()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body(requestBody)
         // When
         .when()
@@ -5487,7 +5489,7 @@ public abstract class SetMessagesMethodTest {
         // Then
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> messageHasBeenMovedToSentBox(sentMailboxId));
         with()
-            .header("Authorization", this.accessToken.serialize())
+            .header("Authorization", this.accessToken.asString())
             .body("[[\"getMessageList\", {\"fetchMessages\":true, \"fetchMessageProperties\": [\"keywords\"], \"filter\":{\"inMailboxes\":[\"" + sentMailboxId + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -5524,7 +5526,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5534,7 +5536,7 @@ public abstract class SetMessagesMethodTest {
             .path(ARGUMENTS + ".created." + messageCreationId + ".id");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -5570,7 +5572,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5595,13 +5597,13 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(updateRequestBody)
         .when()
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -5640,7 +5642,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5665,13 +5667,13 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(updateRequestBody)
         .when()
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -5710,7 +5712,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5736,7 +5738,7 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(updateRequestBody)
         .when()
             .post("/jmap")
@@ -5772,7 +5774,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String messageId = given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5798,13 +5800,13 @@ public abstract class SetMessagesMethodTest {
                 "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(updateRequestBody)
         .when()
             .post("/jmap");
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -5838,7 +5840,7 @@ public abstract class SetMessagesMethodTest {
             "]";
 
         String creationMimeMessageId = given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(requestBody)
         .when()
             .post("/jmap")
@@ -5850,7 +5852,7 @@ public abstract class SetMessagesMethodTest {
         calmlyAwait.atMost(30, TimeUnit.SECONDS).until(() -> isAnyMessageFoundInInbox(accessToken));
 
         String jmapMessageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -5859,7 +5861,7 @@ public abstract class SetMessagesMethodTest {
             .path(ARGUMENTS + ".messageIds[0]");
 
         String receivedMimeMessageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessages\", {\"ids\": [\"" + jmapMessageId + "\"]}, \"#0\"]]")
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
index 4bbc40a..dbf9b0b 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
@@ -23,13 +23,13 @@ import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB;
+import static org.apache.james.jmap.JMAPTestingConstants.BOB_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.getSetMessagesUpdateOKResponseAssertions;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.BOB;
-import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -40,8 +40,9 @@ import java.util.Set;
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.HttpJmapAuthentication;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
@@ -49,7 +50,6 @@ import org.apache.james.probe.DataProbe;
 import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.mailet.Mail;
 import org.junit.After;
 import org.junit.Before;
@@ -156,12 +156,12 @@ public abstract class SetMessagesOutboxFlagUpdateTest {
             "]";
 
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(requestBody)
             .post("/jmap");
 
         String jmapMessageId = with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {}, \"#0\"]]")
             .post("/jmap")
         .then()
@@ -182,7 +182,7 @@ public abstract class SetMessagesOutboxFlagUpdateTest {
             "]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(updateRequestBody)
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
index e40d5e3..914d26e 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
@@ -21,11 +21,11 @@ package org.apache.james.jmap.draft.methods.integration;
 
 import static io.restassured.RestAssured.given;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 
@@ -35,14 +35,14 @@ import java.util.Optional;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.Vacation;
 import org.apache.james.jmap.api.vacation.VacationPatch;
 import org.apache.james.jmap.categories.BasicFeature;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.util.ValuePatch;
 import org.apache.james.utils.DataProbeImpl;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -103,7 +103,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -134,7 +134,7 @@ public abstract class SetVacationResponseTest {
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -161,7 +161,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -194,7 +194,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -234,7 +234,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -274,7 +274,7 @@ public abstract class SetVacationResponseTest {
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
             .when()
             .post("/jmap")
@@ -313,7 +313,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
             .when()
             .post("/jmap")
@@ -348,7 +348,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
             .when()
             .post("/jmap")
@@ -384,7 +384,7 @@ public abstract class SetVacationResponseTest {
             "]]";
 
         given()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
@@ -417,7 +417,7 @@ public abstract class SetVacationResponseTest {
         given()
             .accept(ContentType.JSON)
             .contentType(ContentType.JSON)
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body(bodyRequest)
         .when()
             .post("/jmap")
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
index cabc051..f7f7531 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
@@ -24,11 +24,11 @@ import static io.restassured.RestAssured.with;
 import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.LOCALHOST_IP;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
@@ -39,7 +39,7 @@ import java.util.Map;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.mailbox.Role;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
@@ -108,7 +108,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -118,7 +118,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -131,7 +131,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -143,7 +143,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -161,7 +161,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -181,7 +181,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -199,7 +199,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -217,7 +217,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -235,7 +235,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
             .when()
             .post("/jmap");
@@ -244,7 +244,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -257,7 +257,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -270,7 +270,7 @@ public interface SpamAssassinContract {
         // Alice is moving this message out of Spam -> forgetting in SpamAssassin
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getInboxId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -282,7 +282,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -300,7 +300,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
             .when()
             .post("/jmap");
@@ -309,7 +309,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -322,7 +322,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -335,7 +335,7 @@ public interface SpamAssassinContract {
         // Alice is moving this message to trash
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getTrashId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -347,7 +347,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -365,7 +365,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
             .when()
             .post("/jmap");
@@ -374,7 +374,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -387,7 +387,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -409,7 +409,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -427,7 +427,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
             .when()
             .post("/jmap");
@@ -436,7 +436,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -449,7 +449,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -472,7 +472,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -490,7 +490,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
             .when()
             .post("/jmap");
@@ -499,7 +499,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -512,7 +512,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -525,7 +525,7 @@ public interface SpamAssassinContract {
         // Alice is deleting this message
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"destroy\": [\"%s\"] }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -537,7 +537,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreate(bobAccessToken))
         .when()
             .post("/jmap");
@@ -574,7 +574,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending a message to Alice & Paul
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreateToMultipleRecipients(bobAccessToken))
         .when()
             .post("/jmap");
@@ -583,7 +583,7 @@ public interface SpamAssassinContract {
 
         // Alice is moving this message to Spam -> learning in SpamAssassin
         List<String> messageIds = with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + getInboxId(aliceAccessToken) + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -596,7 +596,7 @@ public interface SpamAssassinContract {
 
         messageIds
             .forEach(messageId -> given()
-                .header("Authorization", aliceAccessToken.serialize())
+                .header("Authorization", aliceAccessToken.asString())
                 .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"mailboxIds\": [\"" + getSpamId(aliceAccessToken) + "\"] } } }, \"#0\"]]", messageId))
             .when()
                 .post("/jmap")
@@ -608,7 +608,7 @@ public interface SpamAssassinContract {
 
         // Bob is sending again the same message to Alice & Paul
         given()
-            .header("Authorization", bobAccessToken.serialize())
+            .header("Authorization", bobAccessToken.asString())
             .body(setMessageCreateToMultipleRecipients(bobAccessToken))
         .when()
             .post("/jmap");
@@ -642,7 +642,7 @@ public interface SpamAssassinContract {
 
     default void assertMessagesFoundInMailbox(AccessToken accessToken, String mailboxId, int expectedNumberOfMessages) {
         with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId + "\"]}}, \"#0\"]]")
         .when()
             .post("/jmap")
@@ -661,7 +661,7 @@ public interface SpamAssassinContract {
 
     default List<Map<String, String>> getAllMailboxesIds(AccessToken accessToken) {
         return with()
-            .header("Authorization", accessToken.serialize())
+            .header("Authorization", accessToken.asString())
             .body("[[\"getMailboxes\", {\"properties\": [\"role\", \"id\"]}, \"#0\"]]")
         .post("/jmap")
             .andReturn()
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
index 28b274b..9413cbb 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/DownloadStepdefs.java
@@ -41,7 +41,7 @@ import org.apache.http.client.fluent.Request;
 import org.apache.http.client.fluent.Response;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.model.AttachmentAccessToken;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -179,7 +179,7 @@ public class DownloadStepdefs {
         URI target = baseUri(mainStepdefs.jmapServer).setPath("/download/" + ONE_ATTACHMENT_EML_ATTACHMENT_BLOB_ID).build();
         Request request = Request.Options(target);
         if (accessToken != null) {
-            request.addHeader("Authorization", accessToken.serialize());
+            request.addHeader("Authorization", accessToken.asString());
         }
         response = request.execute().returnResponse();
     }
@@ -227,7 +227,7 @@ public class DownloadStepdefs {
         }
         Request request = Request.Get(uriBuilder.build());
         if (accessToken != null) {
-            request.addHeader("Authorization", accessToken.serialize());
+            request.addHeader("Authorization", accessToken.asString());
         }
         return request;
     }
@@ -275,7 +275,7 @@ public class DownloadStepdefs {
 
     private void trustForBlobId(String blobId, String username) throws Exception {
         Response tokenGenerationResponse = Request.Post(baseUri(mainStepdefs.jmapServer).setPath("/download/" + blobId).build())
-            .addHeader("Authorization", userStepdefs.authenticate(username).serialize())
+            .addHeader("Authorization", userStepdefs.authenticate(username).asString())
             .execute();
         String serializedAttachmentAccessToken = tokenGenerationResponse.returnContent().asString();
         attachmentAccessTokens.put(
@@ -290,7 +290,7 @@ public class DownloadStepdefs {
         userStepdefs.execWithUser(username, () -> {
             URIBuilder uriBuilder = baseUri(mainStepdefs.jmapServer).setPath("/download/badblobId");
             response = Request.Get(uriBuilder.build())
-                .addHeader("Authorization", userStepdefs.authenticate(username).serialize())
+                .addHeader("Authorization", userStepdefs.authenticate(username).asString())
                 .execute()
                 .returnResponse();
 
@@ -372,7 +372,7 @@ public class DownloadStepdefs {
         String blobId = blobIdByAttachmentId.get(attachmentId);
         AccessToken accessToken = userStepdefs.authenticate(username);
         response = Request.Post(baseUri(mainStepdefs.jmapServer).setPath("/download/" + blobId).build())
-                .addHeader("Authorization", accessToken.serialize())
+                .addHeader("Authorization", accessToken.asString())
                 .execute()
                 .returnResponse();
     }
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
index 06fc697..e66b608 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMailboxesMethodStepdefs.java
@@ -21,8 +21,8 @@ package org.apache.james.jmap.draft.methods.integration.cucumber;
 
 import static com.jayway.jsonpath.Criteria.where;
 import static com.jayway.jsonpath.Filter.filter;
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.ArrayList;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
index 7bf8190..516bdb5 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessageListMethodStepdefs.java
@@ -19,8 +19,8 @@
 
 package org.apache.james.jmap.draft.methods.integration.cucumber;
 
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 
 import java.util.List;
 import java.util.concurrent.TimeUnit;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index d694e3e..6d9c865 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -19,8 +19,9 @@
 
 package org.apache.james.jmap.draft.methods.integration.cucumber;
 
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.apache.james.mailbox.model.MailboxConstants.INBOX;
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -42,7 +43,6 @@ import javax.mail.Flags;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.text.StringEscapeUtils;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.TestingConstants;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.methods.integration.cucumber.util.TableRow;
 import org.apache.james.mailbox.model.MailboxConstants;
@@ -395,7 +395,7 @@ public class GetMessagesMethodStepdefs {
                 ClassLoaderUtils.getSystemResourceAsString(fileName));
         smtpMessageSender.close();
 
-        TestingConstants.calmlyAwait.until(() -> !retrieveIds(user, mailboxId).isEmpty());
+        calmlyAwait.until(() -> !retrieveIds(user, mailboxId).isEmpty());
         List<String> ids = retrieveIds(user, mailboxId);
         messageIdStepdefs.addMessageId(messageName, mainStepdefs.messageIdFactory.fromString(ids.get(0)));
     }
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/HttpClient.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/HttpClient.java
index d5678ac..648e928 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/HttpClient.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/HttpClient.java
@@ -46,7 +46,7 @@ public class HttpClient {
 
     public void post(String requestBody) throws Exception {
         response = Request.Post(baseUri(mainStepdefs.jmapServer).setPath("/jmap").build())
-            .addHeader("Authorization", userStepdefs.authenticate(userStepdefs.getConnectedUser()).serialize())
+            .addHeader("Authorization", userStepdefs.authenticate(userStepdefs.getConnectedUser()).asString())
             .addHeader("Accept", org.apache.http.entity.ContentType.APPLICATION_JSON.getMimeType())
             .bodyString(requestBody, org.apache.http.entity.ContentType.APPLICATION_JSON)
             .execute()
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
index 6edba1b..13547c0 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMailboxesMethodStepdefs.java
@@ -19,9 +19,9 @@
 
 package org.apache.james.jmap.draft.methods.integration.cucumber;
 
-import static org.apache.james.jmap.TestingConstants.ARGUMENTS;
-import static org.apache.james.jmap.TestingConstants.NAME;
-import static org.apache.james.jmap.TestingConstants.calmlyAwait;
+import static org.apache.james.jmap.JMAPTestingConstants.ARGUMENTS;
+import static org.apache.james.jmap.JMAPTestingConstants.NAME;
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.nio.charset.StandardCharsets;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
index 998e340..9fe7661 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UploadStepdefs.java
@@ -40,7 +40,7 @@ import org.apache.http.client.fluent.Request;
 import org.apache.http.concurrent.FutureCallback;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 import org.apache.james.util.CountDownConsumeInputStream;
 import org.apache.james.util.ZeroedInputStream;
 
@@ -82,7 +82,7 @@ public class UploadStepdefs {
         Request request = Request.Post(uploadUri)
             .bodyStream(new BufferedInputStream(bodyStream, _1M), org.apache.http.entity.ContentType.DEFAULT_BINARY);
         if (accessToken != null) {
-            request.addHeader("Authorization", accessToken.serialize());
+            request.addHeader("Authorization", accessToken.asString());
         }
         async = Async.newInstance().execute(request, new FutureCallback<Content>() {
             
@@ -110,7 +110,7 @@ public class UploadStepdefs {
         Request request = Request.Post(uploadUri)
             .bodyStream(new BufferedInputStream(new ZeroedInputStream(_1M), _1M), org.apache.http.entity.ContentType.DEFAULT_BINARY);
 
-        request.addHeader("Authorization", accessToken.serialize());
+        request.addHeader("Authorization", accessToken.asString());
         response = Executor.newInstance(newClient())
             .execute(request)
             .returnResponse();
@@ -137,7 +137,7 @@ public class UploadStepdefs {
         Request request = Request.Post(uploadUri)
                 .bodyByteArray("some text".getBytes(StandardCharsets.UTF_8));
         if (accessToken != null) {
-            request.addHeader("Authorization", accessToken.serialize());
+            request.addHeader("Authorization", accessToken.asString());
         }
         response = request.execute().returnResponse();
     }
@@ -148,7 +148,7 @@ public class UploadStepdefs {
         Request request = Request.Post(uploadUri)
                 .bodyStream(new BufferedInputStream(new ZeroedInputStream(_10M), _10M), org.apache.http.entity.ContentType.DEFAULT_BINARY);
         if (accessToken != null) {
-            request.addHeader("Authorization", accessToken.serialize());
+            request.addHeader("Authorization", accessToken.asString());
         }
         response = request.execute().returnResponse();
     }
@@ -219,7 +219,7 @@ public class UploadStepdefs {
         DocumentContext jsonPath = JsonPath.parse(response.getEntity().getContent());
         Request request = Request.Get(baseUri(mainStepdefs.jmapServer).setPath("/download/" + jsonPath.<String>read("blobId")).build());
         if (accessToken != null) {
-            request.addHeader("Authorization", accessToken.serialize());
+            request.addHeader("Authorization", accessToken.asString());
         }
         response = request.execute().returnResponse();
         httpAuthorizedStatus();
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
index 5106af9..6321753 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/UserStepdefs.java
@@ -33,7 +33,7 @@ import java.util.Set;
 import javax.inject.Inject;
 
 import org.apache.james.core.Username;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.fge.lambdas.runnable.ThrowingRunnable;
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
index bc64e4e..9360240 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
@@ -35,7 +35,7 @@ import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.isAnyMessageFoundInRecipientsMailboxes;
-import static org.apache.james.jmap.JmapURIBuilder.baseUri;
+import static org.apache.james.jmap.LocalHostURIBuilder.baseUri;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
index 3a08205..3a8da2b 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
@@ -39,7 +39,7 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.jmap.AccessToken;
-import org.apache.james.jmap.JmapURIBuilder;
+import org.apache.james.jmap.LocalHostURIBuilder;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.JmapJamesServerContract;
 import org.apache.james.modules.AwsS3BlobStoreExtension;
@@ -110,7 +110,7 @@ class ReindexingWithEventDeadLettersTest {
 
         webAdminApi = WebAdminUtils.spec(jamesServer.getProbe(WebAdminGuiceProbe.class).getWebAdminPort());
 
-        aliceAccessToken = authenticateJamesUser(JmapURIBuilder.baseUri(jmapPort), ALICE, ALICE_PASSWORD);
+        aliceAccessToken = authenticateJamesUser(LocalHostURIBuilder.baseUri(jmapPort), ALICE, ALICE_PASSWORD);
 
         dockerElasticSearch.getDockerES().pause();
         Thread.sleep(Duration.TEN_SECONDS.getValueInMS()); // Docker pause is asynchronous and we found no way to poll for it
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index 1cfb5e2..7d1767f 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -33,7 +33,7 @@ import static org.apache.james.jmap.JmapCommonRequests.getAllMailboxesIds;
 import static org.apache.james.jmap.JmapCommonRequests.getLastMessageId;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
-import static org.apache.james.jmap.JmapURIBuilder.baseUri;
+import static org.apache.james.jmap.LocalHostURIBuilder.baseUri;
 import static org.apache.james.mailbox.backup.ZipAssert.EntryChecks.hasName;
 import static org.apache.james.mailbox.backup.ZipAssert.assertThatZip;
 import static org.apache.james.webadmin.integration.vault.DeletedMessagesVaultRequests.deleteFromVault;
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
index cd38122..3f4b3b6 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
@@ -30,7 +30,7 @@ import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.deleteMessages;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
-import static org.apache.james.jmap.JmapURIBuilder.baseUri;
+import static org.apache.james.jmap.LocalHostURIBuilder.baseUri;
 import static org.apache.james.linshare.LinshareFixture.MATCH_ALL_QUERY;
 import static org.apache.james.linshare.LinshareFixture.USER_1;
 import static org.apache.james.mailbox.backup.ZipAssert.assertThatZip;
diff --git a/server/testing/src/main/java/org/apache/james/jmap/JmapURIBuilder.java b/server/testing/src/main/java/org/apache/james/jmap/LocalHostURIBuilder.java
similarity index 97%
rename from server/testing/src/main/java/org/apache/james/jmap/JmapURIBuilder.java
rename to server/testing/src/main/java/org/apache/james/jmap/LocalHostURIBuilder.java
index aed6767..e920ffd 100644
--- a/server/testing/src/main/java/org/apache/james/jmap/JmapURIBuilder.java
+++ b/server/testing/src/main/java/org/apache/james/jmap/LocalHostURIBuilder.java
@@ -23,7 +23,7 @@ import java.nio.charset.StandardCharsets;
 import org.apache.http.client.utils.URIBuilder;
 import org.apache.james.util.Port;
 
-public class JmapURIBuilder {
+public class LocalHostURIBuilder {
 
     public static URIBuilder baseUri(Port jmapPort) {
         return new URIBuilder()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 01/14: JAMES-3012 Temporally duplicating classes for common JMAP used in tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8d92187babf198a0430ab3183d4de920e322451d
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Dec 13 10:41:09 2019 +0700

    JAMES-3012 Temporally duplicating classes for common JMAP used in tests
    
    More precise - integration tests. The will be an attempt to move some
    test class in jmap-integration-tests to where they should belong to -
    webadmin-integration-tests.
    
    To make it become smooth, I need to extract some common classes to a
    generic maven module which is james-server-testing.
    
    This is the first step, afterward is moving, and the last is cleaning
---
 server/testing/pom.xml                             |  17 +-
 .../java/org/apache/james/jmap/AccessToken.java    |  40 ++++
 .../apache/james/jmap/HttpJmapAuthentication.java  |  73 ++++++++
 .../apache/james/jmap/JMAPTestingConstants.java    |  68 +++++++
 .../org/apache/james/jmap/JmapCommonRequests.java  | 206 +++++++++++++++++++++
 .../java/org/apache/james/jmap/JmapURIBuilder.java |  35 ++++
 6 files changed, 435 insertions(+), 4 deletions(-)

diff --git a/server/testing/pom.xml b/server/testing/pom.xml
index b0d3e9a..d981af7 100644
--- a/server/testing/pom.xml
+++ b/server/testing/pom.xml
@@ -48,6 +48,14 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-net</groupId>
+            <artifactId>commons-net</artifactId>
+        </dependency>
+        <dependency>
             <groupId>io.rest-assured</groupId>
             <artifactId>rest-assured</artifactId>
         </dependency>
@@ -57,12 +65,13 @@
             <version>3.6.1</version>
         </dependency>
         <dependency>
-            <groupId>org.awaitility</groupId>
-            <artifactId>awaitility</artifactId>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>fluent-hc</artifactId>
+            <version>4.5.10</version>
         </dependency>
         <dependency>
-            <groupId>commons-net</groupId>
-            <artifactId>commons-net</artifactId>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
         </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
diff --git a/server/testing/src/main/java/org/apache/james/jmap/AccessToken.java b/server/testing/src/main/java/org/apache/james/jmap/AccessToken.java
new file mode 100644
index 0000000..0e9969d
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/jmap/AccessToken.java
@@ -0,0 +1,40 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap;
+
+import com.google.common.annotations.VisibleForTesting;
+
+@VisibleForTesting
+public class AccessToken {
+
+    public static AccessToken of(String tokenString) {
+        return new AccessToken(tokenString);
+    }
+
+    private final String token;
+
+    private AccessToken(String token) {
+        this.token = token;
+    }
+
+    public String asString() {
+        return token;
+    }
+}
diff --git a/server/testing/src/main/java/org/apache/james/jmap/HttpJmapAuthentication.java b/server/testing/src/main/java/org/apache/james/jmap/HttpJmapAuthentication.java
new file mode 100644
index 0000000..79e14c9
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/jmap/HttpJmapAuthentication.java
@@ -0,0 +1,73 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap;
+
+import static org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.fluent.Request;
+import org.apache.http.client.fluent.Response;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.james.core.Username;
+import org.hamcrest.core.IsAnything;
+
+import com.jayway.jsonpath.JsonPath;
+
+public class HttpJmapAuthentication {
+
+    public static AccessToken authenticateJamesUser(URIBuilder uriBuilder, Username username, String password) {
+        return calmlyAwait.until(
+            () -> doAuthenticate(uriBuilder, username, password), IsAnything.anything());
+    }
+
+    public static AccessToken doAuthenticate(URIBuilder uriBuilder, Username username, String password) throws ClientProtocolException, IOException, URISyntaxException {
+        String continuationToken = getContinuationToken(uriBuilder, username);
+
+        Response response = postAuthenticate(uriBuilder, password, continuationToken);
+
+        return AccessToken.of(
+            JsonPath.parse(response.returnContent().asString())
+                .read("accessToken"));
+    }
+
+    private static Response postAuthenticate(URIBuilder uriBuilder, String password, String continuationToken) throws ClientProtocolException, IOException, URISyntaxException {
+        return Request.Post(uriBuilder.setPath("/authentication").build())
+                .bodyString("{\"token\": \"" + continuationToken + "\", \"method\": \"password\", \"password\": \"" + password + "\"}", 
+                        ContentType.APPLICATION_JSON)
+                .setHeader("Accept", ContentType.APPLICATION_JSON.getMimeType())
+                .execute();
+    }
+
+    private static String getContinuationToken(URIBuilder uriBuilder, Username username) throws ClientProtocolException, IOException, URISyntaxException {
+        Response response = Request.Post(uriBuilder.setPath("/authentication").build())
+            .bodyString("{\"username\": \"" + username.asString() + "\", \"clientName\": \"Mozilla Thunderbird\", \"clientVersion\": \"42.0\", \"deviceName\": \"Joe Blogg’s iPhone\"}",
+                ContentType.APPLICATION_JSON)
+            .setHeader("Accept", ContentType.APPLICATION_JSON.getMimeType())
+            .execute();
+
+        return JsonPath.parse(response.returnContent().asString())
+            .read("continuationToken");
+    }
+
+}
diff --git a/server/testing/src/main/java/org/apache/james/jmap/JMAPTestingConstants.java b/server/testing/src/main/java/org/apache/james/jmap/JMAPTestingConstants.java
new file mode 100644
index 0000000..b2df5d3
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/jmap/JMAPTestingConstants.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap;
+
+import static io.restassured.config.EncoderConfig.encoderConfig;
+import static io.restassured.config.RestAssuredConfig.newConfig;
+
+import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.james.core.Username;
+import org.awaitility.Awaitility;
+import org.awaitility.Duration;
+import org.awaitility.core.ConditionFactory;
+
+import io.restassured.builder.RequestSpecBuilder;
+import io.restassured.http.ContentType;
+
+public interface JMAPTestingConstants {
+    Duration slowPacedPollInterval = Duration.ONE_HUNDRED_MILLISECONDS;
+    Duration ONE_MILLISECOND = new Duration(1, TimeUnit.MILLISECONDS);
+
+    ConditionFactory calmlyAwait = Awaitility.with()
+        .pollInterval(slowPacedPollInterval)
+        .and().with()
+        .pollDelay(ONE_MILLISECOND)
+        .await();
+
+    RequestSpecBuilder jmapRequestSpecBuilder = new RequestSpecBuilder()
+        .setContentType(ContentType.JSON)
+        .setAccept(ContentType.JSON)
+        .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)));
+
+    String NAME = "[0][0]";
+    String ARGUMENTS = "[0][1]";
+    String FIRST_MAILBOX = ARGUMENTS + ".list[0]";
+    String SECOND_MAILBOX = ARGUMENTS + ".list[1]";
+    String SECOND_NAME = "[1][0]";
+    String SECOND_ARGUMENTS = "[1][1]";
+
+    String DOMAIN = "domain.tld";
+    Username BOB = Username.of("bob@" + DOMAIN);
+    String BOB_PASSWORD = "123456";
+    Username ALICE = Username.of("alice@" + DOMAIN);
+    String ALICE_PASSWORD = "789123";
+    Username CEDRIC = Username.of("cedric@" + DOMAIN);
+    String CEDRIC_PASSWORD = "456789";
+
+
+    String LOCALHOST_IP = "127.0.0.1";
+}
diff --git a/server/testing/src/main/java/org/apache/james/jmap/JmapCommonRequests.java b/server/testing/src/main/java/org/apache/james/jmap/JmapCommonRequests.java
new file mode 100644
index 0000000..3ed86ad
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/jmap/JmapCommonRequests.java
@@ -0,0 +1,206 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap;
+
+import static io.restassured.RestAssured.with;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasKey;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.text.IsEmptyString.emptyOrNullString;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.james.mailbox.Role;
+import org.apache.james.mailbox.model.MailboxId;
+
+import io.restassured.builder.ResponseSpecBuilder;
+import io.restassured.path.json.JsonPath;
+import io.restassured.specification.ResponseSpecification;
+
+public class JmapCommonRequests {
+    private static final String NAME = "[0][0]";
+    private static final String ARGUMENTS = "[0][1]";
+    private static final String NOT_UPDATED = ARGUMENTS + ".notUpdated";
+
+    public static String getOutboxId(AccessToken accessToken) {
+        return getMailboxId(accessToken, Role.OUTBOX);
+    }
+
+    public static String getDraftId(AccessToken accessToken) {
+        return getMailboxId(accessToken, Role.DRAFTS);
+    }
+
+    public static String getMailboxId(AccessToken accessToken, Role role) {
+        return getAllMailboxesIds(accessToken).stream()
+            .filter(mailbox -> mailbox.get("role").equals(role.serialize()))
+            .map(mailbox -> mailbox.get("id"))
+            .findFirst().get();
+    }
+
+    public static List<Map<String, String>> getAllMailboxesIds(AccessToken accessToken) {
+        return with()
+            .header("Authorization", accessToken.asString())
+            .body("[[\"getMailboxes\", {\"properties\": [\"role\", \"name\", \"id\"]}, \"#0\"]]")
+            .post("/jmap")
+        .andReturn()
+            .body()
+            .jsonPath()
+            .getList(ARGUMENTS + ".list");
+    }
+
+    public static boolean isAnyMessageFoundInRecipientsMailboxes(AccessToken recipientToken) {
+        try {
+            with()
+                .header("Authorization", recipientToken.asString())
+                .body("[[\"getMessageList\", {}, \"#0\"]]")
+            .when()
+                .post("/jmap")
+            .then()
+                .statusCode(200)
+                .body(NAME, equalTo("messageList"))
+                .body(ARGUMENTS + ".messageIds", hasSize(1));
+            return true;
+
+        } catch (AssertionError e) {
+            return false;
+        }
+    }
+
+    public static boolean isAnyMessageFoundInRecipientsMailbox(AccessToken recipientToken, MailboxId mailboxId) {
+        try {
+            with()
+                .header("Authorization", recipientToken.asString())
+                .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"]}}, \"#0\"]]")
+            .when()
+                .post("/jmap")
+            .then()
+                .statusCode(200)
+                .body(NAME, equalTo("messageList"))
+                .body(ARGUMENTS + ".messageIds", hasSize(1));
+            return true;
+
+        } catch (AssertionError e) {
+            return false;
+        }
+    }
+
+    public static String getInboxId(AccessToken accessToken) {
+        return getMailboxId(accessToken, Role.INBOX);
+    }
+
+    public static List<String> listMessageIdsForAccount(AccessToken accessToken) {
+        return with()
+                .header("Authorization", accessToken.asString())
+                .body("[[\"getMessageList\", {}, \"#0\"]]")
+                .post("/jmap")
+            .then()
+                .extract()
+                .body()
+                .path(ARGUMENTS + ".messageIds");
+    }
+
+    public static String getLastMessageId(AccessToken accessToken) {
+        return with()
+                .header("Authorization", accessToken.asString())
+                .body("[[\"getMessageList\", {\"sort\":[\"date desc\"]}, \"#0\"]]")
+                .post("/jmap")
+            .then()
+                .extract()
+                .body()
+                .path(ARGUMENTS + ".messageIds[0]");
+    }
+
+    public static String getLatestMessageId(AccessToken accessToken, Role mailbox) {
+        String inboxId = getMailboxId(accessToken, mailbox);
+        return with()
+                .header("Authorization", accessToken.asString())
+                .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + inboxId + "\"]}, \"sort\":[\"date desc\"]}, \"#0\"]]")
+                .post("/jmap")
+            .then()
+                .extract()
+                .path(ARGUMENTS + ".messageIds[0]");
+    }
+
+    public static String bodyOfMessage(AccessToken accessToken, String messageId) {
+        return getMessageContent(accessToken, messageId)
+                .get(ARGUMENTS + ".list[0].textBody");
+    }
+
+    public static List<String> receiversOfMessage(AccessToken accessToken, String messageId) {
+        return getMessageContent(accessToken, messageId)
+                .getList(ARGUMENTS + ".list[0].to.email");
+    }
+
+    private static JsonPath getMessageContent(AccessToken accessToken, String messageId) {
+        return with()
+                .header("Authorization", accessToken.asString())
+                .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]")
+            .when()
+                .post("/jmap")
+            .then()
+                .statusCode(200)
+                .body(NAME, equalTo("messages"))
+                .body(ARGUMENTS + ".list", hasSize(1))
+            .extract()
+                .jsonPath();
+    }
+
+    public static List<String> listMessageIdsInMailbox(AccessToken accessToken, String mailboxId) {
+        return with()
+                .header("Authorization", accessToken.asString())
+                .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId + "\"]}}, \"#0\"]]")
+                .post("/jmap")
+            .then()
+                .extract()
+                .body()
+                .path(ARGUMENTS + ".messageIds");
+    }
+
+    public static ResponseSpecification getSetMessagesUpdateOKResponseAssertions(String messageId) {
+        ResponseSpecBuilder builder = new ResponseSpecBuilder()
+            .expectStatusCode(200)
+            .expectBody(NAME, equalTo("messagesSet"))
+            .expectBody(ARGUMENTS + ".updated", hasSize(1))
+            .expectBody(ARGUMENTS + ".updated", contains(messageId))
+            .expectBody(ARGUMENTS + ".error", is(emptyOrNullString()))
+            .expectBody(NOT_UPDATED, not(hasKey(messageId)));
+        return builder.build();
+    }
+
+    public static void deleteMessages(AccessToken accessToken, List<String> idsToDestroy) {
+        String idString = concatMessageIds(idsToDestroy);
+
+        with()
+            .header("Authorization", accessToken.asString())
+            .body("[[\"setMessages\", {\"destroy\": [" + idString + "]}, \"#0\"]]")
+            .post("/jmap");
+    }
+
+    public static String concatMessageIds(List<String> ids) {
+        return ids.stream()
+            .map(id -> "\"" + id + "\"")
+            .collect(Collectors.joining(","));
+    }
+}
diff --git a/server/testing/src/main/java/org/apache/james/jmap/JmapURIBuilder.java b/server/testing/src/main/java/org/apache/james/jmap/JmapURIBuilder.java
new file mode 100644
index 0000000..aed6767
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/jmap/JmapURIBuilder.java
@@ -0,0 +1,35 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.jmap;
+
+import java.nio.charset.StandardCharsets;
+
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.james.util.Port;
+
+public class JmapURIBuilder {
+
+    public static URIBuilder baseUri(Port jmapPort) {
+        return new URIBuilder()
+            .setScheme("http")
+            .setHost("localhost")
+            .setPort(jmapPort.getValue())
+            .setCharset(StandardCharsets.UTF_8);
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 05/14: JAMES-3012 Move ReindexingWithEventDeadLettersTest to webadmin-integration-tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 35d05230cbb054eabe16955f10a3342d72a33050
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Fri Dec 13 14:39:20 2019 +0700

    JAMES-3012 Move ReindexingWithEventDeadLettersTest to webadmin-integration-tests
---
 server/protocols/webadmin-integration-test/pom.xml |  5 ---
 .../ReindexingWithEventDeadLettersTest.java        | 36 ++++++++++++----------
 2 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index 87fd9e0..4a48fe4 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -184,10 +184,5 @@
             <artifactId>testcontainers</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.james</groupId>
-            <artifactId>james-server-jmap-draft-integration-testing</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 </project>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/ReindexingWithEventDeadLettersTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
similarity index 84%
rename from server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/ReindexingWithEventDeadLettersTest.java
rename to server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
index c7ebe8a..3a08205 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/ReindexingWithEventDeadLettersTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
@@ -17,17 +17,16 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.rabbitmq;
+package org.apache.james.webadmin.integration;
 
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE;
+import static org.apache.james.jmap.JMAPTestingConstants.ALICE_PASSWORD;
+import static org.apache.james.jmap.JMAPTestingConstants.DOMAIN;
+import static org.apache.james.jmap.JMAPTestingConstants.jmapRequestSpecBuilder;
 import static org.apache.james.jmap.JmapCommonRequests.getDraftId;
 import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount;
-import static org.apache.james.jmap.JmapURIBuilder.baseUri;
-import static org.apache.james.jmap.TestingConstants.ALICE;
-import static org.apache.james.jmap.TestingConstants.ALICE_PASSWORD;
-import static org.apache.james.jmap.TestingConstants.DOMAIN;
-import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
 
@@ -39,13 +38,15 @@ import org.apache.james.DockerElasticSearchExtension;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
-import org.apache.james.jmap.api.access.AccessToken;
+import org.apache.james.jmap.AccessToken;
+import org.apache.james.jmap.JmapURIBuilder;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.JmapJamesServerContract;
 import org.apache.james.modules.AwsS3BlobStoreExtension;
 import org.apache.james.modules.RabbitMQExtension;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.objectstorage.PayloadCodecFactory;
+import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminConfiguration;
@@ -54,6 +55,7 @@ import org.awaitility.Awaitility;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -74,12 +76,12 @@ class ReindexingWithEventDeadLettersTest {
     private static final DockerElasticSearchExtension dockerElasticSearch = new DockerElasticSearchExtension().withRequestTimeout(java.time.Duration.ofSeconds(1));
 
     private static final JamesServerBuilder.ServerProvider CONFIGURATION_BUILDER = configuration -> GuiceJamesServer
-            .forConfiguration(configuration)
-            .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
-            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-            .overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE)
-            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class)
-                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
+        .forConfiguration(configuration)
+        .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
+        .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+        .overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE)
+        .overrideWith(binder -> binder.bind(WebAdminConfiguration.class)
+            .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
 
     @RegisterExtension
     JamesServerExtension testExtension = new JamesServerBuilder()
@@ -100,19 +102,21 @@ class ReindexingWithEventDeadLettersTest {
             .addDomain(DOMAIN)
             .addUser(ALICE.asString(), ALICE_PASSWORD);
 
+        Port jmapPort = Port.of(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort());
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapPort.getValue())
             .build();
         RestAssured.defaultParser = Parser.JSON;
 
         webAdminApi = WebAdminUtils.spec(jamesServer.getProbe(WebAdminGuiceProbe.class).getWebAdminPort());
 
-        aliceAccessToken = authenticateJamesUser(baseUri(jamesServer), ALICE, ALICE_PASSWORD);
+        aliceAccessToken = authenticateJamesUser(JmapURIBuilder.baseUri(jmapPort), ALICE, ALICE_PASSWORD);
 
         dockerElasticSearch.getDockerES().pause();
         Thread.sleep(Duration.TEN_SECONDS.getValueInMS()); // Docker pause is asynchronous and we found no way to poll for it
     }
 
+    @Disabled("JAMES-3011 It's already fails for a long time, but CI didn't detect this when it's not marked as BasicFeature")
     @Test
     void indexationShouldBeFailingWhenElasticSearchContainerIsPaused() throws Exception {
         aliceSavesADraft();
@@ -170,7 +174,7 @@ class ReindexingWithEventDeadLettersTest {
             "]";
 
         with()
-            .header("Authorization", aliceAccessToken.serialize())
+            .header("Authorization", aliceAccessToken.asString())
             .body(requestBody)
             .post("/jmap");
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 14/14: JAMES-3012 Fixing ghost mailbox test is a webadmin integration test

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e603bb3ab8f57388626cd4b87af2c12120111d5f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 18 11:21:27 2019 +0700

    JAMES-3012 Fixing ghost mailbox test is a webadmin integration test
---
 .../rabbitmq}/FixingGhostMailboxTest.java            | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
similarity index 94%
rename from server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
rename to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
index a51febe..05bef4e 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/FixingGhostMailboxTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james;
+package org.apache.james.webadmin.integration.rabbitmq;
 
 import static com.datastax.driver.core.querybuilder.QueryBuilder.delete;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
@@ -27,7 +27,7 @@ import static io.restassured.config.EncoderConfig.encoderConfig;
 import static io.restassured.config.RestAssuredConfig.newConfig;
 import static org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
-import static org.apache.james.jmap.JmapURIBuilder.baseUri;
+import static org.apache.james.jmap.LocalHostURIBuilder.baseUri;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -41,9 +41,15 @@ import static org.hamcrest.Matchers.nullValue;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
+import org.apache.james.CassandraExtension;
+import org.apache.james.DockerElasticSearchExtension;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.JamesServerBuilder;
+import org.apache.james.JamesServerExtension;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.cassandra.mail.task.MailboxMergingTask;
 import org.apache.james.mailbox.cassandra.table.CassandraMailboxPathV2Table;
@@ -63,12 +69,14 @@ import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.server.CassandraProbe;
 import org.apache.james.task.TaskManager;
 import org.apache.james.util.Host;
+import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.CassandraMailboxMergingRoutes;
 import org.apache.james.webadmin.routes.TasksRoutes;
+import org.junit.experimental.categories.Category;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -81,7 +89,8 @@ import io.restassured.builder.RequestSpecBuilder;
 import io.restassured.http.ContentType;
 import io.restassured.specification.RequestSpecification;
 
-public class FixingGhostMailboxTest {
+@Category(BasicFeature.class)
+class FixingGhostMailboxTest {
     private static final int LIMIT_TO_10_MESSAGES = 10;
     private static final String NAME = "[0][0]";
     private static final String ARGUMENTS = "[0][1]";
@@ -124,11 +133,12 @@ public class FixingGhostMailboxTest {
         mailboxProbe = server.getProbe(MailboxProbeImpl.class);
         aclProbe = server.getProbe(ACLProbeImpl.class);
 
+        Port jmapPort = server.getProbe(JmapGuiceProbe.class).getJmapPort();
         RestAssured.requestSpecification = new RequestSpecBuilder()
             .setContentType(ContentType.JSON)
             .setAccept(ContentType.JSON)
             .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-            .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapPort.getValue())
             .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
         webadminSpecification = WebAdminUtils.buildRequestSpecification(webAdminProbe.getWebAdminPort())
@@ -138,7 +148,7 @@ public class FixingGhostMailboxTest {
             .addDomain(DOMAIN)
             .addUser(ALICE, ALICE_SECRET)
             .addUser(BOB, BOB_SECRET);
-        accessToken = authenticateJamesUser(baseUri(server), Username.of(ALICE), ALICE_SECRET);
+        accessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(ALICE), ALICE_SECRET);
 
         Host cassandraHost = dockerCassandra.getCassandra().getHost();
         session = Cluster.builder()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 12/14: JAMES-3012 Optimize imports in SpamAssassin module

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3a705b9113061d76f7baef1f32ea9053ff2c7a0d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 18 04:56:46 2019 +0100

    JAMES-3012 Optimize imports in SpamAssassin module
---
 .../james/jmap/draft/methods/integration/SpamAssassinModule.java    | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java
index c1edd25..e85f3f1 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinModule.java
@@ -23,13 +23,7 @@ import java.util.Optional;
 import javax.inject.Singleton;
 
 import org.apache.commons.configuration2.BaseConfiguration;
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.SystemMailboxesProvider;
-import org.apache.james.mailbox.events.MailboxListener;
-import org.apache.james.mailbox.spamassassin.SpamAssassin;
 import org.apache.james.mailbox.spamassassin.SpamAssassinConfiguration;
-import org.apache.james.mailbox.spamassassin.SpamAssassinListener;
-import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailetcontainer.impl.MailetConfigImpl;
 import org.apache.james.spamassassin.SpamAssassinExtension;
 import org.apache.james.util.Host;


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 08/14: JAMES-3012 Moving BasicFeature to a generic maven module

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 161acd65cdcecb37fed302ef9a929003c9e6759d
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Mon Dec 16 19:38:59 2019 +0700

    JAMES-3012 Moving BasicFeature to a generic maven module
---
 .../pom.xml                                        |  2 +-
 .../apache/james/jmap/JMAPAuthenticationTest.java  |  2 +-
 .../org/apache/james/jmap/ProvisioningTest.java    |  2 +-
 .../apache/james/jmap/VacationIntegrationTest.java |  2 +-
 .../james/jmap/VacationRelayIntegrationTest.java   |  2 +-
 .../jmap/draft/methods/integration/FilterTest.java |  2 +-
 .../integration/GetMailboxesMethodTest.java        |  2 +-
 .../integration/GetMessageListMethodTest.java      |  2 +-
 .../integration/GetVacationResponseTest.java       |  2 +-
 .../methods/integration/QuotaMailingTest.java      |  2 +-
 .../methods/integration/SendMDNMethodTest.java     |  2 +-
 .../integration/SetMailboxesMethodTest.java        |  2 +-
 .../methods/integration/SetMessagesMethodTest.java |  2 +-
 .../integration/SetVacationResponseTest.java       |  2 +-
 .../pom.xml                                        |  2 +-
 .../james/junit/categories/BasicFeature.java       | 27 ++++++++++++++++++++++
 16 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
index 9330511..ffd1d39 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/pom.xml
@@ -225,7 +225,7 @@
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 2 hours, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
-                    <groups combine.self="override">org.apache.james.jmap.categories.CassandraAndElasticSearchCategory,org.apache.james.jmap.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
+                    <groups combine.self="override">org.apache.james.jmap.categories.CassandraAndElasticSearchCategory,org.apache.james.junit.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
index e7931ee..8368792 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
@@ -33,9 +33,9 @@ import java.time.format.DateTimeFormatter;
 import java.util.UUID;
 
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.model.ContinuationToken;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.utils.DataProbeImpl;
 import org.junit.After;
 import org.junit.Before;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
index 26bdf50..37795e1 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
@@ -34,8 +34,8 @@ import java.time.Duration;
 
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
index a39a5e2..5f5df91 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
@@ -42,8 +42,8 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.VacationPatch;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.probe.MailboxProbe;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
index 3bdb843..4402cb0 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
@@ -32,8 +32,8 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.dnsservice.api.InMemoryDNSService;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.VacationPatch;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.probe.MailboxProbe;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
index 2b377b0..a99995a 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
@@ -46,8 +46,8 @@ import java.util.Locale;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.JmapCommonRequests;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.modules.MailboxProbeImpl;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
index 3fef5aa..41d14b3 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
@@ -58,9 +58,9 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.quota.QuotaCountLimit;
 import org.apache.james.core.quota.QuotaSizeLimit;
 import org.apache.james.jmap.AccessToken;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.model.mailbox.MailboxNamespace;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.MessageManager.AppendCommand;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
index 601d2ed..88f792e 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
@@ -62,10 +62,10 @@ import javax.mail.Flags;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.AccessToken;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.categories.CassandraAndElasticSearchCategory;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.model.Number;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageManager;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
index 2733f67..c8399ab 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
@@ -40,8 +40,8 @@ import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.FixedDateZonedDateTimeProvider;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.VacationPatch;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 import org.apache.james.utils.DataProbeImpl;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
index 6412336..47acc19 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
@@ -40,8 +40,8 @@ import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.core.quota.QuotaSizeLimit;
 import org.apache.james.jmap.AccessToken;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.SerializableQuotaLimitValue;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
index 100023b..bc85911 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
@@ -49,8 +49,8 @@ import org.apache.james.core.Username;
 import org.apache.james.core.quota.QuotaSizeLimit;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.MessageAppender;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxConstants;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
index 8a24c6f..ac6bb8c 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
@@ -49,9 +49,9 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.AccessToken;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.categories.CassandraAndElasticSearchCategory;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.model.MailboxACL;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
index 8ed6dcd..4c9bf25 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
@@ -78,9 +78,9 @@ import org.apache.james.core.quota.QuotaSizeLimit;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.HttpJmapAuthentication;
 import org.apache.james.jmap.MessageAppender;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.MessageIdProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.Role;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
index 914d26e..3db1858 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
@@ -39,8 +39,8 @@ import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.api.vacation.AccountId;
 import org.apache.james.jmap.api.vacation.Vacation;
 import org.apache.james.jmap.api.vacation.VacationPatch;
-import org.apache.james.jmap.categories.BasicFeature;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.util.ValuePatch;
 import org.apache.james.utils.DataProbeImpl;
 import org.junit.After;
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
index 6dea7f9..904ff8b 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/pom.xml
@@ -173,7 +173,7 @@
                     <reuseForks>true</reuseForks>
                     <!-- Fail tests longer than 2 hours, prevent form random locking tests -->
                     <forkedProcessTimeoutInSeconds>7200</forkedProcessTimeoutInSeconds>
-                    <groups combine.self="override">org.apache.james.jmap.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
+                    <groups combine.self="override">org.apache.james.junit.categories.BasicFeature,org.apache.james.jmap.categories.EnableCucumber</groups>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/server/testing/src/main/java/org/apache/james/junit/categories/BasicFeature.java b/server/testing/src/main/java/org/apache/james/junit/categories/BasicFeature.java
new file mode 100644
index 0000000..655f7db
--- /dev/null
+++ b/server/testing/src/main/java/org/apache/james/junit/categories/BasicFeature.java
@@ -0,0 +1,27 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.junit.categories;
+
+/**
+ * Category marker for Junit 4 conditional execution
+ * Marks tests that should be run on every product
+ */
+public interface BasicFeature {
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 07/14: JAMES-3012 Split webadmin-integration-test into common, memory, distributed

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8c29dd3fdde217a8ee90e933d79f9a6cbcb57a72
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Mon Dec 16 19:26:56 2019 +0700

    JAMES-3012 Split webadmin-integration-test into common, memory,
    distributed
    
    This is an attempt to setup the test model alike jmap integration test
    structure. There are some tests have been disabled with a JIRA ticket
    to fix them in the future. They are not the priority for now
---
 pom.xml                                            |   5 +
 .../distributed-webadmin-integration-test/pom.xml  |  94 ++++++++++
 .../rabbitmq/RabbitMQAuthorizedEndpointsTest.java} |  37 ++--
 .../RabbitMQEventDeadLettersIntegrationTest.java}  |  27 +--
 .../rabbitmq/RabbitMQForwardIntegrationTest.java}  |  39 ++--
 .../rabbitmq/RabbitMQJmapExtension.java}           |   9 +-
 .../RabbitMQJwtFilterIntegrationTest.java}         |  40 ++--
 ...abbitMQReindexingWithEventDeadLettersTest.java} |  22 ++-
 .../RabbitMQUnauthorizedEndpointsTest.java         | 120 ++++++++++++
 .../RabbitMQWebAdminServerIntegrationTest.java     | 154 +++++++++++++++
 ...minServerTaskSerializationIntegrationTest.java} |  12 +-
 ...RabbitMQDeletedMessageVaultIntegrationTest.java |  54 ++++++
 ...LinshareBlobExportMechanismIntegrationTest.java |  59 ++++++
 .../src/test/resources/dnsservice.xml              |   0
 .../src/test/resources/domainlist.xml              |   0
 .../src/test/resources/imapserver.xml              |   0
 .../src/test/resources/jwt_publickey               |   0
 .../src/test/resources/keystore                    | Bin
 .../src/test/resources/listeners.xml}              |  38 +++-
 .../src/test/resources/lmtpserver.xml              |   0
 .../src/test/resources/mailetcontainer.xml         |   0
 .../src/test/resources/mailrepositorystore.xml     |   0
 .../src/test/resources/managesieveserver.xml       |   0
 .../src/test/resources/pop3server.xml              |   0
 .../src/test/resources/smtpserver.xml              |   0
 .../memory-webadmin-integration-test/pom.xml       |  66 +++++++
 .../memory/MemoryAuthorizedEndpointsTest.java}     |  35 ++--
 .../memory/MemoryForwardIntegrationTest.java}      |  35 ++--
 .../memory/MemoryJwtFilterIntegrationTest.java}    |  38 ++--
 .../memory/MemoryUnauthorizedEndpointsTest.java    |  46 +++++
 .../MemoryWebAdminServerIntegrationTest.java}      |  33 ++--
 .../MemoryDeletedMessageVaultIntegrationTest.java} |  41 ++--
 ...LinshareBlobExportMechanismIntegrationTest.java |  48 +++++
 .../src/test/resources/dnsservice.xml              |   0
 .../src/test/resources/domainlist.xml              |   0
 .../src/test/resources/imapserver.xml              |   0
 .../src/test/resources/jwt_publickey               |   0
 .../src/test/resources/keystore                    | Bin
 .../src/test/resources/listeners.xml}              |  35 +++-
 .../src/test/resources/lmtpserver.xml              |   0
 .../src/test/resources/mailetcontainer.xml         |   6 +-
 .../src/test/resources/mailrepositorystore.xml     |   4 +-
 .../src/test/resources/managesieveserver.xml       |   0
 .../src/test/resources/pop3server.xml              |   0
 .../src/test/resources/smtpserver.xml              |   0
 server/protocols/webadmin-integration-test/pom.xml | 174 ++---------------
 .../integration/UnauthorizedEndpointsTest.java     | 206 ---------------------
 .../{ => webadmin-integration-test-common}/pom.xml |  97 +++-------
 .../integration/AuthorizedEndpointsTest.java       |  15 +-
 .../integration/ForwardIntegrationTest.java        |  15 +-
 .../integration/JwtFilterIntegrationTest.java      |  19 +-
 .../integration/UnauthorizedEndpointsTest.java     | 197 ++++++++++++++++++++
 .../webadmin/integration/UnauthorizedModule.java   |   0
 .../integration/WebAdminServerIntegrationTest.java | 123 +-----------
 .../vault/DeletedMessageVaultIntegrationTest.java  |  40 ++--
 .../vault/DeletedMessagesVaultRequests.java        |   0
 .../webadmin/integration/vault/ExportRequest.java  |   0
 ...LinshareBlobExportMechanismIntegrationTest.java |  35 +---
 58 files changed, 1155 insertions(+), 863 deletions(-)

diff --git a/pom.xml b/pom.xml
index e60eb90..1245413 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1818,6 +1818,11 @@
             </dependency>
             <dependency>
                 <groupId>${james.groupId}</groupId>
+                <artifactId>james-server-webadmin-integration-test-common</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${james.groupId}</groupId>
                 <artifactId>james-server-webadmin-mailbox</artifactId>
                 <version>${project.version}</version>
             </dependency>
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
new file mode 100644
index 0000000..8c2b542
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.james</groupId>
+        <artifactId>webadmin-integration-test</artifactId>
+        <version>3.5.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>rabbitmq-webadmin-integration-test</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Apache James :: Server :: Web Admin server integration tests :: Distributed</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>apache-james-backends-cassandra</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>apache-james-backends-rabbitmq</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>apache-james-mailbox-elasticsearch</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>blob-objectstorage</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>blob-objectstorage-guice</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-cassandra-guice</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-webadmin-cassandra-data</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-webadmin-integration-test-common</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java
similarity index 56%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java
index ecd725a..56f2c6c 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java
@@ -16,32 +16,29 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.rabbitmq;
 
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.junit.categories.BasicFeature;
+import org.apache.james.webadmin.integration.AuthorizedEndpointsTest;
+import org.apache.james.webadmin.integration.UnauthorizedModule;
+import org.junit.Rule;
+import org.junit.experimental.categories.Category;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+@Category(BasicFeature.class)
+public class RabbitMQAuthorizedEndpointsTest extends AuthorizedEndpointsTest {
 
-import spark.Request;
-import spark.Response;
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
 
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
-    }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
+    protected GuiceJamesServer createJamesServer() throws Exception {
+        return jamesTestRule.jmapServer(cassandra.getModule(), new UnauthorizedModule());
     }
 }
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
similarity index 97%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java
rename to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
index 1550438..d9990fc 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/EventDeadLettersIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.webadmin.integration;
+package org.apache.james.webadmin.integration.rabbitmq;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.when;
@@ -27,7 +27,6 @@ import static org.awaitility.Duration.ONE_MINUTE;
 import static org.awaitility.Duration.TEN_SECONDS;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.Matchers.containsInAnyOrder;
-import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.hamcrest.Matchers.hasSize;
 
 import java.util.ArrayList;
@@ -41,6 +40,7 @@ import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
 import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.events.Event;
 import org.apache.james.mailbox.events.Group;
@@ -63,14 +63,15 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import com.google.inject.multibindings.Multibinder;
 
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 
-public class EventDeadLettersIntegrationTest {
-
+@Category(BasicFeature.class)
+public class RabbitMQEventDeadLettersIntegrationTest {
     public static class RetryEventsListenerGroup extends Group {
 
     }
@@ -140,6 +141,11 @@ public class EventDeadLettersIntegrationTest {
 
     private static final MailboxPath BOB_INBOX_PATH = MailboxPath.inbox(Username.of(BOB));
 
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+
     private Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS;
     private ConditionFactory calmlyAwait = Awaitility.with()
         .pollInterval(slowPacedPollInterval)
@@ -149,13 +155,6 @@ public class EventDeadLettersIntegrationTest {
         .await();
     private ConditionFactory awaitAtMostTenSeconds = calmlyAwait.atMost(10, TimeUnit.SECONDS);
     private RetryEventsListener retryEventsListener;
-
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
-
     private GuiceJamesServer guiceJamesServer;
     private MailboxProbeImpl mailboxProbe;
 
@@ -163,7 +162,9 @@ public class EventDeadLettersIntegrationTest {
     public void setUp() throws Exception {
         retryEventsListener = new RetryEventsListener();
         guiceJamesServer = jamesTestRule.jmapServer(cassandra.getModule())
-            .overrideWith(binder -> Multibinder.newSetBinder(binder, MailboxListener.GroupMailboxListener.class).addBinding().toInstance(retryEventsListener));
+            .overrideWith(binder -> Multibinder.newSetBinder(binder, MailboxListener.GroupMailboxListener.class)
+                .addBinding()
+                .toInstance(retryEventsListener));
         guiceJamesServer.start();
 
         DataProbe dataProbe = guiceJamesServer.getProbe(DataProbeImpl.class);
@@ -357,6 +358,7 @@ public class EventDeadLettersIntegrationTest {
             .statusCode(HttpStatus.NOT_FOUND_404);
     }
 
+    @Category(BasicFeature.class)
     @Test
     public void failedEventShouldBeCorrectlyProcessedByListenerAfterSuccessfulRedelivery() throws InterruptedException {
         retryEventsListener.callsPerEventBeforeSuccess(MAX_RETRIES + 1);
@@ -505,6 +507,7 @@ public class EventDeadLettersIntegrationTest {
             .body(".", hasSize(0));
     }
 
+    @Category(BasicFeature.class)
     @Test
     public void multipleFailedEventsShouldBeCorrectlyProcessedByListenerAfterSuccessfulAllRedelivery() {
         retryEventsListener.callsPerEventBeforeSuccess(MAX_RETRIES + 1);
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java
similarity index 57%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java
index ecd725a..2631c15 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java
@@ -16,32 +16,29 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.rabbitmq;
 
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import java.io.IOException;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.ForwardIntegrationTest;
+import org.junit.Rule;
 
-import spark.Request;
-import spark.Response;
+public class RabbitMQForwardIntegrationTest extends ForwardIntegrationTest {
 
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
+    public GuiceJamesServer createJmapServer() throws IOException {
+        return rule.jmapServer(cassandra.getModule(),
+            binder -> binder.bind(WebAdminConfiguration.class)
+                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
     }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
-    }
-}
\ No newline at end of file
+}
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/CassandraJmapExtension.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJmapExtension.java
similarity index 96%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/CassandraJmapExtension.java
rename to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJmapExtension.java
index 2316abd..1751b99 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/CassandraJmapExtension.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJmapExtension.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
+package org.apache.james.webadmin.integration.rabbitmq;
 
 import java.io.IOException;
 import java.util.Optional;
@@ -39,6 +39,7 @@ import org.apache.james.server.core.configuration.Configuration;
 import org.apache.james.util.FunctionalUtils;
 import org.apache.james.util.Runnables;
 import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.UnauthorizedModule;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
@@ -51,7 +52,7 @@ import org.junit.rules.TemporaryFolder;
 
 import com.github.fge.lambdas.Throwing;
 
-public class CassandraJmapExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
+public class RabbitMQJmapExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
 
     public interface JamesLifeCyclePolicy {
         JamesLifeCyclePolicy FOR_EACH_TEST = serverSupplier -> JamesLifecycleHandler.builder()
@@ -136,11 +137,11 @@ public class CassandraJmapExtension implements BeforeAllCallback, AfterAllCallba
     private final JamesLifecycleHandler jamesLifecycleHandler;
     private GuiceJamesServer james;
 
-    public CassandraJmapExtension() {
+    public RabbitMQJmapExtension() {
         this(JamesLifeCyclePolicy.FOR_EACH_TEST);
     }
 
-    public CassandraJmapExtension(JamesLifeCyclePolicy jamesLifeCyclePolicy) {
+    public RabbitMQJmapExtension(JamesLifeCyclePolicy jamesLifeCyclePolicy) {
         this.temporaryFolder = new TemporaryFolder();
         this.cassandra = new DockerCassandraRule();
         this.elasticSearchRule = new DockerElasticSearchRule();
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java
similarity index 54%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java
index ecd725a..77a1e38 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java
@@ -16,32 +16,30 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.rabbitmq;
 
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.jwt.JwtConfiguration;
 import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import org.apache.james.webadmin.authentication.JwtFilter;
+import org.apache.james.webadmin.integration.JwtFilterIntegrationTest;
+import org.junit.Rule;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+public class RabbitMQJwtFilterIntegrationTest extends JwtFilterIntegrationTest {
 
-import spark.Request;
-import spark.Response;
-
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
-    }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
+    protected GuiceJamesServer createJamesServer(JwtConfiguration jwtConfiguration) throws Exception {
+        return jamesTestRule.jmapServer(cassandra.getModule())
+            .overrideWith(binder -> binder.bind(AuthenticationFilter.class).to(JwtFilter.class),
+                binder -> binder.bind(JwtConfiguration.class).toInstance(jwtConfiguration));
     }
-}
\ No newline at end of file
+}
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
similarity index 92%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
rename to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
index 3a8da2b..d5aeafd 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ReindexingWithEventDeadLettersTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.webadmin.integration;
+package org.apache.james.webadmin.integration.rabbitmq;
 
 import static io.restassured.RestAssured.with;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
@@ -42,6 +42,7 @@ import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.LocalHostURIBuilder;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.JmapJamesServerContract;
+import org.apache.james.junit.categories.BasicFeature;
 import org.apache.james.modules.AwsS3BlobStoreExtension;
 import org.apache.james.modules.RabbitMQExtension;
 import org.apache.james.modules.TestJMAPServerModule;
@@ -54,6 +55,7 @@ import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Awaitility;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
+import org.junit.experimental.categories.Category;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -63,8 +65,8 @@ import io.restassured.RestAssured;
 import io.restassured.parsing.Parser;
 import io.restassured.specification.RequestSpecification;
 
-class ReindexingWithEventDeadLettersTest {
-    private static final int LIMIT_TO_10_MESSAGES = 10;
+class RabbitMQReindexingWithEventDeadLettersTest {
+
     private static final String ELASTICSEARCH_LISTENER_GROUP = "org.apache.james.mailbox.elasticsearch.events.ElasticSearchListeningMessageSearchIndex$ElasticSearchListeningMessageSearchIndexGroup";
 
     private static final ConditionFactory CALMLY_AWAIT = Awaitility
@@ -73,7 +75,10 @@ class ReindexingWithEventDeadLettersTest {
         .atMost(Duration.ONE_MINUTE)
         .await();
 
-    private static final DockerElasticSearchExtension dockerElasticSearch = new DockerElasticSearchExtension().withRequestTimeout(java.time.Duration.ofSeconds(1));
+    private static final DockerElasticSearchExtension dockerElasticSearch =
+        new DockerElasticSearchExtension().withRequestTimeout(java.time.Duration.ofSeconds(1));
+
+    private static final int LIMIT_TO_10_MESSAGES = 10;
 
     private static final JamesServerBuilder.ServerProvider CONFIGURATION_BUILDER = configuration -> GuiceJamesServer
         .forConfiguration(configuration)
@@ -84,7 +89,7 @@ class ReindexingWithEventDeadLettersTest {
             .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
 
     @RegisterExtension
-    JamesServerExtension testExtension = new JamesServerBuilder()
+    static JamesServerExtension testExtension = new JamesServerBuilder()
         .extension(dockerElasticSearch)
         .extension(new CassandraExtension())
         .extension(new RabbitMQExtension())
@@ -118,7 +123,7 @@ class ReindexingWithEventDeadLettersTest {
 
     @Disabled("JAMES-3011 It's already fails for a long time, but CI didn't detect this when it's not marked as BasicFeature")
     @Test
-    void indexationShouldBeFailingWhenElasticSearchContainerIsPaused() throws Exception {
+    protected void indexationShouldBeFailingWhenElasticSearchContainerIsPaused() throws Exception {
         aliceSavesADraft();
 
         CALMLY_AWAIT.until(() -> listElasticSearchFailedEvents().size() == 1);
@@ -127,8 +132,9 @@ class ReindexingWithEventDeadLettersTest {
         assertThat(listMessageIdsForAccount(aliceAccessToken)).isEmpty();
     }
 
+    @Category(BasicFeature.class)
     @Test
-    void redeliverShouldReIndexFailedMessages() throws Exception {
+    protected void redeliverShouldReIndexFailedMessages() throws Exception {
         aliceSavesADraft();
         CALMLY_AWAIT.until(() -> listElasticSearchFailedEvents().size() == 1);
 
@@ -139,7 +145,7 @@ class ReindexingWithEventDeadLettersTest {
     }
 
     @Test
-    void redeliverShouldCleanEventDeadLetter() throws Exception {
+    protected void redeliverShouldCleanEventDeadLetter() throws Exception {
         aliceSavesADraft();
         CALMLY_AWAIT.until(() -> listElasticSearchFailedEvents().size() == 1);
 
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
new file mode 100644
index 0000000..a5d757b
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
@@ -0,0 +1,120 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.rabbitmq;
+
+import static io.restassured.RestAssured.when;
+
+import org.apache.james.webadmin.integration.UnauthorizedEndpointsTest;
+import org.apache.james.webadmin.routes.AliasRoutes;
+import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
+import org.apache.james.webadmin.routes.CassandraMigrationRoutes;
+import org.apache.james.webadmin.routes.DLPConfigurationRoutes;
+import org.apache.james.webadmin.routes.DomainMappingsRoutes;
+import org.apache.james.webadmin.routes.DomainQuotaRoutes;
+import org.apache.james.webadmin.routes.DomainsRoutes;
+import org.apache.james.webadmin.routes.EventDeadLettersRoutes;
+import org.apache.james.webadmin.routes.ForwardRoutes;
+import org.apache.james.webadmin.routes.GlobalQuotaRoutes;
+import org.apache.james.webadmin.routes.GroupsRoutes;
+import org.apache.james.webadmin.routes.MailQueueRoutes;
+import org.apache.james.webadmin.routes.MailRepositoriesRoutes;
+import org.apache.james.webadmin.routes.SieveQuotaRoutes;
+import org.apache.james.webadmin.routes.TasksRoutes;
+import org.apache.james.webadmin.routes.UserMailboxesRoutes;
+import org.apache.james.webadmin.routes.UserQuotaRoutes;
+import org.apache.james.webadmin.routes.UserRoutes;
+import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRoutes;
+import org.eclipse.jetty.http.HttpStatus;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+
+class RabbitMQUnauthorizedEndpointsTest extends UnauthorizedEndpointsTest {
+
+    @RegisterExtension
+    static RabbitMQJmapExtension rabbitMQJmapExtension = new RabbitMQJmapExtension(RabbitMQJmapExtension.JamesLifeCyclePolicy.COMMON_TO_ALL_TESTS);
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        CassandraMigrationRoutes.VERSION_BASE,
+        CassandraMigrationRoutes.VERSION_BASE + "/latest",
+        DLPConfigurationRoutes.BASE_PATH + "/james.org",
+        DomainMappingsRoutes.DOMAIN_MAPPINGS,
+        DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
+        DomainQuotaRoutes.BASE_PATH + "/james.org",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/count",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/size",
+        DomainsRoutes.DOMAINS,
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes",
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT,
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
+        UserRoutes.USERS,
+        ForwardRoutes.ROOT_PATH,
+        ForwardRoutes.ROOT_PATH + "/alice@james.org",
+        AliasRoutes.ROOT_PATH,
+        AliasRoutes.ROOT_PATH + "/bob@james.org",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT,
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
+        GroupsRoutes.ROOT_PATH,
+        GroupsRoutes.ROOT_PATH + "/group@james.org",
+        MailQueueRoutes.BASE_URL + "/first_queue",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES,
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/1",
+        SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
+        SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org",
+        TasksRoutes.BASE,
+        TasksRoutes.BASE + "/taskId",
+        TasksRoutes.BASE + "/taskId/await",
+        EventDeadLettersRoutes.BASE_PATH + "/groups",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
+    })
+    @Override
+    public void checkUrlProtectionOnGet(String url) {
+        when()
+            .get(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        CassandraMigrationRoutes.VERSION_BASE + "/upgrade",
+        CassandraMigrationRoutes.VERSION_BASE + "/upgrade/latest",
+        DeletedMessagesVaultRoutes.ROOT_PATH + "/joe@perdu.com",
+        CassandraMappingsRoutes.ROOT_PATH,
+        EventDeadLettersRoutes.BASE_PATH,
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
+    })
+    @Override
+    public void checkUrlProtectionOnPost(String url) {
+        when()
+            .post(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+}
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
new file mode 100644
index 0000000..a291a06
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
@@ -0,0 +1,154 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.rabbitmq;
+
+import static io.restassured.RestAssured.given;
+import static io.restassured.RestAssured.when;
+import static io.restassured.RestAssured.with;
+import static org.apache.james.webadmin.Constants.JSON_CONTENT_TYPE;
+import static org.apache.james.webadmin.Constants.SEPARATOR;
+import static org.hamcrest.CoreMatchers.hasItems;
+import static org.hamcrest.Matchers.is;
+
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
+import org.apache.james.webadmin.integration.WebAdminServerIntegrationTest;
+import org.apache.james.webadmin.routes.AliasRoutes;
+import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
+import org.apache.james.webadmin.routes.TasksRoutes;
+import org.awaitility.Awaitility;
+import org.awaitility.Duration;
+import org.eclipse.jetty.http.HttpStatus;
+import org.junit.Rule;
+import org.junit.Test;
+
+import io.restassured.http.ContentType;
+
+public class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegrationTest {
+
+    private static final String VERSION = "/cassandra/version";
+    private static final String VERSION_LATEST = VERSION + "/latest";
+    private static final String UPGRADE_VERSION = VERSION + "/upgrade";
+    private static final String UPGRADE_TO_LATEST_VERSION = UPGRADE_VERSION + "/latest";
+
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+
+    @Override
+    protected GuiceJamesServer createJamesServer() throws Exception {
+        return jamesTestRule.jmapServer(cassandra.getModule());
+    }
+
+    @Test
+    public void getCurrentVersionShouldReturnNullForCurrentVersionAsBeginning() {
+        when()
+            .get(VERSION)
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .contentType(JSON_CONTENT_TYPE)
+            .body(is("{\"version\":null}"));
+    }
+
+    @Test
+    public void getLatestVersionShouldReturnTheConfiguredLatestVersion() {
+        when()
+            .get(VERSION_LATEST)
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .contentType(JSON_CONTENT_TYPE)
+            .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}"));
+    }
+
+    @Test
+    public void postShouldDoMigrationAndUpdateCurrentVersion() {
+        String taskId = with()
+            .body(String.valueOf(CassandraSchemaVersionManager.MAX_VERSION.getValue()))
+        .post(UPGRADE_VERSION)
+            .jsonPath()
+            .get("taskId");
+
+        with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+
+        Awaitility.await()
+            .atMost(Duration.TEN_SECONDS)
+            .await()
+            .untilAsserted(() ->
+                when()
+                    .get(VERSION)
+                .then()
+                    .statusCode(HttpStatus.OK_200)
+                    .contentType(JSON_CONTENT_TYPE)
+                    .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}")));
+    }
+
+    @Test
+    public void postShouldDoMigrationAndUpdateToTheLatestVersion() {
+        String taskId = with().post(UPGRADE_TO_LATEST_VERSION)
+            .jsonPath()
+            .get("taskId");
+
+        with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+
+        when()
+            .get(VERSION)
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .contentType(JSON_CONTENT_TYPE)
+            .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}"));
+    }
+
+    @Test
+    public void cassandraMappingsEndpointShouldKeepDataConsistencyWhenDataValid() {
+        with()
+            .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_1);
+        with()
+            .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_2);
+
+        String taskId = with()
+            .queryParam("action", "SolveInconsistencies")
+            .post(CassandraMappingsRoutes.ROOT_PATH)
+            .jsonPath()
+            .get("taskId");
+
+        given()
+            .basePath(TasksRoutes.BASE)
+        .when()
+            .get(taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+
+        when()
+            .get(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME)
+        .then()
+            .contentType(ContentType.JSON)
+        .statusCode(HttpStatus.OK_200)
+            .body("source", hasItems(ALIAS_1, ALIAS_2));
+    }
+}
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerTaskSerializationIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
similarity index 99%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerTaskSerializationIntegrationTest.java
rename to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
index 1b1f007..6afa076 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerTaskSerializationIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.webadmin.integration;
+package org.apache.james.webadmin.integration.rabbitmq;
 
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.when;
@@ -26,10 +26,10 @@ import static org.apache.james.webadmin.Constants.SEPARATOR;
 import static org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRoutes.MESSAGE_PATH_PARAM;
 import static org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRoutes.USERS;
 import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.Matchers.anEmptyMap;
 import static org.hamcrest.Matchers.empty;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
+import static org.hamcrest.collection.IsMapWithSize.anEmptyMap;
 
 import java.io.ByteArrayInputStream;
 import java.util.Date;
@@ -85,10 +85,7 @@ import org.junit.Test;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 
-public class WebAdminServerTaskSerializationIntegrationTest {
-
-    private static final String DOMAIN = "domain";
-    private static final String USERNAME = "username@" + DOMAIN;
+public class RabbitMQWebAdminServerTaskSerializationIntegrationTest {
 
     @Rule
     public DockerCassandraRule cassandra = new DockerCassandraRule();
@@ -96,6 +93,9 @@ public class WebAdminServerTaskSerializationIntegrationTest {
     @Rule
     public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
 
+    private static final String DOMAIN = "domain";
+    private static final String USERNAME = "username@" + DOMAIN;
+
     private GuiceJamesServer guiceJamesServer;
     private DataProbe dataProbe;
     private MailboxProbe mailboxProbe;
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java
new file mode 100644
index 0000000..81f1c16
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java
@@ -0,0 +1,54 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.rabbitmq.vault;
+
+import java.io.IOException;
+import java.time.Clock;
+
+import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
+import org.apache.james.DockerCassandraRule;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.vault.DeletedMessageVaultIntegrationTest;
+import org.junit.Rule;
+
+public class RabbitMQDeletedMessageVaultIntegrationTest extends DeletedMessageVaultIntegrationTest {
+
+    @Rule
+    public DockerCassandraRule cassandra = new DockerCassandraRule();
+    @Rule
+    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+
+    @Override
+    public GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
+        return rule.jmapServer(cassandra.getModule(),
+            new TestDeleteMessageVaultPreDeletionHookModule(),
+            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
+            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
+            binder -> binder.bind(Clock.class).toInstance(clock));
+    }
+
+    @Override
+    protected void awaitSearchUpToDate() {
+        rule.await();
+    }
+}
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java
new file mode 100644
index 0000000..4dc3e32
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java
@@ -0,0 +1,59 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.rabbitmq.vault;
+
+import org.apache.james.CassandraExtension;
+import org.apache.james.CassandraRabbitMQJamesServerMain;
+import org.apache.james.DockerElasticSearchExtension;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.JamesServerBuilder;
+import org.apache.james.JamesServerExtension;
+import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
+import org.apache.james.mailbox.extractor.TextExtractor;
+import org.apache.james.mailbox.store.search.PDFTextExtractor;
+import org.apache.james.modules.AwsS3BlobStoreExtension;
+import org.apache.james.modules.RabbitMQExtension;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.modules.TestRabbitMQModule;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.vault.LinshareBlobExportMechanismIntegrationTest;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+class RabbitMQLinshareBlobExportMechanismIntegrationTest extends LinshareBlobExportMechanismIntegrationTest {
+
+    private static final int LIMIT_TO_20_MESSAGES = 20;
+
+    @RegisterExtension
+    static JamesServerExtension testExtension = new JamesServerBuilder()
+        .extension(new DockerElasticSearchExtension())
+        .extension(new CassandraExtension())
+        .extension(new RabbitMQExtension())
+        .extension(new AwsS3BlobStoreExtension())
+        .extension(LinshareBlobExportMechanismIntegrationTest.linshareGuiceExtension)
+        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
+            .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
+            .overrideWith(binder -> binder.bind(TextExtractor.class).to(PDFTextExtractor.class))
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_20_MESSAGES))
+            .overrideWith(new TestRabbitMQModule(DockerRabbitMQSingleton.SINGLETON))
+            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION))
+            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule()))
+        .build();
+}
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/dnsservice.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/dnsservice.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/domainlist.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/domainlist.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/domainlist.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/domainlist.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/imapserver.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/imapserver.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/imapserver.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/imapserver.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/jwt_publickey b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/jwt_publickey
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/jwt_publickey
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/jwt_publickey
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/keystore b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/keystore
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/keystore
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/keystore
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/listeners.xml
similarity index 54%
copy from server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/listeners.xml
index 0978a00..ff2e517 100644
--- a/server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/listeners.xml
@@ -18,12 +18,32 @@
   under the License.                                           
  -->
 
-<dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
-  <authoritative>false</authoritative>
-  <maxcachesize>50000</maxcachesize>
-</dnsservice>
+<listeners>
+  <listener>
+    <class>org.apache.james.mailbox.cassandra.MailboxOperationLoggingListener</class>
+  </listener>
+  <listener>
+    <class>org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdCrossingListener</class>
+    <group>QuotaThresholdCrossingListener-lower-threshold</group>
+    <configuration>
+      <thresholds>
+        <threshold>
+          <value>0.1</value>
+        </threshold>
+      </thresholds>
+      <name>first</name>
+    </configuration>
+  </listener>
+  <listener>
+    <class>org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdCrossingListener</class>
+    <group>QuotaThresholdCrossingListener-upper-threshold</group>
+    <configuration>
+      <thresholds>
+        <threshold>
+          <value>0.2</value>
+        </threshold>
+      </thresholds>
+      <name>second</name>
+    </configuration>
+  </listener>
+</listeners>
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/lmtpserver.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/lmtpserver.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/lmtpserver.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/lmtpserver.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/mailetcontainer.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/mailetcontainer.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/mailrepositorystore.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/mailrepositorystore.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/mailrepositorystore.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/mailrepositorystore.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/managesieveserver.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/managesieveserver.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/managesieveserver.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/managesieveserver.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/pop3server.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/pop3server.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/pop3server.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/pop3server.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/smtpserver.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/smtpserver.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/smtpserver.xml
copy to server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/smtpserver.xml
diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
new file mode 100644
index 0000000..a7c1310
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.james</groupId>
+        <artifactId>webadmin-integration-test</artifactId>
+        <version>3.5.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>memory-webadmin-integration-test</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Apache James :: Server :: Web Admin server integration tests :: Memory</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-memory-guice</artifactId>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-memory-guice</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-webadmin-integration-test-common</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java
similarity index 58%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java
index ecd725a..a4aa5b9 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryAuthorizedEndpointsTest.java
@@ -16,32 +16,25 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.memory;
 
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.MemoryJmapTestRule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.AuthorizedEndpointsTest;
+import org.apache.james.webadmin.integration.UnauthorizedModule;
+import org.junit.Rule;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+public class MemoryAuthorizedEndpointsTest extends AuthorizedEndpointsTest {
 
-import spark.Request;
-import spark.Response;
-
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
-    }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
+    protected GuiceJamesServer createJamesServer() throws Exception {
+        return memoryJmap.jmapServer(
+            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
+            new UnauthorizedModule());
     }
 }
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryForwardIntegrationTest.java
similarity index 58%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryForwardIntegrationTest.java
index ecd725a..545529e 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryForwardIntegrationTest.java
@@ -16,32 +16,25 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.memory;
 
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import java.io.IOException;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.MemoryJmapTestRule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.ForwardIntegrationTest;
+import org.junit.Rule;
 
-import spark.Request;
-import spark.Response;
+public class MemoryForwardIntegrationTest extends ForwardIntegrationTest {
 
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
+    public GuiceJamesServer createJmapServer() throws IOException {
+        return memoryJmap.jmapServer(binder -> binder.bind(WebAdminConfiguration.class)
+            .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
     }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
-    }
-}
\ No newline at end of file
+}
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryJwtFilterIntegrationTest.java
similarity index 56%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryJwtFilterIntegrationTest.java
index ecd725a..44dbbe9 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryJwtFilterIntegrationTest.java
@@ -16,32 +16,28 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.memory;
 
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.MemoryJmapTestRule;
+import org.apache.james.jwt.JwtConfiguration;
+import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import org.apache.james.webadmin.authentication.JwtFilter;
+import org.apache.james.webadmin.integration.JwtFilterIntegrationTest;
+import org.junit.Rule;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+public class MemoryJwtFilterIntegrationTest extends JwtFilterIntegrationTest {
 
-import spark.Request;
-import spark.Response;
-
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
-    }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
+    protected GuiceJamesServer createJamesServer(JwtConfiguration jwtConfiguration) throws Exception {
+        return memoryJmap.jmapServer(
+            binder -> binder.bind(AuthenticationFilter.class).to(JwtFilter.class),
+            binder -> binder.bind(JwtConfiguration.class).toInstance(jwtConfiguration),
+            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
     }
-}
\ No newline at end of file
+}
diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryUnauthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryUnauthorizedEndpointsTest.java
new file mode 100644
index 0000000..b1262bf
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryUnauthorizedEndpointsTest.java
@@ -0,0 +1,46 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.memory;
+
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.JamesServerBuilder;
+import org.apache.james.JamesServerExtension;
+import org.apache.james.MemoryJamesServerMain;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.UnauthorizedEndpointsTest;
+import org.apache.james.webadmin.integration.UnauthorizedModule;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+class MemoryUnauthorizedEndpointsTest extends UnauthorizedEndpointsTest {
+
+    private static final int LIMIT_TO_10_MESSAGES = 10;
+
+    @RegisterExtension
+    static JamesServerExtension jamesServerExtension = new JamesServerBuilder()
+        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
+            .combineWith(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule())
+            .overrideWith(new UnauthorizedModule())
+            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION)))
+        .build();
+}
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
similarity index 58%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
index ecd725a..119bec7 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/MemoryWebAdminServerIntegrationTest.java
@@ -16,32 +16,23 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.memory;
 
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.MemoryJmapTestRule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.WebAdminServerIntegrationTest;
+import org.junit.Rule;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+public class MemoryWebAdminServerIntegrationTest extends WebAdminServerIntegrationTest {
 
-import spark.Request;
-import spark.Response;
-
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
-    }
-
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
+    protected GuiceJamesServer createJamesServer() throws Exception {
+        return memoryJmap.jmapServer(binder -> binder.bind(WebAdminConfiguration.class)
+            .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
     }
 }
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryDeletedMessageVaultIntegrationTest.java
similarity index 50%
copy from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryDeletedMessageVaultIntegrationTest.java
index ecd725a..d722825 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryDeletedMessageVaultIntegrationTest.java
@@ -16,32 +16,35 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.webadmin.integration;
 
-import static spark.Spark.halt;
+package org.apache.james.webadmin.integration.memory.vault;
 
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.eclipse.jetty.http.HttpStatus;
+import java.io.IOException;
+import java.time.Clock;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.MemoryJmapTestRule;
+import org.apache.james.filesystem.api.FileSystem;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.vault.DeletedMessageVaultIntegrationTest;
+import org.junit.Rule;
 
-import spark.Request;
-import spark.Response;
+public class MemoryDeletedMessageVaultIntegrationTest extends DeletedMessageVaultIntegrationTest {
 
-public class UnauthorizedModule extends AbstractModule {
+    @Rule
+    public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule();
 
     @Override
-    protected void configure() {
-        bind(UnauthorizedModule.UnauthorizedFilter.class).in(Scopes.SINGLETON);
-        bind(AuthenticationFilter.class).to(UnauthorizedModule.UnauthorizedFilter.class);
+    protected GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
+        return memoryJmap.jmapServer(
+            new TestDeleteMessageVaultPreDeletionHookModule(),
+            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
+            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
+            binder -> binder.bind(Clock.class).toInstance(clock));
     }
 
-    private static class UnauthorizedFilter implements AuthenticationFilter {
-
-        @Override
-        public void handle(Request request, Response response) throws Exception {
-            halt(HttpStatus.UNAUTHORIZED_401, "Unauthorize every endpoints.");
-        }
+    @Override
+    protected void awaitSearchUpToDate() {
     }
-}
\ No newline at end of file
+}
diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryLinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryLinshareBlobExportMechanismIntegrationTest.java
new file mode 100644
index 0000000..77f27f3
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/memory/vault/MemoryLinshareBlobExportMechanismIntegrationTest.java
@@ -0,0 +1,48 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration.memory.vault;
+
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.JamesServerBuilder;
+import org.apache.james.JamesServerExtension;
+import org.apache.james.MemoryJamesServerMain;
+import org.apache.james.modules.LinshareGuiceExtension;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
+import org.apache.james.webadmin.WebAdminConfiguration;
+import org.apache.james.webadmin.integration.vault.LinshareBlobExportMechanismIntegrationTest;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+class MemoryLinshareBlobExportMechanismIntegrationTest extends LinshareBlobExportMechanismIntegrationTest {
+
+    private static final int LIMIT_TO_10_MESSAGES = 10;
+
+    private static final LinshareGuiceExtension linshareGuiceExtension = new LinshareGuiceExtension();
+
+    @RegisterExtension
+    static JamesServerExtension jamesServerExtension = new JamesServerBuilder()
+        .extension(linshareGuiceExtension)
+        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
+            .combineWith(MemoryJamesServerMain.IN_MEMORY_SERVER_AGGREGATE_MODULE)
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule())
+            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION)))
+        .build();
+}
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/dnsservice.xml
similarity index 100%
copy from server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml
copy to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/dnsservice.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/domainlist.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/domainlist.xml
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/domainlist.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/domainlist.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/imapserver.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/imapserver.xml
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/imapserver.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/imapserver.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/jwt_publickey b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/jwt_publickey
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/jwt_publickey
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/jwt_publickey
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/keystore b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/keystore
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/keystore
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/keystore
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/listeners.xml
similarity index 58%
rename from server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/listeners.xml
index 0978a00..59e3fec 100644
--- a/server/protocols/webadmin-integration-test/src/test/resources/dnsservice.xml
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/listeners.xml
@@ -18,12 +18,29 @@
   under the License.                                           
  -->
 
-<dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
-  <authoritative>false</authoritative>
-  <maxcachesize>50000</maxcachesize>
-</dnsservice>
+<listeners>
+  <listener>
+    <class>org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdCrossingListener</class>
+    <group>QuotaThresholdCrossingListener-lower-threshold</group>
+    <configuration>
+      <thresholds>
+        <threshold>
+          <value>0.1</value>
+        </threshold>
+      </thresholds>
+      <name>first</name>
+    </configuration>
+  </listener>
+  <listener>
+    <class>org.apache.james.mailbox.quota.mailing.listeners.QuotaThresholdCrossingListener</class>
+    <group>QuotaThresholdCrossingListener-upper-threshold</group>
+    <configuration>
+      <thresholds>
+        <threshold>
+          <value>0.2</value>
+        </threshold>
+      </thresholds>
+      <name>second</name>
+    </configuration>
+  </listener>
+</listeners>
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/lmtpserver.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/lmtpserver.xml
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/lmtpserver.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/lmtpserver.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/mailetcontainer.xml
similarity index 94%
rename from server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/mailetcontainer.xml
index f4c8937..9a5c42d 100644
--- a/server/protocols/webadmin-integration-test/src/test/resources/mailetcontainer.xml
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/mailetcontainer.xml
@@ -41,7 +41,7 @@
         <processor state="error" enableJmx="false">
             <mailet match="All" class="Bounce"/>
             <mailet match="All" class="ToRepository">
-                <repositoryPath>cassandra://var/mail/error/</repositoryPath>
+                <repositoryPath>memory://var/mail/error/</repositoryPath>
             </mailet>
         </processor>
 
@@ -86,7 +86,7 @@
                 <attachment>none</attachment>
             </mailet>
             <mailet match="All" class="ToRepository">
-                <repositoryPath>cassandra://var/mail/address-error/</repositoryPath>
+                <repositoryPath>memory://var/mail/address-error/</repositoryPath>
             </mailet>
         </processor>
 
@@ -95,7 +95,7 @@
                 <attachment>none</attachment>
             </mailet>
             <mailet match="All" class="ToRepository">
-                <repositoryPath>cassandra://var/mail/relay-denied/</repositoryPath>
+                <repositoryPath>memory://var/mail/relay-denied/</repositoryPath>
                 <notice>Warning: You are sending an e-mail to a remote server. You must be authentified to perform such an operation</notice>
             </mailet>
         </processor>
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/mailrepositorystore.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/mailrepositorystore.xml
similarity index 87%
rename from server/protocols/webadmin-integration-test/src/test/resources/mailrepositorystore.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/mailrepositorystore.xml
index 626e0a2..ed3e003 100644
--- a/server/protocols/webadmin-integration-test/src/test/resources/mailrepositorystore.xml
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/mailrepositorystore.xml
@@ -21,9 +21,9 @@
 
 <mailrepositorystore>
     <mailrepositories>
-        <mailrepository class="org.apache.james.mailrepository.cassandra.CassandraMailRepository">
+        <mailrepository class="org.apache.james.mailrepository.memory.MemoryMailRepository">
             <protocols>
-                <protocol>cassandra</protocol>
+                <protocol>memory</protocol>
             </protocols>
         </mailrepository>
     </mailrepositories>
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/managesieveserver.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/managesieveserver.xml
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/managesieveserver.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/managesieveserver.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/pop3server.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/pop3server.xml
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/pop3server.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/pop3server.xml
diff --git a/server/protocols/webadmin-integration-test/src/test/resources/smtpserver.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/smtpserver.xml
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/resources/smtpserver.xml
rename to server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/smtpserver.xml
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index 4a48fe4..e48ce2f 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -18,6 +18,7 @@
     under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -27,162 +28,23 @@
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
-    <artifactId>james-server-webadmin-integration-test</artifactId>
-    <packaging>jar</packaging>
-
+    <artifactId>webadmin-integration-test</artifactId>
+    <packaging>pom</packaging>
     <name>Apache James :: Server :: Web Admin server integration tests</name>
 
-    <dependencies>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-backends-rabbitmq</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-backends-cassandra</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-backends-es</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-mailbox-elasticsearch</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-mailbox-memory</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-mailbox-scanning-search</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-linshare</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>backup</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>blob-export-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>blob-objectstorage</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>blob-objectstorage-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-cassandra-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-guice-common</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-guice-jmap-draft</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-testing</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-core</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-cassandra-data</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-data</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-mailbox</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>testing-base</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>io.rest-assured</groupId>
-            <artifactId>rest-assured</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>java-hamcrest</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+    <modules>
+        <module>distributed-webadmin-integration-test</module>
+        <module>memory-webadmin-integration-test</module>
+        <module>webadmin-integration-test-common</module>
+    </modules>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java
deleted file mode 100644
index c320895..0000000
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.webadmin.integration;
-
-import static io.restassured.RestAssured.when;
-
-import org.apache.james.utils.WebAdminGuiceProbe;
-import org.apache.james.webadmin.WebAdminUtils;
-import org.apache.james.webadmin.routes.AliasRoutes;
-import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
-import org.apache.james.webadmin.routes.CassandraMigrationRoutes;
-import org.apache.james.webadmin.routes.DLPConfigurationRoutes;
-import org.apache.james.webadmin.routes.DomainMappingsRoutes;
-import org.apache.james.webadmin.routes.DomainQuotaRoutes;
-import org.apache.james.webadmin.routes.DomainsRoutes;
-import org.apache.james.webadmin.routes.EventDeadLettersRoutes;
-import org.apache.james.webadmin.routes.ForwardRoutes;
-import org.apache.james.webadmin.routes.GlobalQuotaRoutes;
-import org.apache.james.webadmin.routes.GroupsRoutes;
-import org.apache.james.webadmin.routes.MailQueueRoutes;
-import org.apache.james.webadmin.routes.MailRepositoriesRoutes;
-import org.apache.james.webadmin.routes.SieveQuotaRoutes;
-import org.apache.james.webadmin.routes.TasksRoutes;
-import org.apache.james.webadmin.routes.UserMailboxesRoutes;
-import org.apache.james.webadmin.routes.UserQuotaRoutes;
-import org.apache.james.webadmin.routes.UserRoutes;
-import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRoutes;
-import org.eclipse.jetty.http.HttpStatus;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.extension.RegisterExtension;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import io.restassured.RestAssured;
-
-class UnauthorizedEndpointsTest {
-    @RegisterExtension
-    static CassandraJmapExtension cassandraJmapExtension = new CassandraJmapExtension(CassandraJmapExtension.JamesLifeCyclePolicy.COMMON_TO_ALL_TESTS);
-
-    @BeforeEach
-    void setup() {
-        WebAdminGuiceProbe webAdminGuiceProbe = cassandraJmapExtension.getJames().getProbe(WebAdminGuiceProbe.class);
-
-        RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminGuiceProbe.getWebAdminPort())
-            .build();
-    }
-
-    @ParameterizedTest
-    @ValueSource(strings = {
-            CassandraMigrationRoutes.VERSION_BASE,
-            CassandraMigrationRoutes.VERSION_BASE + "/latest",
-            DLPConfigurationRoutes.BASE_PATH + "/james.org",
-            DomainMappingsRoutes.DOMAIN_MAPPINGS,
-            DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
-            DomainQuotaRoutes.BASE_PATH + "/james.org",
-            DomainQuotaRoutes.BASE_PATH + "/james.org/count",
-            DomainQuotaRoutes.BASE_PATH + "/james.org/size",
-            DomainsRoutes.DOMAINS,
-            UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes",
-            UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT,
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
-            UserRoutes.USERS,
-            ForwardRoutes.ROOT_PATH,
-            ForwardRoutes.ROOT_PATH + "/alice@james.org",
-            AliasRoutes.ROOT_PATH,
-            AliasRoutes.ROOT_PATH + "/bob@james.org",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT,
-            GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
-            GroupsRoutes.ROOT_PATH,
-            GroupsRoutes.ROOT_PATH + "/group@james.org",
-            MailQueueRoutes.BASE_URL + "/first_queue",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES,
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/1",
-            SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
-            SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org",
-            TasksRoutes.BASE,
-            TasksRoutes.BASE + "/taskId",
-            TasksRoutes.BASE + "/taskId/await",
-            EventDeadLettersRoutes.BASE_PATH + "/groups",
-            EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org",
-            EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
-    })
-    void checkUrlProtectionOnGet(String url) {
-        when()
-            .get(url)
-        .then()
-            .statusCode(HttpStatus.UNAUTHORIZED_401);
-    }
-
-    @ParameterizedTest
-    @ValueSource(strings = {
-            CassandraMigrationRoutes.VERSION_BASE + "/upgrade",
-            CassandraMigrationRoutes.VERSION_BASE + "/upgrade/latest",
-            DeletedMessagesVaultRoutes.ROOT_PATH + "/joe@perdu.com",
-            CassandraMappingsRoutes.ROOT_PATH,
-            EventDeadLettersRoutes.BASE_PATH,
-            EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org",
-            EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
-    })
-    void checkUrlProtectionOnPost(String url) {
-        when()
-            .post(url)
-        .then()
-            .statusCode(HttpStatus.UNAUTHORIZED_401);
-    }
-
-    @ParameterizedTest
-    @ValueSource(strings = {
-            DLPConfigurationRoutes.BASE_PATH + "/james.org",
-            DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
-            DomainQuotaRoutes.BASE_PATH + "/james.org/count",
-            DomainQuotaRoutes.BASE_PATH + "/james.org/size",
-            DomainQuotaRoutes.BASE_PATH + "/james.org",
-            DomainsRoutes.DOMAINS + "/james.org",
-            UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
-            UserRoutes.USERS + "/user@james.org",
-            ForwardRoutes.ROOT_PATH + "/alice@james.org/bob@james.org",
-            AliasRoutes.ROOT_PATH + "/bob@james.org/sources/bob-alias@james.org",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT,
-            GroupsRoutes.ROOT_PATH + "/group@james.org/user@james.org",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo",
-            SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
-            SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org"
-    })
-    void checkUrlProtectionOnPut(String url) {
-        when()
-            .put(url)
-        .then()
-            .statusCode(HttpStatus.UNAUTHORIZED_401);
-    }
-
-    @ParameterizedTest
-    @ValueSource(strings = {
-            DLPConfigurationRoutes.BASE_PATH + "/james.org",
-            DomainQuotaRoutes.BASE_PATH + "/james.org/count",
-            DomainQuotaRoutes.BASE_PATH + "/james.org/size",
-            DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
-            DomainsRoutes.DOMAINS + "/james.org",
-            UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes",
-            UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
-            UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
-            UserRoutes.USERS + "/user@james.org",
-            ForwardRoutes.ROOT_PATH + "/alice@james.org/bob@james.org",
-            AliasRoutes.ROOT_PATH + "/bob@james.org/sources/bob-alias@james.org",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
-            GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
-            GroupsRoutes.ROOT_PATH + "/group@james.org/user@james.org",
-            MailQueueRoutes.BASE_URL,
-            MailQueueRoutes.BASE_URL + "/first_queue/mails",
-            MailQueueRoutes.BASE_URL + "/second_queue/mails",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/1",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
-            SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
-            SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org",
-            TasksRoutes.BASE + "/taskId",
-            EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
-    })
-    void checkUrlProtectionOnDelete(String url) {
-        when()
-            .delete(url)
-        .then()
-            .statusCode(HttpStatus.UNAUTHORIZED_401);
-    }
-
-    @ParameterizedTest
-    @ValueSource(strings = {
-            MailQueueRoutes.BASE_URL + "/first_queue/mails",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
-            MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/name1"
-    })
-    void checkUrlProtectionOnPath(String url) {
-        when()
-            .patch(url)
-        .then()
-            .statusCode(HttpStatus.UNAUTHORIZED_401);
-    }
-}
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/pom.xml
similarity index 71%
copy from server/protocols/webadmin-integration-test/pom.xml
copy to server/protocols/webadmin-integration-test/webadmin-integration-test-common/pom.xml
index 4a48fe4..501cd3b 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/pom.xml
@@ -22,167 +22,130 @@
 
     <parent>
         <groupId>org.apache.james</groupId>
-        <artifactId>james-server</artifactId>
+        <artifactId>webadmin-integration-test</artifactId>
         <version>3.5.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
+        <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>james-server-webadmin-integration-test</artifactId>
+    <artifactId>james-server-webadmin-integration-test-common</artifactId>
     <packaging>jar</packaging>
 
-    <name>Apache James :: Server :: Web Admin server integration tests</name>
+    <name>Apache James :: Server :: Web Admin server integration tests :: Common</name>
 
     <dependencies>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-backends-rabbitmq</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-backends-cassandra</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>${james.groupId}</groupId>
             <artifactId>apache-james-backends-es</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-mailbox-elasticsearch</artifactId>
+            <artifactId>apache-james-linshare</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>apache-james-mailbox-memory</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>apache-james-mailbox-scanning-search</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>apache-james-linshare</artifactId>
+            <artifactId>backup</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>backup</artifactId>
+            <artifactId>blob-export-guice</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
+        <!--<dependency>-->
+            <!--<groupId>${james.groupId}</groupId>-->
+            <!--<artifactId>james-server-cassandra-guice</artifactId>-->
+            <!--<type>test-jar</type>-->
+        <!--</dependency>-->
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>blob-export-guice</artifactId>
+            <artifactId>james-server-guice-common</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>blob-objectstorage</artifactId>
+            <artifactId>james-server-guice-jmap-draft</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>blob-objectstorage-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
+            <artifactId>james-server-guice-imap</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-cassandra-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
+            <artifactId>james-server-guice-jmap-draft</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
-            <scope>test</scope>
+            <artifactId>james-server-guice-mailbox</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
+            <artifactId>james-server-guice-webadmin</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-guice-common</artifactId>
+            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-guice-jmap-draft</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
+            <artifactId>james-server-testing</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-mailbox-plugin-deleted-messages-vault-guice</artifactId>
+            <artifactId>james-server-webadmin-core</artifactId>
             <type>test-jar</type>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-testing</artifactId>
-            <scope>test</scope>
+            <artifactId>james-server-webadmin-data</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-core</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
+            <artifactId>james-server-webadmin-mailbox</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-cassandra-data</artifactId>
-            <scope>test</scope>
+            <artifactId>james-server-webadmin-mailqueue</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-data</artifactId>
-            <scope>test</scope>
+            <artifactId>james-server-webadmin-mailrepository</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
-            <artifactId>james-server-webadmin-mailbox</artifactId>
-            <scope>test</scope>
+            <artifactId>james-server-webadmin-swagger</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
             <artifactId>testing-base</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>io.rest-assured</groupId>
             <artifactId>rest-assured</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-params</artifactId>
-            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>java-hamcrest</artifactId>
-            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
         </dependency>
         <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>testcontainers</artifactId>
-            <scope>test</scope>
         </dependency>
     </dependencies>
 </project>
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java
similarity index 84%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java
index 01f0907..7d7d86a 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/AuthorizedEndpointsTest.java
@@ -22,8 +22,6 @@ package org.apache.james.webadmin.integration;
 import static io.restassured.RestAssured.when;
 import static org.hamcrest.core.IsNot.not;
 
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
@@ -32,24 +30,17 @@ import org.apache.james.webadmin.swagger.routes.SwaggerRoutes;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
 
 import io.restassured.RestAssured;
 
-public class AuthorizedEndpointsTest {
-
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+public abstract class AuthorizedEndpointsTest {
 
     private GuiceJamesServer guiceJamesServer;
 
     @Before
     public void setUp() throws Exception {
-        guiceJamesServer = jamesTestRule.jmapServer(cassandra.getModule(), new UnauthorizedModule());
+        guiceJamesServer = createJamesServer();
         guiceJamesServer.start();
         WebAdminGuiceProbe webAdminGuiceProbe = guiceJamesServer.getProbe(WebAdminGuiceProbe.class);
 
@@ -62,6 +53,8 @@ public class AuthorizedEndpointsTest {
         guiceJamesServer.stop();
     }
 
+    protected abstract GuiceJamesServer createJamesServer() throws Exception;
+
     @Test
     public void getHealthchecksShouldNotNeedAuthentication() {
         when()
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
similarity index 95%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
index 9360240..3b8e236 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
@@ -42,8 +42,6 @@ import static org.hamcrest.Matchers.hasSize;
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
@@ -52,7 +50,6 @@ import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.WebAdminGuiceProbe;
-import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Duration;
 import org.junit.After;
@@ -63,13 +60,9 @@ import org.junit.Test;
 import io.restassured.RestAssured;
 import io.restassured.specification.RequestSpecification;
 
-public class ForwardIntegrationTest {
+public abstract class ForwardIntegrationTest {
 
     @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
-    @Rule
     public SMTPMessageSender messageSender = new SMTPMessageSender(DOMAIN);
 
     private GuiceJamesServer jmapServer;
@@ -97,11 +90,7 @@ public class ForwardIntegrationTest {
             .getJmapPort());
     }
 
-    private GuiceJamesServer createJmapServer() throws IOException {
-        return rule.jmapServer(cassandra.getModule(),
-            binder -> binder.bind(WebAdminConfiguration.class)
-                .toInstance(WebAdminConfiguration.TEST_CONFIGURATION));
-    }
+    protected abstract GuiceJamesServer createJmapServer() throws IOException;
 
     @After
     public void tearDown() {
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
similarity index 86%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
index 578dcf0..709124e 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
@@ -25,26 +25,21 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.Optional;
 
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jwt.JwtConfiguration;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
-import org.apache.james.webadmin.authentication.AuthenticationFilter;
-import org.apache.james.webadmin.authentication.JwtFilter;
 import org.apache.james.webadmin.routes.DomainsRoutes;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
 
 import io.restassured.RestAssured;
 
-public class JwtFilterIntegrationTest {
+public abstract class JwtFilterIntegrationTest {
 
     private static final String DOMAIN = "domain";
     private static final String SPECIFIC_DOMAIN = DomainsRoutes.DOMAINS + SEPARATOR + DOMAIN;
@@ -59,12 +54,6 @@ public class JwtFilterIntegrationTest {
         "xtedOK2JnQZn7t9sUzSrcyjWverm7gZkPptkIVoS8TsEeMMME5vFXe_nqkEG69q3kuBUm_33tbR5oNS0ZGZKlG9r41lHBjyf9J1xN4UYV8n866d" +
         "a7RPPCzshIWUtO0q9T2umWTnp-6OnOdBCkndrZmRR6pPxsD5YL0_77Wq8KT_5__fGA";
 
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-    
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
-
     private GuiceJamesServer guiceJamesServer;
     private DataProbeImpl dataProbe;
     private WebAdminGuiceProbe webAdminGuiceProbe;
@@ -74,9 +63,7 @@ public class JwtFilterIntegrationTest {
         JwtConfiguration jwtConfiguration = new JwtConfiguration(
             Optional.of(ClassLoaderUtils.getSystemResourceAsString("jwt_publickey")));
 
-        guiceJamesServer = jamesTestRule.jmapServer(cassandra.getModule())
-            .overrideWith(binder -> binder.bind(AuthenticationFilter.class).to(JwtFilter.class),
-                binder -> binder.bind(JwtConfiguration.class).toInstance(jwtConfiguration));
+        guiceJamesServer = createJamesServer(jwtConfiguration);
         guiceJamesServer.start();
         dataProbe = guiceJamesServer.getProbe(DataProbeImpl.class);
         webAdminGuiceProbe = guiceJamesServer.getProbe(WebAdminGuiceProbe.class);
@@ -89,6 +76,8 @@ public class JwtFilterIntegrationTest {
         guiceJamesServer.stop();
     }
 
+    protected abstract GuiceJamesServer createJamesServer(JwtConfiguration jwtConfiguration) throws Exception;
+
     @Test
     public void jwtAuthenticationShouldWork() throws Exception {
         given()
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java
new file mode 100644
index 0000000..dbf6075
--- /dev/null
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/UnauthorizedEndpointsTest.java
@@ -0,0 +1,197 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.webadmin.integration;
+
+import static io.restassured.RestAssured.when;
+
+import org.apache.james.GuiceJamesServer;
+import org.apache.james.utils.WebAdminGuiceProbe;
+import org.apache.james.webadmin.WebAdminUtils;
+import org.apache.james.webadmin.routes.AliasRoutes;
+import org.apache.james.webadmin.routes.DLPConfigurationRoutes;
+import org.apache.james.webadmin.routes.DomainMappingsRoutes;
+import org.apache.james.webadmin.routes.DomainQuotaRoutes;
+import org.apache.james.webadmin.routes.DomainsRoutes;
+import org.apache.james.webadmin.routes.EventDeadLettersRoutes;
+import org.apache.james.webadmin.routes.ForwardRoutes;
+import org.apache.james.webadmin.routes.GlobalQuotaRoutes;
+import org.apache.james.webadmin.routes.GroupsRoutes;
+import org.apache.james.webadmin.routes.MailQueueRoutes;
+import org.apache.james.webadmin.routes.MailRepositoriesRoutes;
+import org.apache.james.webadmin.routes.SieveQuotaRoutes;
+import org.apache.james.webadmin.routes.TasksRoutes;
+import org.apache.james.webadmin.routes.UserMailboxesRoutes;
+import org.apache.james.webadmin.routes.UserQuotaRoutes;
+import org.apache.james.webadmin.routes.UserRoutes;
+import org.apache.james.webadmin.vault.routes.DeletedMessagesVaultRoutes;
+import org.eclipse.jetty.http.HttpStatus;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+
+import io.restassured.RestAssured;
+
+public abstract class UnauthorizedEndpointsTest {
+
+    @BeforeEach
+    void setup(GuiceJamesServer jamesServer) {
+        WebAdminGuiceProbe webAdminGuiceProbe = jamesServer.getProbe(WebAdminGuiceProbe.class);
+
+        RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminGuiceProbe.getWebAdminPort())
+            .build();
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        DLPConfigurationRoutes.BASE_PATH + "/james.org",
+        DomainMappingsRoutes.DOMAIN_MAPPINGS,
+        DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
+        DomainQuotaRoutes.BASE_PATH + "/james.org",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/count",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/size",
+        DomainsRoutes.DOMAINS,
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes",
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT,
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
+        UserRoutes.USERS,
+        ForwardRoutes.ROOT_PATH,
+        ForwardRoutes.ROOT_PATH + "/alice@james.org",
+        AliasRoutes.ROOT_PATH,
+        AliasRoutes.ROOT_PATH + "/bob@james.org",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT,
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
+        GroupsRoutes.ROOT_PATH,
+        GroupsRoutes.ROOT_PATH + "/group@james.org",
+        MailQueueRoutes.BASE_URL + "/first_queue",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES,
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/1",
+        SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
+        SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org",
+        TasksRoutes.BASE,
+        TasksRoutes.BASE + "/taskId",
+        TasksRoutes.BASE + "/taskId/await",
+        EventDeadLettersRoutes.BASE_PATH + "/groups",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
+    })
+    protected void checkUrlProtectionOnGet(String url) {
+        when()
+            .get(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        DeletedMessagesVaultRoutes.ROOT_PATH + "/joe@perdu.com",
+        EventDeadLettersRoutes.BASE_PATH,
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
+    })
+    protected void checkUrlProtectionOnPost(String url) {
+        when()
+            .post(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        DLPConfigurationRoutes.BASE_PATH + "/james.org",
+        DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/count",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/size",
+        DomainQuotaRoutes.BASE_PATH + "/james.org",
+        DomainsRoutes.DOMAINS + "/james.org",
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
+        UserRoutes.USERS + "/user@james.org",
+        ForwardRoutes.ROOT_PATH + "/alice@james.org/bob@james.org",
+        AliasRoutes.ROOT_PATH + "/bob@james.org/sources/bob-alias@james.org",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT,
+        GroupsRoutes.ROOT_PATH + "/group@james.org/user@james.org",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo",
+        SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
+        SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org"
+    })
+    void checkUrlProtectionOnPut(String url) {
+        when()
+            .put(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        DLPConfigurationRoutes.BASE_PATH + "/james.org",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/count",
+        DomainQuotaRoutes.BASE_PATH + "/james.org/size",
+        DomainMappingsRoutes.DOMAIN_MAPPINGS + "/from.com",
+        DomainsRoutes.DOMAINS + "/james.org",
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes",
+        UserMailboxesRoutes.USERS_BASE + "/someuser/mailboxes/mymailbox",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/count",
+        UserQuotaRoutes.USERS_QUOTA_ENDPOINT + "/joe@perdu.com/size",
+        UserRoutes.USERS + "/user@james.org",
+        ForwardRoutes.ROOT_PATH + "/alice@james.org/bob@james.org",
+        AliasRoutes.ROOT_PATH + "/bob@james.org/sources/bob-alias@james.org",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/count",
+        GlobalQuotaRoutes.QUOTA_ENDPOINT + "/size",
+        GroupsRoutes.ROOT_PATH + "/group@james.org/user@james.org",
+        MailQueueRoutes.BASE_URL,
+        MailQueueRoutes.BASE_URL + "/first_queue/mails",
+        MailQueueRoutes.BASE_URL + "/second_queue/mails",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/1",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
+        SieveQuotaRoutes.DEFAULT_QUOTA_PATH,
+        SieveQuotaRoutes.ROOT_PATH + "/users/user@james.org",
+        TasksRoutes.BASE + "/taskId",
+        EventDeadLettersRoutes.BASE_PATH + "/groups/group@james.org/1"
+    })
+    void checkUrlProtectionOnDelete(String url) {
+        when()
+            .delete(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        MailQueueRoutes.BASE_URL + "/first_queue/mails",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails",
+        MailRepositoriesRoutes.MAIL_REPOSITORIES + "/myRepo/mails/name1"
+    })
+    void checkUrlProtectionOnPath(String url) {
+        when()
+            .patch(url)
+        .then()
+            .statusCode(HttpStatus.UNAUTHORIZED_401);
+    }
+}
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/UnauthorizedModule.java
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
similarity index 73%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
index e60e848..1ffe07b 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
@@ -25,74 +25,55 @@ import static io.restassured.RestAssured.with;
 import static org.apache.james.webadmin.Constants.JSON_CONTENT_TYPE;
 import static org.apache.james.webadmin.Constants.SEPARATOR;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.hamcrest.CoreMatchers.hasItems;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 
 import java.util.List;
 
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.AliasRoutes;
-import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
 import org.apache.james.webadmin.routes.DomainsRoutes;
 import org.apache.james.webadmin.routes.ForwardRoutes;
 import org.apache.james.webadmin.routes.GroupsRoutes;
 import org.apache.james.webadmin.routes.HealthCheckRoutes;
 import org.apache.james.webadmin.routes.MailQueueRoutes;
 import org.apache.james.webadmin.routes.MailRepositoriesRoutes;
-import org.apache.james.webadmin.routes.TasksRoutes;
 import org.apache.james.webadmin.routes.UserMailboxesRoutes;
 import org.apache.james.webadmin.routes.UserRoutes;
 import org.apache.james.webadmin.swagger.routes.SwaggerRoutes;
-import org.awaitility.Awaitility;
-import org.awaitility.Duration;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Rule;
 import org.junit.Test;
 
 import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
 
-public class WebAdminServerIntegrationTest {
+public abstract class WebAdminServerIntegrationTest {
 
     private static final String DOMAIN = "domain";
-    private static final String USERNAME = "username@" + DOMAIN;
+    protected static final String USERNAME = "username@" + DOMAIN;
     private static final String USERNAME_2 = "username2@" + DOMAIN;
-    private static final String ALIAS_1 = "alias1@" + DOMAIN;
-    private static final String ALIAS_2 = "alias2@" + DOMAIN;
     private static final String GROUP = "group@" + DOMAIN;
     private static final String SPECIFIC_DOMAIN = DomainsRoutes.DOMAINS + SEPARATOR + DOMAIN;
     private static final String SPECIFIC_USER = UserRoutes.USERS + SEPARATOR + USERNAME;
     private static final String MAILBOX = "mailbox";
     private static final String SPECIFIC_MAILBOX = SPECIFIC_USER + SEPARATOR + UserMailboxesRoutes.MAILBOXES + SEPARATOR + MAILBOX;
-    private static final String VERSION = "/cassandra/version";
-    private static final String VERSION_LATEST = VERSION + "/latest";
-    private static final String UPGRADE_VERSION = VERSION + "/upgrade";
-    private static final String UPGRADE_TO_LATEST_VERSION = UPGRADE_VERSION + "/latest";
 
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule jamesTestRule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+    protected static final String ALIAS_1 = "alias1@" + DOMAIN;
+    protected static final String ALIAS_2 = "alias2@" + DOMAIN;
 
     private GuiceJamesServer guiceJamesServer;
     private DataProbe dataProbe;
 
     @Before
     public void setUp() throws Exception {
-        guiceJamesServer = jamesTestRule.jmapServer(cassandra.getModule());
+        guiceJamesServer = createJamesServer();
         guiceJamesServer.start();
         dataProbe = guiceJamesServer.getProbe(DataProbeImpl.class);
         dataProbe.addDomain(DOMAIN);
@@ -107,6 +88,8 @@ public class WebAdminServerIntegrationTest {
         guiceJamesServer.stop();
     }
 
+    protected abstract GuiceJamesServer createJamesServer() throws Exception;
+
     @Test
     public void postShouldAddTheGivenDomain() throws Exception {
         when()
@@ -240,70 +223,6 @@ public class WebAdminServerIntegrationTest {
     }
 
     @Test
-    public void getCurrentVersionShouldReturnNullForCurrentVersionAsBeginning() {
-        when()
-            .get(VERSION)
-        .then()
-            .statusCode(HttpStatus.OK_200)
-            .contentType(JSON_CONTENT_TYPE)
-            .body(is("{\"version\":null}"));
-    }
-
-    @Test
-    public void getLatestVersionShouldReturnTheConfiguredLatestVersion() {
-        when()
-            .get(VERSION_LATEST)
-        .then()
-            .statusCode(HttpStatus.OK_200)
-            .contentType(JSON_CONTENT_TYPE)
-            .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}"));
-    }
-
-    @Test
-    public void postShouldDoMigrationAndUpdateCurrentVersion() {
-        String taskId = with()
-            .body(String.valueOf(CassandraSchemaVersionManager.MAX_VERSION.getValue()))
-        .post(UPGRADE_VERSION)
-            .jsonPath()
-            .get("taskId");
-
-        with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-
-        Awaitility.await()
-            .atMost(Duration.TEN_SECONDS)
-            .await()
-            .untilAsserted(() ->
-                when()
-                    .get(VERSION)
-                .then()
-                    .statusCode(HttpStatus.OK_200)
-                    .contentType(JSON_CONTENT_TYPE)
-                    .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}")));
-    }
-
-    @Test
-    public void postShouldDoMigrationAndUpdateToTheLatestVersion() {
-        String taskId = with().post(UPGRADE_TO_LATEST_VERSION)
-            .jsonPath()
-            .get("taskId");
-
-        with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-
-        when()
-            .get(VERSION)
-        .then()
-            .statusCode(HttpStatus.OK_200)
-            .contentType(JSON_CONTENT_TYPE)
-            .body(is("{\"version\":" + CassandraSchemaVersionManager.MAX_VERSION.getValue() + "}"));
-    }
-
-    @Test
     public void addressGroupsEndpointShouldHandleRequests() throws Exception {
         with()
             .put(GroupsRoutes.ROOT_PATH + SEPARATOR + GROUP + SEPARATOR + USERNAME);
@@ -391,32 +310,4 @@ public class WebAdminServerIntegrationTest {
         .then()
             .statusCode(HttpStatus.OK_200);
     }
-
-    @Test
-    public void cassandraMappingsEndpointShouldKeepDataConsistencyWhenDataValid() {
-        with()
-            .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_1);
-        with()
-            .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_2);
-
-        String taskId = with()
-            .queryParam("action", "SolveInconsistencies")
-            .post(CassandraMappingsRoutes.ROOT_PATH)
-            .jsonPath()
-            .get("taskId");
-
-        given()
-            .basePath(TasksRoutes.BASE)
-        .when()
-            .get(taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-
-        when()
-            .get(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME)
-        .then()
-            .contentType(ContentType.JSON)
-        .statusCode(HttpStatus.OK_200)
-            .body("source", hasItems(ALIAS_1, ALIAS_2));
-    }
 }
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
similarity index 97%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index 7d1767f..cd9c8aa 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -49,8 +49,6 @@ import java.time.Clock;
 import java.time.ZonedDateTime;
 import java.util.List;
 
-import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
-import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.core.Username;
 import org.apache.james.filesystem.api.FileSystem;
@@ -63,7 +61,6 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.probe.MailboxProbe;
 import org.apache.james.modules.MailboxProbeImpl;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
 import org.apache.james.probe.DataProbe;
 import org.apache.james.server.core.JamesServerResourceLoader;
 import org.apache.james.server.core.filesystem.FileSystemImpl;
@@ -72,7 +69,6 @@ import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.UpdatableTickingClock;
 import org.apache.james.utils.WebAdminGuiceProbe;
-import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
@@ -90,7 +86,7 @@ import io.restassured.config.ParamConfig;
 import io.restassured.parsing.Parser;
 import io.restassured.specification.RequestSpecification;
 
-public class DeletedMessageVaultIntegrationTest {
+public abstract class DeletedMessageVaultIntegrationTest {
 
     private static final ZonedDateTime NOW = ZonedDateTime.now();
     private static final ZonedDateTime TWO_MONTH_AFTER_ONE_YEAR_EXPIRATION = NOW.plusYears(1).plusMonths(2);
@@ -116,11 +112,7 @@ public class DeletedMessageVaultIntegrationTest {
         .userExportFrom(JACK)
         .exportTo(HOMER)
         .query(MATCH_ALL_QUERY);
-    
-    @Rule
-    public DockerCassandraRule cassandra = new DockerCassandraRule();
-    @Rule
-    public CassandraRabbitMQAwsS3JmapTestRule rule = CassandraRabbitMQAwsS3JmapTestRule.defaultTestRule();
+
     @Rule
     public IMAPMessageReader imapMessageReader = new IMAPMessageReader();
     @Rule
@@ -165,25 +157,17 @@ public class DeletedMessageVaultIntegrationTest {
             .config(WebAdminUtils.defaultConfig()
                 .paramConfig(new ParamConfig(REPLACE, REPLACE, REPLACE)));
     }
-    
-    private GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException {
-        return rule.jmapServer(cassandra.getModule(),
-            new TestDeleteMessageVaultPreDeletionHookModule(),
-            binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION),
-            binder -> binder.bind(FileSystem.class).toInstance(fileSystem),
-            binder -> binder.bind(Clock.class).toInstance(clock));
-    }
 
-    private void awaitSearchUpToDate() {
-        rule.await();
-    }
-    
+    protected abstract GuiceJamesServer createJmapServer(FileSystem fileSystem, Clock clock) throws IOException;
+
+    protected abstract void awaitSearchUpToDate();
+
     @After
     public void tearDown() throws Exception {
         jmapServer.stop();
     }
 
-    
+
     @Test
     public void vaultEndpointShouldRestoreJmapDeletedEmail() {
         bartSendMessageToHomer();
@@ -206,7 +190,7 @@ public class DeletedMessageVaultIntegrationTest {
             .log().ifValidationFails()
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
-    
+
     @Test
     public void vaultEndpointShouldRestoreImapDeletedEmail() throws Exception {
         bartSendMessageToHomer();
@@ -235,7 +219,7 @@ public class DeletedMessageVaultIntegrationTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
-    
+
     @Test
     public void vaultEndpointShouldRestoreImapDeletedMailbox() throws Exception {
         bartSendMessageToHomer();
@@ -479,7 +463,7 @@ public class DeletedMessageVaultIntegrationTest {
             .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT));
     }
 
-    
+
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenJmapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
@@ -497,7 +481,7 @@ public class DeletedMessageVaultIntegrationTest {
         }
     }
 
-    
+
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeleteMessage() throws Exception {
         bartSendMessageToHomer();
@@ -520,7 +504,7 @@ public class DeletedMessageVaultIntegrationTest {
         }
     }
 
-    
+
     @Test
     public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeletedMailbox() throws Exception {
         bartSendMessageToHomer();
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessagesVaultRequests.java
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/ExportRequest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/ExportRequest.java
similarity index 100%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/ExportRequest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/ExportRequest.java
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
similarity index 87%
rename from server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
rename to server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
index 3f4b3b6..1bcfdec 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
@@ -43,13 +43,7 @@ import static org.hamcrest.Matchers.hasSize;
 import java.io.ByteArrayInputStream;
 import java.util.List;
 
-import org.apache.james.CassandraExtension;
-import org.apache.james.CassandraRabbitMQJamesServerMain;
-import org.apache.james.DockerElasticSearchExtension;
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.JamesServerBuilder;
-import org.apache.james.JamesServerExtension;
-import org.apache.james.backends.rabbitmq.DockerRabbitMQSingleton;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.AccessToken;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
@@ -57,23 +51,15 @@ import org.apache.james.linshare.client.Document;
 import org.apache.james.linshare.client.LinshareAPI;
 import org.apache.james.mailbox.DefaultMailboxes;
 import org.apache.james.mailbox.backup.ZipAssert;
-import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.probe.MailboxProbe;
-import org.apache.james.mailbox.store.search.PDFTextExtractor;
-import org.apache.james.modules.AwsS3BlobStoreExtension;
 import org.apache.james.modules.LinshareGuiceExtension;
 import org.apache.james.modules.MailboxProbeImpl;
-import org.apache.james.modules.RabbitMQExtension;
-import org.apache.james.modules.TestJMAPServerModule;
-import org.apache.james.modules.TestRabbitMQModule;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
-import org.apache.james.modules.vault.TestDeleteMessageVaultPreDeletionHookModule;
 import org.apache.james.util.Port;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.WebAdminGuiceProbe;
-import org.apache.james.webadmin.WebAdminConfiguration;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
@@ -85,7 +71,7 @@ import io.restassured.RestAssured;
 import io.restassured.parsing.Parser;
 import io.restassured.specification.RequestSpecification;
 
-class LinshareBlobExportMechanismIntegrationTest {
+public abstract class LinshareBlobExportMechanismIntegrationTest {
 
     private static final String HOMER = "homer@" + DOMAIN;
     private static final String BART = "bart@" + DOMAIN;
@@ -98,24 +84,7 @@ class LinshareBlobExportMechanismIntegrationTest {
         .exportTo(USER_1.getUsername())
         .query(MATCH_ALL_QUERY);
 
-    private static final int LIMIT_TO_20_MESSAGES = 20;
-
-    private static final LinshareGuiceExtension linshareGuiceExtension = new LinshareGuiceExtension();
-    @RegisterExtension
-    static JamesServerExtension testExtension = new JamesServerBuilder()
-        .extension(new DockerElasticSearchExtension())
-        .extension(new CassandraExtension())
-        .extension(new RabbitMQExtension())
-        .extension(new AwsS3BlobStoreExtension())
-        .extension(linshareGuiceExtension)
-        .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
-            .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
-            .overrideWith(binder -> binder.bind(TextExtractor.class).to(PDFTextExtractor.class))
-            .overrideWith(new TestJMAPServerModule(LIMIT_TO_20_MESSAGES))
-            .overrideWith(new TestRabbitMQModule(DockerRabbitMQSingleton.SINGLETON))
-            .overrideWith(binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION))
-            .overrideWith(new TestDeleteMessageVaultPreDeletionHookModule()))
-        .build();
+    protected static final LinshareGuiceExtension linshareGuiceExtension = new LinshareGuiceExtension();
 
     @RegisterExtension
     IMAPMessageReader imapMessageReader = new IMAPMessageReader();


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 13/14: JAMES-3012 Strong type for JMAP port

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8f8ab3a91f339f39390dc01c3836b092850ad50b
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 18 11:20:10 2019 +0700

    JAMES-3012 Strong type for JMAP port
---
 .../src/test/java/org/apache/james/ESReporterTest.java               | 2 +-
 .../src/main/java/org/apache/james/jmap/draft/JmapGuiceProbe.java    | 3 ++-
 .../java/org/apache/james/jmap/draft/JmapJamesServerContract.java    | 2 +-
 .../org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java  | 2 +-
 .../java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java | 2 +-
 .../src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java  | 2 +-
 .../src/test/java/org/apache/james/jmap/JmapURIBuilder.java          | 2 +-
 .../src/test/java/org/apache/james/jmap/ProvisioningTest.java        | 2 +-
 .../src/test/java/org/apache/james/jmap/VacationIntegrationTest.java | 2 +-
 .../org/apache/james/jmap/draft/methods/integration/FilterTest.java  | 2 +-
 .../james/jmap/draft/methods/integration/GetMailboxesMethodTest.java | 2 +-
 .../jmap/draft/methods/integration/GetMessageListMethodTest.java     | 2 +-
 .../jmap/draft/methods/integration/GetVacationResponseTest.java      | 2 +-
 .../james/jmap/draft/methods/integration/QuotaMailingTest.java       | 2 +-
 .../james/jmap/draft/methods/integration/SendMDNMethodTest.java      | 2 +-
 .../james/jmap/draft/methods/integration/SetMailboxesMethodTest.java | 2 +-
 .../draft/methods/integration/SetMessagesMethodReRoutingTest.java    | 2 +-
 .../james/jmap/draft/methods/integration/SetMessagesMethodTest.java  | 2 +-
 .../draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java   | 2 +-
 .../jmap/draft/methods/integration/SetVacationResponseTest.java      | 2 +-
 .../james/jmap/draft/methods/integration/SpamAssassinContract.java   | 2 +-
 .../src/main/java/org/apache/james/jmap/draft/JMAPServer.java        | 5 +++--
 .../rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java         | 2 +-
 .../apache/james/webadmin/integration/ForwardIntegrationTest.java    | 5 ++---
 .../integration/vault/DeletedMessageVaultIntegrationTest.java        | 5 ++---
 .../vault/LinshareBlobExportMechanismIntegrationTest.java            | 5 ++---
 26 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
index f854203..8c63961 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
@@ -97,7 +97,7 @@ class ESReporterTest {
                 .setContentType(ContentType.JSON)
                 .setAccept(ContentType.JSON)
                 .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-                .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         accessToken = authenticateJamesUser(baseUri(server), Username.of(USERNAME), PASSWORD);
 
diff --git a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JmapGuiceProbe.java b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JmapGuiceProbe.java
index 434b41b..38ca47c 100644
--- a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JmapGuiceProbe.java
+++ b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JmapGuiceProbe.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.events.MailboxListener;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.util.Port;
 import org.apache.james.utils.GuiceProbe;
 
 public class JmapGuiceProbe implements GuiceProbe {
@@ -55,7 +56,7 @@ public class JmapGuiceProbe implements GuiceProbe {
         this.eventBus = eventBus;
     }
 
-    public int getJmapPort() {
+    public Port getJmapPort() {
         return jmapServer.getPort();
     }
 
diff --git a/server/container/guice/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/JmapJamesServerContract.java b/server/container/guice/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/JmapJamesServerContract.java
index c7f07ac..6f965f7 100644
--- a/server/container/guice/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/JmapJamesServerContract.java
+++ b/server/container/guice/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/JmapJamesServerContract.java
@@ -51,7 +51,7 @@ public interface JmapJamesServerContract {
             .setContentType(ContentType.JSON)
             .setAccept(ContentType.JSON)
             .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-            .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
             .build();
     }
 
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java
index ac02f49..97974f6 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraBulkOperationTest.java
@@ -138,7 +138,7 @@ public class CassandraBulkOperationTest {
                         .build()));
         jmapServer.start();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
             .build();
 
         jmapServer.getProbe(DataProbeImpl.class)
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
index b3e69d7..a184d9c 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
@@ -62,7 +62,7 @@ class CassandraImapErrorTest {
     @BeforeEach
     void setup(GuiceJamesServer server) throws Exception {
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(server.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
             .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
index 8368792..d978e66 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JMAPAuthenticationTest.java
@@ -64,7 +64,7 @@ public abstract class JMAPAuthenticationTest {
         jmapServer = createJmapServer(zonedDateTimeProvider);
         jmapServer.start();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         
         userCredentials = UserCredentials.builder()
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java
index 64de331..4e4b962 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/JmapURIBuilder.java
@@ -27,6 +27,6 @@ public class JmapURIBuilder {
 
     public static URIBuilder baseUri(GuiceJamesServer jamesServer) {
         return LocalHostURIBuilder.baseUri(
-            Port.of(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort()));
+            Port.of(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue()));
     }
 }
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
index 37795e1..b5ba1ed 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/ProvisioningTest.java
@@ -64,7 +64,7 @@ public abstract class ProvisioningTest {
         jmapServer = createJmapServer();
         jmapServer.start();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
             .build();
 
         jmapServer.getProbe(DataProbeImpl.class)
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
index 5f5df91..3f2e3a1 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/VacationIntegrationTest.java
@@ -94,7 +94,7 @@ public abstract class VacationIntegrationTest {
 
         jmapGuiceProbe = guiceJamesServer.getProbe(JmapGuiceProbe.class);
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapGuiceProbe.getJmapPort())
+            .setPort(jmapGuiceProbe.getJmapPort().getValue())
             .build();
 
         user1AccessToken = authenticateJamesUser(baseUri(guiceJamesServer), USER_1, PASSWORD);
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
index a99995a..1eef429 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/FilterTest.java
@@ -79,7 +79,7 @@ public abstract class FilterTest {
         jmapServer.start();
 
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
             .build();
 
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
index 41d14b3..3465065 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMailboxesMethodTest.java
@@ -112,7 +112,7 @@ public abstract class GetMailboxesMethodTest {
         quotaProbe = jmapServer.getProbe(QuotaProbesImpl.class);
 
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
index 88f792e..28c454a 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetMessageListMethodTest.java
@@ -127,7 +127,7 @@ public abstract class GetMessageListMethodTest {
         aclProbe = jmapServer.getProbe(ACLProbeImpl.class);
 
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
 
         dataProbe.addDomain(DOMAIN);
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
index c8399ab..ed0c530 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/GetVacationResponseTest.java
@@ -78,7 +78,7 @@ public abstract class GetVacationResponseTest {
 
         jmapGuiceProbe = jmapServer.getProbe(JmapGuiceProbe.class);
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapGuiceProbe.getJmapPort())
+                .setPort(jmapGuiceProbe.getJmapPort().getValue())
                 .build();
 
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
index 47acc19..1b9289d 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/QuotaMailingTest.java
@@ -83,7 +83,7 @@ public abstract class QuotaMailingTest {
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
 
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
             .build();
         RestAssured.defaultParser = Parser.JSON;
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
index bc85911..5321469 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SendMDNMethodTest.java
@@ -90,7 +90,7 @@ public abstract class SendMDNMethodTest {
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
 
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.defaultParser = Parser.JSON;
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
index ac6bb8c..2d9e3d0 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMailboxesMethodTest.java
@@ -101,7 +101,7 @@ public abstract class SetMailboxesMethodTest {
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
         
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
 
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java
index 49fa832..fca8b50 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodReRoutingTest.java
@@ -89,7 +89,7 @@ public abstract class SetMessagesMethodReRoutingTest {
                 .setContentType(ContentType.JSON)
                 .setAccept(ContentType.JSON)
                 .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
         RestAssured.defaultParser = Parser.JSON;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
index 4c9bf25..c584864 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesMethodTest.java
@@ -172,7 +172,7 @@ public abstract class SetMessagesMethodTest {
                 .setContentType(ContentType.JSON)
                 .setAccept(ContentType.JSON)
                 .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
         RestAssured.defaultParser = Parser.JSON;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
index dbf9b0b..e9141ea 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
@@ -117,7 +117,7 @@ public abstract class SetMessagesOutboxFlagUpdateTest {
                 .setContentType(ContentType.JSON)
                 .setAccept(ContentType.JSON)
                 .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
         RestAssured.defaultParser = Parser.JSON;
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
index 3db1858..03bba0f 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetVacationResponseTest.java
@@ -71,7 +71,7 @@ public abstract class SetVacationResponseTest {
         jmapServer.start();
         jmapGuiceProbe = jmapServer.getProbe(JmapGuiceProbe.class);
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapGuiceProbe.getJmapPort())
+                .setPort(jmapGuiceProbe.getJmapPort().getValue())
                 .build();
 
         jmapServer.getProbe(DataProbeImpl.class)
diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
index f7f7531..aafccfc 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SpamAssassinContract.java
@@ -74,7 +74,7 @@ public interface SpamAssassinContract {
                 .setContentType(ContentType.JSON)
                 .setAccept(ContentType.JSON)
                 .setConfig(newConfig().encoderConfig(encoderConfig().defaultContentCharset(StandardCharsets.UTF_8)))
-                .setPort(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort().getValue())
                 .build();
         RestAssured.defaultParser = Parser.JSON;
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPServer.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPServer.java
index 6d428f9..c3aabf9 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPServer.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPServer.java
@@ -31,6 +31,7 @@ import org.apache.james.http.jetty.Configuration;
 import org.apache.james.http.jetty.Configuration.Builder;
 import org.apache.james.http.jetty.JettyHttpServer;
 import org.apache.james.lifecycle.api.Startable;
+import org.apache.james.util.Port;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.zalando.logbook.DefaultHttpLogWriter;
@@ -111,7 +112,7 @@ public class JMAPServer implements Startable {
         server.ifPresent(Throwing.consumer(JettyHttpServer::stop).sneakyThrow());
     }
 
-    public int getPort() {
-        return server.map(JettyHttpServer::getPort).orElseThrow(() -> new RuntimeException("JMAP server was disabled. No port bound"));
+    public Port getPort() {
+        return Port.of(server.map(JettyHttpServer::getPort).orElseThrow(() -> new RuntimeException("JMAP server was disabled. No port bound")));
     }
 }
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
index 18ac7fb..26fbfac 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
@@ -108,7 +108,7 @@ class RabbitMQReindexingWithEventDeadLettersTest {
             .addDomain(DOMAIN)
             .addUser(ALICE.asString(), ALICE_PASSWORD);
 
-        Port jmapPort = Port.of(jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort());
+        Port jmapPort = jamesServer.getProbe(JmapGuiceProbe.class).getJmapPort();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
             .setPort(jmapPort.getValue())
             .build();
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
index 15e6683..d3c1f47 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/ForwardIntegrationTest.java
@@ -82,14 +82,13 @@ public abstract class ForwardIntegrationTest {
         dataProbe.addUser(ALICE.asString(), ALICE_PASSWORD);
         dataProbe.addUser(CEDRIC.asString(), CEDRIC_PASSWORD);
 
+        jmapPort = jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-                .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+                .setPort(jmapPort.getValue())
                 .build();
 
         webAdminApi = WebAdminUtils.spec(jmapServer.getProbe(WebAdminGuiceProbe.class).getWebAdminPort());
 
-        jmapPort = new Port(jmapServer.getProbe(JmapGuiceProbe.class)
-            .getJmapPort());
     }
 
     protected abstract GuiceJamesServer createJmapServer() throws IOException;
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
index 3299aaa..0de220c 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/DeletedMessageVaultIntegrationTest.java
@@ -138,8 +138,9 @@ public abstract class DeletedMessageVaultIntegrationTest {
         MailboxProbe mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
         DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class);
 
+        Port jmapPort = jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapPort.getValue())
             .build();
         RestAssured.defaultParser = Parser.JSON;
 
@@ -149,8 +150,6 @@ public abstract class DeletedMessageVaultIntegrationTest {
         dataProbe.addUser(JACK, PASSWORD);
         mailboxProbe.createMailbox("#private", HOMER, DefaultMailboxes.INBOX);
         otherMailboxId = mailboxProbe.createMailbox("#private", HOMER, MAILBOX_NAME);
-        Port jmapPort = Port.of(jmapServer.getProbe(JmapGuiceProbe.class)
-            .getJmapPort());
         homerAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(HOMER), PASSWORD);
         bartAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(BART), BOB_PASSWORD);
         jackAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(JACK), PASSWORD);
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
index 1bcfdec..c55f60c 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/vault/LinshareBlobExportMechanismIntegrationTest.java
@@ -106,8 +106,9 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
             .addUser(HOMER, HOMER_PASSWORD)
             .addUser(BART, BART_PASSWORD);
 
+        Port jmapPort = jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort();
         RestAssured.requestSpecification = jmapRequestSpecBuilder
-            .setPort(jmapServer.getProbe(JmapGuiceProbe.class).getJmapPort())
+            .setPort(jmapPort.getValue())
             .build();
         RestAssured.defaultParser = Parser.JSON;
 
@@ -116,8 +117,6 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         MailboxProbe mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class);
         mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, HOMER, DefaultMailboxes.INBOX);
 
-        Port jmapPort = Port.of(jmapServer.getProbe(JmapGuiceProbe.class)
-            .getJmapPort());
         homerAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(HOMER), HOMER_PASSWORD);
         bartAccessToken = authenticateJamesUser(baseUri(jmapPort), Username.of(BART), BART_PASSWORD);
         user1LinshareAPI = linshareGuiceExtension.getLinshareJunitExtension().getAPIFor(USER_1);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[james-project] 11/14: JAMES-3012 Some Swagger tests are implementation specific

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3858a5dfae091f315f91afae3d42f0806fbfd293
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Dec 18 04:50:26 2019 +0100

    JAMES-3012 Some Swagger tests are implementation specific
---
 .../rabbitmq/RabbitMQWebAdminServerIntegrationTest.java    | 14 ++++++++++++++
 .../integration/WebAdminServerIntegrationTest.java         |  5 +----
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
index 188268a..05228e1 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
@@ -25,6 +25,7 @@ import static io.restassured.RestAssured.with;
 import static org.apache.james.webadmin.Constants.JSON_CONTENT_TYPE;
 import static org.apache.james.webadmin.Constants.SEPARATOR;
 import static org.hamcrest.CoreMatchers.hasItems;
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 
 import org.apache.james.CassandraRabbitMQAwsS3JmapTestRule;
@@ -36,6 +37,7 @@ import org.apache.james.webadmin.integration.WebAdminServerIntegrationTest;
 import org.apache.james.webadmin.routes.AliasRoutes;
 import org.apache.james.webadmin.routes.CassandraMappingsRoutes;
 import org.apache.james.webadmin.routes.TasksRoutes;
+import org.apache.james.webadmin.swagger.routes.SwaggerRoutes;
 import org.awaitility.Awaitility;
 import org.awaitility.Duration;
 import org.eclipse.jetty.http.HttpStatus;
@@ -154,4 +156,16 @@ public class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegra
         .statusCode(HttpStatus.OK_200)
             .body("source", hasItems(ALIAS_1, ALIAS_2));
     }
+
+
+    @Test
+    public void getSwaggerShouldContainDistributedEndpoints() {
+        when()
+            .get(SwaggerRoutes.SWAGGER_ENDPOINT)
+            .then()
+            .statusCode(HttpStatus.OK_200)
+            .body(containsString("\"tags\":[\"Cassandra Mappings Operations\"]"))
+            .body(containsString("{\"name\":\"ReIndexing (mailboxes)\"}"))
+            .body(containsString("{\"name\":\"MessageIdReIndexing\"}"));
+    }
 }
\ No newline at end of file
diff --git a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
index 1ffe07b..ee1e92c 100644
--- a/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/webadmin-integration-test-common/src/main/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
@@ -297,10 +297,7 @@ public abstract class WebAdminServerIntegrationTest {
             .body(containsString("\"tags\":[\"MailQueues\"]"))
             .body(containsString("\"tags\":[\"Address Forwards\"]"))
             .body(containsString("\"tags\":[\"Address Aliases\"]"))
-            .body(containsString("\"tags\":[\"Address Groups\"]"))
-            .body(containsString("\"tags\":[\"Cassandra Mappings Operations\"]"))
-            .body(containsString("{\"name\":\"ReIndexing (mailboxes)\"}"))
-            .body(containsString("{\"name\":\"MessageIdReIndexing\"}"));
+            .body(containsString("\"tags\":[\"Address Groups\"]"));
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org