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 65acac3d2ce1e7bbbae7fa2017e52a5d458d63b4
Author: Benoit TELLIER <btell...@linagora.com>
AuthorDate: Tue Jan 16 11:36:12 2024 +0100

    JAMES-3961 Cucumber update for JMAP draft integration tests
---
 pom.xml                                            |   6 +-
 server/data/data-cassandra/pom.xml                 |   5 +
 server/data/data-jpa/pom.xml                       |   5 +
 server/data/data-library/pom.xml                   |   5 +
 server/data/data-memory/pom.xml                    |   5 +
 .../cucumber/GetMessageListMethodStepdefs.java     |  13 ++-
 .../cucumber/GetMessagesMethodStepdefs.java        |  72 +++++++-----
 .../cucumber/SetMessagesMethodStepdefs.java        |  15 +--
 .../methods/integration/cucumber/UserStepdefs.java |   9 +-
 .../resources/cucumber/DownloadEndpoint.feature    |   2 +-
 .../test/resources/cucumber/DownloadGet.feature    |   2 +-
 .../test/resources/cucumber/GetMessages.feature    | 110 +++++++++----------
 .../cucumber/ImapKeywordsConsistency.feature       |   8 +-
 .../cucumber/sharing/CopyAndSharing.feature        |   2 +-
 .../cucumber/sharing/DownloadAndSharing.feature    |   2 +-
 .../cucumber/sharing/GetMessageAndSharing.feature  |   8 +-
 .../KeywordsConsistencyOnDelegationMailbox.feature |  26 ++---
 .../sharing/MailboxCreationAndSharing.feature      |   2 +-
 .../cucumber/sharing/MoveMailboxAndSharing.feature |   2 +-
 .../cucumber/sharing/MoveMessageAndSharing.feature |   2 +-
 .../sharing/RenamingMailboxAndSharing.feature      |   2 +-
 .../cucumber/sharing/SetFlagAndSharing.feature     |   2 +-
 .../sharing/SetMessagesOnSharedMailbox.feature     |   2 +-
 ...ringParentMailboxWithAndWithoutChildren.feature |  12 +-
 ...java => MemoryDownloadEnpointCucumberTest.java} |   4 +-
 .../cucumber/MemoryDownloadGetCucumberTest.java}   |  13 +--
 .../cucumber/MemoryDownloadPostCucumberTest.java}  |  13 +--
 .../MemorySetMailboxesMethodCucumberTest.java      |   2 +-
 .../cucumber/awss3/CucumberAwsS3Singleton.java     |  27 -----
 .../cucumber/awss3/CucumberCassandraSingleton.java |  27 -----
 .../awss3/CucumberOpenSearchSingleton.java         |  27 -----
 .../cucumber/awss3/CucumberRabbitMQSingleton.java  |  26 -----
 .../cucumber/awss3/RabbitMQAwsS3Stepdefs.java      | 121 ---------------------
 .../awss3/RabbitMQDownloadCucumberTest.java        |  40 -------
 .../awss3/RabbitMQGetMessagesMethodTest.java       |  40 -------
 .../RabbitMQSetMailboxesMethodCucumberTest.java    |  40 -------
 .../RabbitMQSetMessagesMethodCucumberTest.java     |  40 -------
 .../cucumber/awss3/RabbitMQSharingTest.java        |  40 -------
 .../cucumber/awss3/RabbitMQUploadCucumberTest.java |  40 -------
 39 files changed, 193 insertions(+), 626 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2000ff18f8..cad9398faf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2350,12 +2350,16 @@
                 <artifactId>cucumber-junit-platform-engine</artifactId>
                 <version>${cucumber.version}</version>
             </dependency>
-
             <dependency>
                 <groupId>io.cucumber</groupId>
                 <artifactId>cucumber-picocontainer</artifactId>
                 <version>${cucumber.version}</version>
             </dependency>
+            <dependency>
+                <groupId>io.cucumber</groupId>
+                <artifactId>messages</artifactId>
+                <version>22.0.0</version>
+            </dependency>
             <dependency>
                 <groupId>io.dropwizard.metrics</groupId>
                 <artifactId>metrics-core</artifactId>
diff --git a/server/data/data-cassandra/pom.xml 
b/server/data/data-cassandra/pom.xml
index c5199c86dd..801ccb2017 100644
--- a/server/data/data-cassandra/pom.xml
+++ b/server/data/data-cassandra/pom.xml
@@ -115,6 +115,11 @@
             <artifactId>cucumber-picocontainer</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>io.cucumber</groupId>
+            <artifactId>messages</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>net.javacrumbs.json-unit</groupId>
             <artifactId>json-unit-assertj</artifactId>
diff --git a/server/data/data-jpa/pom.xml b/server/data/data-jpa/pom.xml
index 00656337b8..dbd51824d8 100644
--- a/server/data/data-jpa/pom.xml
+++ b/server/data/data-jpa/pom.xml
@@ -119,6 +119,11 @@
             <artifactId>cucumber-picocontainer</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>io.cucumber</groupId>
+            <artifactId>messages</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-configuration2</artifactId>
diff --git a/server/data/data-library/pom.xml b/server/data/data-library/pom.xml
index 5f984c7ec9..5170eacf17 100644
--- a/server/data/data-library/pom.xml
+++ b/server/data/data-library/pom.xml
@@ -91,6 +91,11 @@
             <artifactId>cucumber-junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>io.cucumber</groupId>
+            <artifactId>messages</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>javax.annotation</groupId>
             <artifactId>javax.annotation-api</artifactId>
diff --git a/server/data/data-memory/pom.xml b/server/data/data-memory/pom.xml
index b2e99fefab..a5aa36887b 100644
--- a/server/data/data-memory/pom.xml
+++ b/server/data/data-memory/pom.xml
@@ -93,6 +93,11 @@
             <artifactId>cucumber-picocontainer</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>io.cucumber</groupId>
+            <artifactId>messages</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.awaitility</groupId>
             <artifactId>awaitility</artifactId>
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 676f9fa0dc..1eacc6c569 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
@@ -25,6 +25,7 @@ import static 
org.apache.james.jmap.JMAPTestingConstants.calmlyAwait;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import com.google.common.base.Splitter;
 import javax.inject.Inject;
 
 import org.apache.james.mailbox.model.MessageId;
@@ -50,25 +51,25 @@ public class GetMessageListMethodStepdefs {
     }
 
     @When("^\"([^\"]*)\" asks for message list in mailboxes \"([^\"]*)\" with 
flag \"([^\"]*)\"$")
-    public void getMessageListWithFlag(String username, List<String> 
mailboxes, String flag) throws Exception {
+    public void getMessageListWithFlag(String username, String mailboxes, 
String flag) throws Exception {
         httpClient.post(String.format(
                 "[[\"getMessageList\", {\"filter\":{" +
                 "    \"inMailboxes\":[\"%s\"]," +
                 "    \"hasKeyword\":\"%s\"" +
                 "}}, \"#0\"]]",
-            mainStepdefs.getMailboxIds(username, mailboxes),
+            mainStepdefs.getMailboxIds(username, 
Splitter.on(',').trimResults().splitToList(mailboxes)),
             flag));
     }
 
     @When("^\"([^\"]*)\" asks for message list in (?:mailboxes|mailbox) 
\"([^\"]*)\"$")
-    public void getMessageList(String username, List<String> mailboxes) throws 
Exception {
-        getMessageListFromMailboxIds(mainStepdefs.getMailboxIds(username, 
mailboxes));
+    public void getMessageList(String username, String mailboxes) throws 
Exception {
+        getMessageListFromMailboxIds(mainStepdefs.getMailboxIds(username, 
Splitter.on(',').trimResults().splitToList(mailboxes)));
     }
 
     @When("^\"([^\"]*)\" asks for message list in delegated 
(?:mailboxes|mailbox) \"([^\"]*)\" from \"([^\"]*)\"$")
-    public void getMessageListFromDelegated(String sharee, List<String> 
mailboxes, String sharer) throws Exception {
+    public void getMessageListFromDelegated(String sharee, String mailboxes, 
String sharer) throws Exception {
         userStepdefs.execWithUser(sharee, () ->
-            getMessageListFromMailboxIds(mainStepdefs.getMailboxIds(sharer, 
mailboxes)));
+            getMessageListFromMailboxIds(mainStepdefs.getMailboxIds(sharer, 
Splitter.on(',').trimResults().splitToList(mailboxes))));
     }
 
     private void getMessageListFromMailboxIds(String mailboxIds) throws 
Exception {
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 6044ac0c6b..3ec2d8e5fa 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
@@ -26,6 +26,7 @@ import static 
org.apache.james.mailbox.model.MailboxConstants.INBOX;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.ByteArrayInputStream;
+import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.time.ZonedDateTime;
 import java.util.Date;
@@ -42,6 +43,7 @@ import javax.inject.Inject;
 
 import jakarta.mail.Flags;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.text.StringEscapeUtils;
 import org.apache.james.core.Username;
@@ -368,18 +370,18 @@ public class GetMessagesMethodStepdefs {
     }
 
     @Given("^\"([^\"]*)\" has a message \"([^\"]*)\" in the \"([^\"]*)\" 
mailbox with flags \"([^\"]*)\"$")
-    public void appendMessageWithFlags(String username, String messageName, 
String mailbox, List<String> flagList) throws Throwable {
+    public void appendMessageWithFlags(String username, String messageName, 
String mailbox, String flagList) throws Throwable {
         userStepdefs.execWithUser(username, () -> 
appendMessageWithFlags(messageName, mailbox, flagList));
     }
 
     @Given("^\"([^\"]*)\" has a message \"([^\"]*)\" in \"([^\"]*)\" mailbox$")
     public void appendSimpleMessage(String username, String messageName, 
String mailbox) throws Throwable {
-        userStepdefs.execWithUser(username, () -> 
appendMessageWithFlags(messageName, mailbox, ImmutableList.of()));
+        userStepdefs.execWithUser(username, () -> 
appendMessageWithFlags(messageName, mailbox, ""));
     }
 
     @Given("^the user has a message \"([^\"]*)\" in the \"([^\"]*)\" mailbox 
with flags \"([^\"]*)\"$")
-    public void appendMessageWithFlags(String messageName, String mailbox, 
List<String> flagList) throws Exception {
-        appendMessage(messageName, mailbox, 
StringListToFlags.fromFlagList(flagList));
+    public void appendMessageWithFlags(String messageName, String mailbox, 
String flagList) throws Exception {
+        appendMessage(messageName, mailbox, 
StringListToFlags.fromFlagList(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(flagList)));
     }
 
     @Given("^\"([^\"]*)\" receives a SMTP message specified in file 
\"([^\"]*)\" as message \"([^\"]*)\"$")
@@ -468,18 +470,29 @@ public class GetMessagesMethodStepdefs {
     }
 
     @When("^the user ask for messages \"(.*?)\"$")
-    public void postWithAListOfIds(List<String> ids) throws Exception {
-        requestedMessageIds = ids.stream()
+    public void postWithAListOfIds(String id) throws Exception {
+        requestedMessageIds = 
ImmutableList.of(messageIdStepdefs.getMessageId(id));
+        askMessages(requestedMessageIds);
+    }
+
+    @When("^the user ask for message \"(.*?)\"$")
+    public void postWithAnId(String ids) throws Exception {
+        requestedMessageIds = Splitter.on(',').trimResults().splitToStream(ids)
             .map(messageIdStepdefs::getMessageId)
             .collect(ImmutableList.toImmutableList());
         askMessages(requestedMessageIds);
     }
 
-    @When("^\"(.*?)\" ask for (?:messages|message) \"(.*?)\"$")
-    public void postWithAListOfIds(String user, List<String> ids) throws 
Throwable {
+    @When("^\"(.*?)\" ask for messages \"(.*?)\"$")
+    public void postWithAListOfIds(String user, String ids) {
         userStepdefs.execWithUser(user, () -> postWithAListOfIds(ids));
     }
 
+    @When("^\"(.*?)\" ask for message \"(.*?)\"$")
+    public void postWithAnId(String user, String id) {
+        userStepdefs.execWithUser(user, () -> postWithAListOfIds(id));
+    }
+
     @When("^\"(.*?)\" ask for an unknown message$")
     public void requestUnknownMessage(String user) throws Throwable {
         userStepdefs.execWithUser(user, this::requestUnknownMessage);
@@ -503,14 +516,14 @@ public class GetMessagesMethodStepdefs {
         return string -> "\"" + string + "\"";
     }
 
-    @When("^\"(.*?)\" is getting messages \"(.*?)\" with properties 
\"(.*?)\"$")
-    public void postWithParameters(String username, List<String> ids, 
List<String> properties) throws Throwable {
-        userStepdefs.execWithUser(username, () -> postWithParameters(ids, 
properties));
+    @When("^\"(.*?)\" is getting message \"(.*?)\" with properties \"(.*?)\"$")
+    public void postWithParameters(String username, String id, String 
properties) throws Throwable {
+        userStepdefs.execWithUser(username, () -> postWithParameters(id, 
properties));
     }
 
     @When("^the user is getting messages \"(.*?)\" with properties \"(.*?)\"$")
-    public void postWithParameters(List<String> ids, List<String> properties) 
throws Exception {
-        requestedMessageIds = ids.stream()
+    public void postWithParameters(String ids, String properties) throws 
Exception {
+        requestedMessageIds = Splitter.on(',').trimResults().splitToStream(ids)
             .map(messageIdStepdefs::getMessageId)
             .collect(ImmutableList.toImmutableList());
 
@@ -519,7 +532,7 @@ public class GetMessagesMethodStepdefs {
             .map(toJsonString())
             .collect(Collectors.joining(",", "[", "]"));
 
-        String serializedProperties = properties.stream()
+        String serializedProperties = 
Splitter.on(',').trimResults().splitToStream(properties)
             .map(toJsonString())
             .collect(Collectors.joining(",", "[", "]"));
 
@@ -593,7 +606,7 @@ public class GetMessagesMethodStepdefs {
 
     @Then("^\"([^\"]*)\" should see message \"([^\"]*)\" in mailboxes:$")
     public void assertMailboxesOfMessage(String user, String messageId, 
DataTable userMailboxes) throws Exception {
-        userStepdefs.execWithUser(user, () -> 
postWithAListOfIds(ImmutableList.of(messageId)));
+        userStepdefs.execWithUser(user, () -> postWithAListOfIds(messageId));
 
         List<String> mailboxIds = userMailboxes.asMap(String.class, 
String.class).entrySet().stream()
             .map(Throwing.function(userMailbox ->
@@ -704,16 +717,16 @@ public class GetMessagesMethodStepdefs {
         assertAttachment(SECOND_ATTACHMENT, attachmentProperties);
     }
 
-    @Then("^the preview of the message contains: (.*)$")
-    public void assertPreviewOfMessageShouldBePrintedWithEncoding(List<String> 
preview) {
+    @Then("^the preview of the message contains: \"(.*)\"$")
+    public void assertPreviewOfMessageShouldBePrintedWithEncoding(String 
preview) {
         String actual = httpClient.jsonPath.<String>read(FIRST_MESSAGE + 
".preview");
         assertThat(actual).contains(preview);
     }
 
     @Then("^the keywords of the message is (.*)$")
-    public void assertKeywordsOfMessageShouldDisplay(List<String> keywords) {
+    public void assertKeywordsOfMessageShouldDisplay(String keywords) {
         assertThat(httpClient.jsonPath.<Map<String, 
Boolean>>read(FIRST_MESSAGE + ".keywords").keySet())
-            .containsOnly(keywords.toArray(new String[0]));
+            
.containsOnly(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(keywords).toArray(new
 String[0]));
     }
 
     @Then("^the message has no keyword$")
@@ -723,24 +736,33 @@ public class GetMessagesMethodStepdefs {
     }
 
     @Then("^\"([^\"]*)\" should see message \"([^\"]*)\" with keywords 
\"([^\"]*)\"$")
-    public void assertKeywordsOfMessage(String user, String messageId, 
List<String> keywords) throws Exception {
-        userStepdefs.execWithUser(user, () -> 
postWithAListOfIds(ImmutableList.of(messageId)));
+    public void assertKeywordsOfMessage(String user, String messageId, String 
keywords) throws Exception {
+        userStepdefs.execWithUser(user, () -> postWithAListOfIds(messageId));
 
         assertThat(httpClient.jsonPath.<Map<String, 
Boolean>>read(FIRST_MESSAGE + ".keywords").keySet())
-            .containsOnly(keywords.toArray(new String[0]));
+            
.containsOnly(Splitter.on(',').trimResults().splitToList(keywords).toArray(new 
String[0]));
     }
 
     @Then("^\"([^\"]*)\" should see message \"([^\"]*)\" without keywords$")
     public void assertKeywordsEmpty(String user, String messageId) throws 
Exception {
-        userStepdefs.execWithUser(user, () -> 
postWithAListOfIds(ImmutableList.of(messageId)));
+        userStepdefs.execWithUser(user, () -> postWithAListOfIds(messageId));
 
         assertThat(httpClient.jsonPath.<Map<String, 
Boolean>>read(FIRST_MESSAGE + ".keywords").keySet())
             .isEmpty();
     }
 
     private void assertAttachment(String attachment, DataTable 
attachmentProperties) {
-        attachmentProperties.asList(TableRow.class)
-            .forEach(entry -> 
assertThat(httpClient.jsonPath.<Object>read(attachment + "." + 
entry.getKey())).isEqualTo(entry.getValue()));
+        try {
+            
System.out.println(IOUtils.toString(httpClient.response.getEntity().getContent()));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        attachmentProperties.asMap(String.class, String.class)
+            .forEach((key, value) -> {
+                System.out.println(key + " : " + value);
+                System.out.println(httpClient.jsonPath.<Object>read(attachment 
+ "." + key));
+                
assertThat(String.valueOf(httpClient.jsonPath.<Object>read(attachment + "." + 
key))).isEqualTo(value);
+            });
     }
 
     public String getBlobId() {
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/SetMessagesMethodStepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
index 70532ec8c8..9101ed4434 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/SetMessagesMethodStepdefs.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
+import com.google.common.base.Splitter;
 import javax.inject.Inject;
 
 import jakarta.mail.Flags;
@@ -83,10 +84,10 @@ public class SetMessagesMethodStepdefs {
     }
 
     @When("^the user moves \"([^\"]*)\" to user mailbox \"([^\"]*)\" and set 
flags \"([^\"]*)\"$")
-    public void moveMessageToMailboxAndChangeFlags(String message, String 
mailbox, List<String> keywords) throws Throwable {
+    public void moveMessageToMailboxAndChangeFlags(String message, String 
mailbox, String keywords) throws Throwable {
         MessageId messageId = messageIdStepdefs.getMessageId(message);
         MailboxId mailboxId = 
mainStepdefs.getMailboxId(userStepdefs.getConnectedUser(), mailbox);
-        String keywordString = toKeywordsString(keywords);
+        String keywordString = 
toKeywordsString(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(keywords));
 
         httpClient.post("[" +
             "  [" +
@@ -177,7 +178,7 @@ public class SetMessagesMethodStepdefs {
     }
 
     @When("^\"([^\"]*)\" sets flags \"([^\"]*)\" on message \"([^\"]*)\"$")
-    public void setFlags(String username, List<String> keywords, String 
message) {
+    public void setFlags(String username, String keywords, String message) {
         userStepdefs.execWithUser(username, () -> setFlags(keywords, message));
     }
 
@@ -267,9 +268,9 @@ public class SetMessagesMethodStepdefs {
     }
 
     @When("^the user sets flags \"([^\"]*)\" on message \"([^\"]*)\"$")
-    public void setFlags(List<String> keywords, String message) throws 
Throwable {
+    public void setFlags(String keywords, String message) throws Throwable {
         MessageId messageId = messageIdStepdefs.getMessageId(message);
-        String keywordString = toKeywordsString(keywords);
+        String keywordString = 
toKeywordsString(Splitter.on(',').omitEmptyStrings().trimResults().splitToList(keywords));
 
         httpClient.post("[" +
             "  [" +
@@ -293,8 +294,8 @@ public class SetMessagesMethodStepdefs {
     }
 
     @When("^message \"([^\"]*)\" has flags (.*) in mailbox \"([^\"]*)\" of 
user \"([^\"]*)\"$")
-    public void setMessageFlagsInSpecifiedMailbox(String message, List<String> 
flags, String mailbox, String mailboxOwner) throws Exception {
-        Flags newFlags = 
Keywords.lenientFactory().fromCollection(flags).asFlags();
+    public void setMessageFlagsInSpecifiedMailbox(String message, String 
flags, String mailbox, String mailboxOwner) throws Exception {
+        Flags newFlags = 
Keywords.lenientFactory().fromCollection(Splitter.on(',').trimResults().splitToList(flags)).asFlags();
         Username username = Username.of(userStepdefs.getConnectedUser());
         MessageId messageId = messageIdStepdefs.getMessageId(message);
         MailboxId mailboxId = mainStepdefs.getMailboxId(mailboxOwner, mailbox);
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 e05bb80b26..6a618f59a1 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
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
+import com.google.common.base.Splitter;
 import javax.inject.Inject;
 
 import org.apache.james.core.Username;
@@ -90,10 +91,10 @@ public class UserStepdefs {
         domains.add(domain);
     }
 
-    @Given("^some users (.*)$")
-    public void createUsers(List<String> users) {
-        users.stream()
-            .map(this::unquote)
+    @Given("^some users \"(.*)\"$")
+    public void createUsers(String users) {
+        Splitter.on(',').trimResults()
+            .splitToStream(users)
             .forEach(Throwing.consumer(this::createUser));
     }
     
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadEndpoint.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadEndpoint.feature
index 627020159c..e676798e2f 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadEndpoint.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadEndpoint.feature
@@ -23,7 +23,7 @@ Feature: Download endpoint
 
   Background:
     Given a domain named "domain.tld"
-    And some users "us...@domain.tld", "us...@domain.tld"
+    And some users "us...@domain.tld, us...@domain.tld"
     And "us...@domain.tld" has a mailbox "INBOX"
     And "us...@domain.tld" mailbox "INBOX" contains a message "m1" with an 
attachment "a1"
 
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadGet.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadGet.feature
index 5132a5fd4d..0e4107f073 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadGet.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/DownloadGet.feature
@@ -70,7 +70,7 @@ Feature: Download GET
 
   Scenario: Getting a message then getting its blob
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
subject "my test subject", content "testmail"
-    And "al...@domain.tld" ask for messages "m1"
+    And "al...@domain.tld" ask for message "m1"
     When "al...@domain.tld" downloads the message by its blobId
     Then she can read that blob
     And the blob size is 36
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
index 273ae57c32..4442c04d5c 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/GetMessages.feature
@@ -28,7 +28,7 @@ Feature: GetMessages method
   Scenario: Retrieving a message in several mailboxes should return a single 
message in these mailboxes
     Given "al...@domain.tld" has a mailbox "custom"
     And "al...@domain.tld" has a message "m1" in "INBOX" and "custom" 
mailboxes with subject "my test subject", content "testmail"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -61,7 +61,7 @@ Feature: GetMessages method
   @BasicFeature
   Scenario: Retrieving message should return messages when exists
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
subject "my test subject", content "testmail"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -78,7 +78,7 @@ Feature: GetMessages method
 
   Scenario Outline: Retrieving message should return messages when exists and 
is a html message
     Given "al...@domain.tld" has a message "m1" in <mailbox> mailbox with 
content-type <content-type> subject <subject>, content <content>
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -100,7 +100,7 @@ Feature: GetMessages method
 
   Scenario Outline: Retrieving message should return preview with tags when 
text message
     Given "al...@domain.tld" has a message "m1" in <mailbox> mailbox with 
content-type <content-type> subject <subject>, content <content>
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the preview of the message is <preview>
@@ -111,7 +111,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should filter properties
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
subject "my test subject", content "testmail"
-    When "al...@domain.tld" is getting messages "m1" with properties "id, 
subject"
+    When "al...@domain.tld" is getting message "m1" with properties "id, 
subject"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -127,7 +127,7 @@ Feature: GetMessages method
       |From    |u...@domain.tld |
       |header1 |Header1Content  |
       |HEADer2 |Header2Content  |
-    When "al...@domain.tld" is getting messages "m1" with properties 
"headers.from, headers.heADER2"
+    When "al...@domain.tld" is getting message "m1" with properties 
"headers.from, headers.heADER2"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -149,7 +149,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should return mandatory properties when not 
asked
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
subject "my test subject", content "testmail"
-    When "al...@domain.tld" is getting messages "m1" with properties "subject"
+    When "al...@domain.tld" is getting message "m1" with properties "subject"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -158,27 +158,25 @@ Feature: GetMessages method
   @BasicFeature
   Scenario: Retrieving message should return attachments when some
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with two 
attachments
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 2 attachments
     And the first attachment is:
-      |key      | value                                                        
     |
-      |type     |"image/jpeg; name="4037_014.jpg""                             
   |
+      |type     |image/jpeg; name="4037_014.jpg"                               
     |
       |size     |846                                                           
     |
       |cid      |null                                                          
     |
       |isInline |false                                                         
     |
     And the second attachment is:
-      |key      | value                                                        
     |
-      |type     |"image/jpeg; name="4037_015.jpg""                             
   |
+      |type     |image/jpeg; name="4037_015.jpg"                               
     |
       |size     |597                                                           
     |
-      |cid      |"part1.37a15c92.a7c34...@linagora.com"                        
     |
+      |cid      |part1.37a15c92.a7c34...@linagora.com                          
     |
       |isInline |true                                                          
     |
 
   Scenario: Retrieving message should return attachments and html body when 
some attachments and html message
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with two 
attachments
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
@@ -189,7 +187,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should return attachments and text body when 
some attachments and text message
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with two 
attachments in text
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
@@ -200,7 +198,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should return attachments and both html/text 
body when some attachments and both html/text message
     Given "al...@domain.tld" has a multipart message "m1" in "INBOX" mailbox
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
@@ -211,7 +209,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should return image and html body when 
multipart/alternative where first part is multipart/related with html and image
     Given "al...@domain.tld" has a multipart/related message "m1" in "INBOX" 
mailbox
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
@@ -222,7 +220,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should return textBody and htmlBody when 
incoming mail have an inlined HTML and text body without Content-ID
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox, composed 
of a multipart with inlined text part and inlined html part
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the textBody of the message is "Hello text body\n"
@@ -230,20 +228,20 @@ Feature: GetMessages method
 
   Scenario: Retrieving message with more than 1000 char by line should return 
message when exists
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox beginning 
by a long line
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
 
   Scenario:
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with two 
same attachments in text
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list of attachments of the message contains 2 attachments
 
   Scenario: Retrieving message should read content from multipart when some 
inline attachment and both html/text multipart
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
plain/text inline attachment
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "false"
@@ -252,7 +250,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should find html body when text in main 
multipart and html in inner multipart
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with text 
in main multipart and html in inner multipart
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the textBody of the message is "/blabla/\r\n*bloblo*\r\n"
@@ -260,7 +258,7 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should compute text body from html body
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with html 
body and no text body
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the textBody of the message is "The Test User created an issue"
@@ -268,40 +266,38 @@ Feature: GetMessages method
 
   Scenario: Retrieving message with inline attachment but no CID should 
convert that inlined attachment to normal attachment
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with inline 
attachment but no CID
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 1 attachments
     And the first attachment is:
-      |key      | value                                                        
          |
-      |type     |"application/pdf;     x-unix-mode=0644;       
name="deromaCollection-628.pdf"" |
+      |type     |application/pdf;      x-unix-mode=0644;       
name="deromaCollection-628.pdf"  |
       |cid      |null                                                          
          |
       |isInline |false                                                         
          |
 
   Scenario: Retrieving message with inline attachment and blank CID should 
convert that inlined attachment to normal attachment
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with inline 
attachment and blank CID
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 1 attachments
     And the first attachment is:
-        |key      | value                                                      
              |
-        |type     |"application/pdf;   x-unix-mode=0644;       
name="deromaCollection-628.pdf"" |
+        |type     |application/pdf;    x-unix-mode=0644;       
name="deromaCollection-628.pdf"      |
         |cid      |null                                                        
              |
         |isInline |false                                                       
              |
 
   Scenario: Preview should be computed even when HTML body contains many tags 
without content
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with HTML 
body with many empty tags
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the preview of the message is not empty
 
   Scenario: Retrieving message which contains multiple same inlined attachments
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
multiple same inlined attachments "ia1"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "false"
@@ -309,7 +305,7 @@ Feature: GetMessages method
 
   Scenario: Preview and bodies should respect given charset
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
specific charset
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the preview of the message is "àààà éééé èèèè"
@@ -318,7 +314,7 @@ Feature: GetMessages method
 
   Scenario: Preview should be normalized in case of long and complicated HTML 
content
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with long 
and complicated HTML content
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the preview of the message is not empty
@@ -327,19 +323,19 @@ Feature: GetMessages method
   Scenario Outline: Preview should display printable characters with charset
     Given "al...@domain.tld" has a message "m1" in "INBOX" mailbox with 
content-type <content-type> subject "Subject", content <content>, headers
         |Content-Transfer-Encoding    |<tranfer-encoding> |
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
-    And the preview of the message contains: <preview>
+    And the preview of the message contains: "<preview>"
 
     Examples:
             |content-type                                       
|tranfer-encoding   |content                                                    
                                                 |preview                       
                                                               |
-            |"text/html; charset=iso-8859-1"                    
|quoted-printable   |"Dans le cadre du stage effectu=E9 Mlle 2017, =E0 sign=E9e 
d=E8s que possible, =E0, tr=E8s, journ=E9e.."    |effectué, à, signée dès, 
très, journée                                                                   
     |
+            |"text/html; charset=iso-8859-1"                    
|quoted-printable   |"Dans le cadre du stage effectu=E9 Mlle 2017, =E0 sign=E9e 
d=E8s que possible, =E0, tr=E8s, journ=E9e.."    |effectué Mlle 2017, à signée 
dès que possible, à, très, journée                                              
                          |
 
   @BasicFeature
   Scenario Outline: Retrieving message should display keywords as jmap flag
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
flags <flags>
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the keywords of the message is <keyword>
@@ -350,7 +346,7 @@ Feature: GetMessages method
 
   Scenario Outline: GetMessages should filter invalid keywords
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
flags <flags>
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the keywords of the message is <keyword>
@@ -361,7 +357,7 @@ Feature: GetMessages method
 
   Scenario Outline: Retrieving message should display keywords without 
unsupported jmap flag
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
flags <flags>
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the keywords of the message is <keyword>
@@ -372,7 +368,7 @@ Feature: GetMessages method
 
   Scenario Outline: Retrieving message should display keywords with custom 
user jmap flag
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
flags <flags>
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the keywords of the message is <keyword>
@@ -383,70 +379,66 @@ Feature: GetMessages method
 
   Scenario: Retrieving message should include true isForwarded property when 
set
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
flags "$Forwarded"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the isForwarded property of the message is "true"
 
   Scenario: Retrieving message should include false isForwarded property when 
not set
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
flags "$Answered"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the isForwarded property of the message is "false"
 
   Scenario: Retrieving message should be possible when message with inlined 
attachment but without content disposition
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
inlined attachments without content disposition
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 1 attachments
     And the first attachment is:
-      |key      | value                                           |
-      |type     |"application/octet-stream; name="encrypted.asc"" |
+      |type     |application/octet-stream; name="encrypted.asc"   |
       |cid      |null                                             |
-      |name     |"encrypted.asc"                                  |
+      |name     |encrypted.asc                                    |
       |isInline |false                                            |
 
   Scenario: Retrieving message should be possible when message with inlined 
image but without content disposition
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
inlined image without content disposition
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 1 attachments
     And the first attachment is:
-      |key      | value                                           |
-      |type     |"image/png; name=vlc.png"                        |
-      |cid      |"14672787885774e5c4d4cee471352...@linagora.com"  |
-      |name     |"vlc.png"                                        |
+      |type     |image/png; name=vlc.png                          |
+      |cid      |14672787885774e5c4d4cee471352...@linagora.com    |
+      |name     |vlc.png                                          |
       |isInline |false                                            |
 
   Scenario: Retrieving message should be possible when message with inlined 
attachment but without content ID
     Given "al...@domain.tld" has a message "m1" in the "INBOX" mailbox with 
inlined image without content ID
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 1 attachments
     And the first attachment is:
-    |key      | value                                                          
                        |
-    |type     |"image/jpeg;    name=IMG_6112.JPG;      
x-apple-part-url=B11616AF-86EB-47AF-863A-176A823498DB" |
+    |type     |image/jpeg;     name=IMG_6112.JPG;      
x-apple-part-url=B11616AF-86EB-47AF-863A-176A823498DB  |
     |cid      |null                                                            
                        |
-    |name     |"IMG_6112.JPG"                                                  
                        |
+    |name     |IMG_6112.JPG                                                    
                        |
     |isInline |false                                                           
                        |
 
   Scenario: Header only text calendar should be read as normal calendar 
attachment by JMAP
     Given "al...@domain.tld" receives a SMTP message specified in file 
"eml/ics_in_header.eml" as message "m1"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the hasAttachment of the message is "true"
     And the list of attachments of the message contains 1 attachments
     And the first attachment is:
-    |key      | value                                                       |
-    |type     |"text/calendar; method=REPLY; charset=UTF-8; name=event.ics" |
+    |type     |text/calendar; method=REPLY; charset=UTF-8; name=event.ics   |
     |size     |1096                                                         |
-    |name     |"event.ics"                                                  |
+    |name     |event.ics                                                    |
     |isInline |false                                                        |
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/ImapKeywordsConsistency.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/ImapKeywordsConsistency.feature
index 2cf97cb246..2c4df38546 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/ImapKeywordsConsistency.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/ImapKeywordsConsistency.feature
@@ -30,7 +30,7 @@ Feature: Impact of IMAP on JMAP keywords consistency
     And "usern...@domain.tld" copies "m1" from mailbox "source" to mailbox 
"mailbox"
     And the user has an open IMAP connection with mailbox "<mailbox>" selected
     And the user set flags via IMAP to "(\Flagged)" for all messages in 
mailbox "<mailbox>"
-    When the user ask for messages "m1"
+    When the user ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -46,7 +46,7 @@ Feature: Impact of IMAP on JMAP keywords consistency
     And "usern...@domain.tld" copies "m1" from mailbox "source" to mailbox 
"mailbox"
     And the user has an open IMAP connection with mailbox "<mailbox>" selected
     And the user set flags via IMAP to "(\Draft)" for all messages in mailbox 
"<mailbox>"
-    When the user ask for messages "m1"
+    When the user ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -102,7 +102,7 @@ Feature: Impact of IMAP on JMAP keywords consistency
     And the user has an open IMAP connection with mailbox "mailbox" selected
     And the user set flags via IMAP to "(\Flagged)" for all messages in 
mailbox "mailbox"
     When "usern...@domain.tld" sets flags "$Flagged" on message "m1"
-    Then the user ask for messages "m1"
+    Then the user ask for message "m1"
     And no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
@@ -131,7 +131,7 @@ Feature: Impact of IMAP on JMAP keywords consistency
     And the user has an open IMAP connection with mailbox "mailbox" selected
     And the user set flags via IMAP to "(\Flagged)" for all messages in 
mailbox "mailbox"
     When "usern...@domain.tld" sets flags "$Answered" on message "m1"
-    Then the user ask for messages "m1"
+    Then the user ask for message "m1"
     And no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/CopyAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/CopyAndSharing.feature
index 3e23a28d0c..dd8a0da80c 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/CopyAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/CopyAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Copy message and sharing
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" has a mailbox "INBOX"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "aeilrwt" rights
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/DownloadAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/DownloadAndSharing.feature
index ec45a5bf39..5fd161cc0c 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/DownloadAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/DownloadAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Download endpoint and shared mailbox
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld", "some...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld, some...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" mailbox "shared" contains a message "m1" with an 
attachment "a1"
     And "al...@domain.tld" shares his mailbox "shared" with "b...@domain.tld" 
with "lr" rights
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/GetMessageAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/GetMessageAndSharing.feature
index ebee883a2c..8789af5468 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/GetMessageAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/GetMessageAndSharing.feature
@@ -22,7 +22,7 @@ Feature: GetMessages method on shared mailbox
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld", "some...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld, some...@domain.tld"
     And "al...@domain.tld" has a mailbox "INBOX"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "lr" rights
@@ -30,20 +30,20 @@ Feature: GetMessages method on shared mailbox
 
   @BasicFeature
   Scenario: Retrieving a message in a mailbox delegated to me
-    When "b...@domain.tld" ask for messages "m1"
+    When "b...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
     And the id of the message is "m1"
 
   Scenario: Retrieving a message in a mailbox delegated to someone else
-    When "some...@domain.tld" ask for messages "m1"
+    When "some...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list of messages is empty
 
   Scenario: Retrieving a message in a mailbox not delegated to me
     Given "al...@domain.tld" has a mailbox "notShared"
     And "al...@domain.tld" has a message "m2" in "notShared" mailbox with 
subject "my test subject", content "testmail"
-    When "b...@domain.tld" ask for messages "m2"
+    When "b...@domain.tld" ask for message "m2"
     Then no error is returned
     And the list should contain 0 message
 
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/KeywordsConsistencyOnDelegationMailbox.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/KeywordsConsistencyOnDelegationMailbox.feature
index 8631a12e15..b83154dea1 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/KeywordsConsistencyOnDelegationMailbox.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/KeywordsConsistencyOnDelegationMailbox.feature
@@ -20,7 +20,7 @@ Feature: Keywords consistency on delegation mailbox
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "notShared"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" shares its mailbox "shared" with rights "lrw" with 
"b...@domain.tld"
@@ -59,20 +59,20 @@ Feature: Keywords consistency on delegation mailbox
 
   Scenario: getMessage with shared user should return message with combine 
flag when delegation mailbox
     Given message "m1" has flags $Flagged in mailbox "shared" of user 
"al...@domain.tld"
-    When "b...@domain.tld" ask for messages "m1"
+    When "b...@domain.tld" ask for message "m1"
     Then no error is returned
     And the keywords of the message is $Flagged
 
   Scenario: getMessage of owner mailbox should return message with combine 
flag when delegation mailbox
     Given message "m1" has flags $Flagged in mailbox "shared" of user 
"al...@domain.tld"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the keywords of the message is $Flagged
 
   Scenario: message should update message status based on delegation mailbox
     Given "al...@domain.tld" sets flags "$Flagged,$Seen" on message "m1"
     And "b...@domain.tld" sets flags "$Seen" on message "m1"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the message has IMAP flag "\Flagged \Seen" in mailbox "notShared" for 
"al...@domain.tld"
     And the message has IMAP flag "\Seen" in mailbox "shared" for 
"al...@domain.tld"
@@ -80,7 +80,7 @@ Feature: Keywords consistency on delegation mailbox
   Scenario: message should keep origin message status when cut the sharing
     Given "b...@domain.tld" sets flags "$Flagged" on message "m1"
     And "al...@domain.tld" shares its mailbox "shared" with rights "" with 
"b...@domain.tld"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the message has IMAP flag "\Flagged" in mailbox "shared" for 
"al...@domain.tld"
     And the message has IMAP flag "" in mailbox "notShared" for 
"al...@domain.tld"
@@ -89,52 +89,52 @@ Feature: Keywords consistency on delegation mailbox
     Given message "m1" has flags $Flagged in mailbox "notShared" of user 
"al...@domain.tld"
     And message "m1" has flags $Seen in mailbox "shared" of user 
"al...@domain.tld"
     And "al...@domain.tld" shares its mailbox "shared" with rights "" with 
"b...@domain.tld"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the keywords of the message is $Flagged,$Seen
 
   Scenario: getMessage on mailbox should keep its flag as it is when owner
     Given "al...@domain.tld" sets flags "$Flagged" on message "m1"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the message has IMAP flag "\Flagged" in mailbox "shared" for 
"al...@domain.tld"
     And the message has IMAP flag "\Flagged" in mailbox "notShared" for 
"al...@domain.tld"
 
   Scenario: messages should keep Draft flag as it is when onwer
     Given message "m1" has flags $Draft in mailbox "shared" of user 
"al...@domain.tld"
-    When "b...@domain.tld" ask for messages "m1"
+    When "b...@domain.tld" ask for message "m1"
     Then no error is returned
     And the keywords of the message is $Draft
 
   Scenario: message should intersect flag when Draft
     Given message "m1" has flags $Draft in mailbox "shared" of user 
"al...@domain.tld"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the message has no keyword
 
   Scenario: message should intersect flag when Draft after cut sharing
     Given message "m1" has flags $Draft in mailbox "shared" of user 
"al...@domain.tld"
     And "al...@domain.tld" shares its mailbox "shared" with rights "" with 
"b...@domain.tld"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the message has no keyword
 
   Scenario: message should combine flag if not Draft
     Given the user has an open IMAP connection with mailbox "shared" selected
     And the user set flags via IMAP to "\FLAGGED" for all messages in mailbox 
"shared"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the keywords of the message is $Flagged
 
   Scenario: message should combine flag if not Draft on all mailboxes
     Given "al...@domain.tld" sets flags "$Flagged" on message "m1"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the keywords of the message is $Flagged
 
   Scenario: message should intersect Draft flag with onwer mailbox
     Given the user has an open IMAP connection with mailbox "shared" selected
     And the user set flags via IMAP to "\DRAFT" for all messages in mailbox 
"shared"
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the message has no keyword
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MailboxCreationAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MailboxCreationAndSharing.feature
index 0aa408158e..989fed4743 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MailboxCreationAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MailboxCreationAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Mailbox creation and sharing
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "aeilrwt" rights
 
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMailboxAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMailboxAndSharing.feature
index 196a1c2be6..02e0324db1 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMailboxAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMailboxAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Moving mailbox and sharing
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "aeilrwt" rights
     And "al...@domain.tld" has a mailbox "shared.sharedChild"
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMessageAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMessageAndSharing.feature
index 0fc2155177..3b7b4e2fb0 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMessageAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/MoveMessageAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Move message and sharing
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" has a mailbox "INBOX"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "aeilrwt" rights
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/RenamingMailboxAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/RenamingMailboxAndSharing.feature
index 31f544c488..8893bce688 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/RenamingMailboxAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/RenamingMailboxAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Renaming mailbox and sharing
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "aeilrwt" rights
 
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetFlagAndSharing.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetFlagAndSharing.feature
index a4cd7c944f..4d857c93b8 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetFlagAndSharing.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetFlagAndSharing.feature
@@ -22,7 +22,7 @@ Feature: Set flag and sharing
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "al...@domain.tld" has a mailbox "shared"
     And "al...@domain.tld" shares her mailbox "shared" with "b...@domain.tld" 
with "aeilrwt" rights
     And "al...@domain.tld" has a message "m1" in "shared" mailbox
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetMessagesOnSharedMailbox.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetMessagesOnSharedMailbox.feature
index dc5d7c650e..cd18dc1ba5 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetMessagesOnSharedMailbox.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SetMessagesOnSharedMailbox.feature
@@ -22,7 +22,7 @@ Feature: SetMessages method on shared folders
 
   Background:
     Given a domain named "domain.tld"
-    And some users "al...@domain.tld", "b...@domain.tld"
+    And some users "al...@domain.tld, b...@domain.tld"
     And "b...@domain.tld" has a mailbox "shared"
     And "b...@domain.tld" has a mailbox "Outbox"
     And "al...@domain.tld" has a mailbox "INBOX"
diff --git 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SharingParentMailboxWithAndWithoutChildren.feature
 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SharingParentMailboxWithAndWithoutChildren.feature
index 24aaabd2c1..b17be55717 100644
--- 
a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SharingParentMailboxWithAndWithoutChildren.feature
+++ 
b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/resources/cucumber/sharing/SharingParentMailboxWithAndWithoutChildren.feature
@@ -59,32 +59,32 @@ Feature: Share parent mailbox without sharing submailbox
     And the mailbox "secret" has 1 messages
 
   Scenario: Alice can get message from her root shared mailbox
-    When "al...@domain.tld" ask for messages "m1"
+    When "al...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
 
   Scenario: Alice can get message from her children shared mailbox
-    When "al...@domain.tld" ask for messages "m3"
+    When "al...@domain.tld" ask for message "m3"
     Then no error is returned
     And the list should contain 1 message
 
   Scenario: Alice can get message from her not shared mailbox
-    When "al...@domain.tld" ask for messages "m2"
+    When "al...@domain.tld" ask for message "m2"
     Then no error is returned
     And the list should contain 1 message
 
   Scenario: Bob can get message from root shared mailbox
-    When "b...@domain.tld" ask for messages "m1"
+    When "b...@domain.tld" ask for message "m1"
     Then no error is returned
     And the list should contain 1 message
 
   Scenario: Bob can get message from children shared mailbox
-    When "b...@domain.tld" ask for messages "m3"
+    When "b...@domain.tld" ask for message "m3"
     Then no error is returned
     And the list should contain 1 message
 
   Scenario: Bob can not get message from mailbox not shared with him
-    When "b...@domain.tld" ask for messages "m2"
+    When "b...@domain.tld" ask for message "m2"
     Then the list should contain 0 message
 
   Scenario: Alice can list message from her shared root mailbox
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadEnpointCucumberTest.java
similarity index 91%
rename from 
server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
rename to 
server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadEnpointCucumberTest.java
index 96fa0e48ac..59b62c5c50 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadEnpointCucumberTest.java
@@ -28,9 +28,9 @@ import org.junit.platform.suite.api.SelectClasspathResource;
 import org.junit.platform.suite.api.Suite;
 
 @Suite
-@SelectClasspathResource("cucumber/DownloadEndpoint.feature,cucumber/DownloadGet.feature,cucumber/DownloadPost.feature")
+@SelectClasspathResource("cucumber/DownloadEndpoint.feature")
 @IncludeEngines("cucumber")
 @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
 @ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
-public class MemoryDownloadCucumberTest {
+public class MemoryDownloadEnpointCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadGetCucumberTest.java
similarity index 82%
rename from 
server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
rename to 
server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadGetCucumberTest.java
index 0a4a14e849..79629bb7b7 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPKeywordsInconsistenciesTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadGetCucumberTest.java
@@ -17,23 +17,20 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.rabbitmq.cucumber.awss3;
+package org.apache.james.jmap.memory.cucumber;
 
 import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
 import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.junit.experimental.categories.Category;
 import org.junit.platform.suite.api.ConfigurationParameter;
 import org.junit.platform.suite.api.IncludeEngines;
 import org.junit.platform.suite.api.SelectClasspathResource;
 import org.junit.platform.suite.api.Suite;
 
-@Category(EnableCucumber.class)
 @Suite
-@SelectClasspathResource("cucumber/ImapKeywordsConsistency.feature")
+@SelectClasspathResource("cucumber/DownloadGet.feature")
 @IncludeEngines("cucumber")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQIMAPKeywordsInconsistenciesTest {
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
+public class MemoryDownloadGetCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadPostCucumberTest.java
similarity index 81%
rename from 
server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
rename to 
server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadPostCucumberTest.java
index 9abba3d18a..39deea1509 100644
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQIMAPSetMessagesCompatibilityTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryDownloadPostCucumberTest.java
@@ -17,23 +17,20 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.jmap.rabbitmq.cucumber.awss3;
+package org.apache.james.jmap.memory.cucumber;
 
 import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
 import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
 
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.junit.experimental.categories.Category;
 import org.junit.platform.suite.api.ConfigurationParameter;
 import org.junit.platform.suite.api.IncludeEngines;
 import org.junit.platform.suite.api.SelectClasspathResource;
 import org.junit.platform.suite.api.Suite;
 
-@Category(EnableCucumber.class)
 @Suite
-@SelectClasspathResource("cucumber/ImapSetMessagesMailboxesUpdatesCompatibility.feature")
+@SelectClasspathResource("cucumber/DownloadPost.feature")
 @IncludeEngines("cucumber")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQIMAPSetMessagesCompatibilityTest {
+@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
+@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
+public class MemoryDownloadPostCucumberTest {
 }
diff --git 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
index 8ed62271e7..68a7e1f97d 100644
--- 
a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemorySetMailboxesMethodCucumberTest.java
@@ -28,7 +28,7 @@ import org.junit.platform.suite.api.SelectClasspathResource;
 import org.junit.platform.suite.api.Suite;
 
 @Suite
-@SelectClasspathResource("cucumber/MailboxModification.feature,cucumber/SetMailboxes.feature")
+@SelectClasspathResource("cucumber/MailboxModification.feature")
 @IncludeEngines("cucumber")
 @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.memory.cucumber")
 @ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore")
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberAwsS3Singleton.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberAwsS3Singleton.java
deleted file mode 100644
index e581eca666..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberAwsS3Singleton.java
+++ /dev/null
@@ -1,27 +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.cucumber.awss3;
-
-import org.apache.james.modules.objectstorage.aws.s3.DockerAwsS3TestRule;
-
-public class CucumberAwsS3Singleton {
-
-    public static DockerAwsS3TestRule awsS3Server = new DockerAwsS3TestRule();
-}
-
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberCassandraSingleton.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberCassandraSingleton.java
deleted file mode 100644
index a3fcd98983..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberCassandraSingleton.java
+++ /dev/null
@@ -1,27 +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.cucumber.awss3;
-
-import org.apache.james.DockerCassandraRule;
-
-class CucumberCassandraSingleton {
-
-    static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberOpenSearchSingleton.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberOpenSearchSingleton.java
deleted file mode 100644
index a0419cb172..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberOpenSearchSingleton.java
+++ /dev/null
@@ -1,27 +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.cucumber.awss3;
-
-import org.apache.james.DockerOpenSearchRule;
-
-class CucumberOpenSearchSingleton {
-
-    static final DockerOpenSearchRule elasticSearch = new 
DockerOpenSearchRule();
-
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberRabbitMQSingleton.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberRabbitMQSingleton.java
deleted file mode 100644
index aa22904184..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/CucumberRabbitMQSingleton.java
+++ /dev/null
@@ -1,26 +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.cucumber.awss3;
-
-import org.apache.james.modules.DockerRabbitMQRule;
-
-class CucumberRabbitMQSingleton {
-
-    static DockerRabbitMQRule rabbitMQServer = new DockerRabbitMQRule();
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
deleted file mode 100644
index 6412d813b0..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
+++ /dev/null
@@ -1,121 +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.cucumber.awss3;
-
-import java.util.Arrays;
-
-import io.cucumber.guice.ScenarioScoped;
-import javax.inject.Inject;
-
-import org.apache.james.CassandraRabbitMQJamesConfiguration;
-import org.apache.james.CassandraRabbitMQJamesServerMain;
-import org.apache.james.CleanupTasksPerformer;
-import org.apache.james.DockerCassandraRule;
-import org.apache.james.DockerOpenSearchRule;
-import org.apache.james.SearchConfiguration;
-import org.apache.james.jmap.draft.methods.integration.cucumber.ImapStepdefs;
-import org.apache.james.jmap.draft.methods.integration.cucumber.MainStepdefs;
-import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.modules.DockerRabbitMQRule;
-import org.apache.james.modules.TestJMAPServerModule;
-import org.apache.james.modules.TestRabbitMQModule;
-import org.apache.james.modules.blobstore.BlobStoreConfiguration;
-import org.apache.james.modules.objectstorage.aws.s3.DockerAwsS3TestRule;
-import org.apache.james.server.CassandraTruncateTableTask;
-import org.junit.rules.TemporaryFolder;
-
-import com.github.fge.lambdas.runnable.ThrowingRunnable;
-import com.google.inject.multibindings.Multibinder;
-
-import io.cucumber.java.After;
-import io.cucumber.java.Before;
-
-@ScenarioScoped
-public class RabbitMQAwsS3Stepdefs {
-
-    private final MainStepdefs mainStepdefs;
-    private final ImapStepdefs imapStepdefs;
-    private final TemporaryFolder temporaryFolder = new TemporaryFolder();
-    private final DockerCassandraRule cassandraServer = 
CucumberCassandraSingleton.cassandraServer;
-    private final DockerOpenSearchRule elasticSearch = 
CucumberOpenSearchSingleton.elasticSearch;
-    private final DockerRabbitMQRule rabbitMQServer = 
CucumberRabbitMQSingleton.rabbitMQServer;
-    private final DockerAwsS3TestRule awsS3Server = 
CucumberAwsS3Singleton.awsS3Server;
-
-    @Inject
-    private RabbitMQAwsS3Stepdefs(MainStepdefs mainStepdefs, ImapStepdefs 
imapStepdefs) {
-        this.mainStepdefs = mainStepdefs;
-        this.imapStepdefs = imapStepdefs;
-    }
-
-    @Before
-    public void init() throws Exception {
-        cassandraServer.start();
-        rabbitMQServer.start();
-        awsS3Server.start();
-        elasticSearch.start();
-
-        temporaryFolder.create();
-        mainStepdefs.messageIdFactory = new CassandraMessageId.Factory();
-        CassandraRabbitMQJamesConfiguration configuration = 
CassandraRabbitMQJamesConfiguration.builder()
-            .enableJMAP()
-            .workingDirectory(temporaryFolder.newFolder())
-            .configurationFromClasspath()
-            .blobStore(BlobStoreConfiguration.builder()
-                    .s3()
-                    .disableCache()
-                    .deduplication()
-                    .noCryptoConfig())
-            .searchConfiguration(SearchConfiguration.openSearch())
-            .build();
-
-        mainStepdefs.jmapServer = 
CassandraRabbitMQJamesServerMain.createServer(configuration)
-            .overrideWith(new TestJMAPServerModule())
-                .overrideWith(new 
TestRabbitMQModule(rabbitMQServer.dockerRabbitMQ()))
-                .overrideWith(awsS3Server.getModule())
-                .overrideWith(elasticSearch.getModule())
-                .overrideWith(cassandraServer.getModule())
-                .overrideWith(binder -> Multibinder.newSetBinder(binder, 
CleanupTasksPerformer.CleanupTask.class).addBinding().to(CassandraTruncateTableTask.class))
-                .overrideWith((binder -> 
binder.bind(CleanupTasksPerformer.class).asEagerSingleton()));
-        mainStepdefs.awaitMethod = () -> 
elasticSearch.getDockerEs().flushIndices();
-        mainStepdefs.init();
-    }
-
-    @After
-    public void tearDown() {
-        ignoreFailures(imapStepdefs::closeConnections,
-                mainStepdefs::tearDown,
-                () -> elasticSearch.getDockerEs().cleanUpData(),
-                () -> temporaryFolder.delete());
-    }
-
-    private void ignoreFailures(ThrowingRunnable... cleaners) {
-        Arrays.stream(cleaners)
-                .forEach(this::runSwallowingException);
-    }
-
-    private void runSwallowingException(Runnable run) {
-        try {
-            run.run();
-        } catch (Exception e) {
-            // ignore
-        }
-    }
-}
-
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
deleted file mode 100644
index b0246828ea..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQDownloadCucumberTest.java
+++ /dev/null
@@ -1,40 +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.cucumber.awss3;
-
-import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
-import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.platform.suite.api.ConfigurationParameter;
-import org.junit.platform.suite.api.IncludeEngines;
-import org.junit.platform.suite.api.SelectClasspathResource;
-import org.junit.platform.suite.api.Suite;
-
-@Category({EnableCucumber.class, Unstable.class})
-@Suite
-@IncludeEngines("cucumber")
-@SelectClasspathResource("cucumber/DownloadEndpoint.feature,cucumber/DownloadGet.feature,cucumber/DownloadPost.feature")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQDownloadCucumberTest {
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
deleted file mode 100644
index ed26f92d7f..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQGetMessagesMethodTest.java
+++ /dev/null
@@ -1,40 +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.cucumber.awss3;
-
-import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
-import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.platform.suite.api.ConfigurationParameter;
-import org.junit.platform.suite.api.IncludeEngines;
-import org.junit.platform.suite.api.SelectClasspathResource;
-import org.junit.platform.suite.api.Suite;
-
-@Category({EnableCucumber.class, Unstable.class})
-@Suite
-@IncludeEngines("cucumber/GetMessages.feature")
-@SelectClasspathResource("cucumber")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQGetMessagesMethodTest {
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
deleted file mode 100644
index 46dbc96617..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMailboxesMethodCucumberTest.java
+++ /dev/null
@@ -1,40 +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.cucumber.awss3;
-
-import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
-import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.platform.suite.api.ConfigurationParameter;
-import org.junit.platform.suite.api.IncludeEngines;
-import org.junit.platform.suite.api.SelectClasspathResource;
-import org.junit.platform.suite.api.Suite;
-
-@Category({EnableCucumber.class, Unstable.class})
-@Suite
-@SelectClasspathResource("cucumber/MailboxModification.feature,cucumber/SetMailboxes.feature")
-@IncludeEngines("cucumber")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQSetMailboxesMethodCucumberTest {
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
deleted file mode 100644
index 90be25610f..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSetMessagesMethodCucumberTest.java
+++ /dev/null
@@ -1,40 +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.cucumber.awss3;
-
-import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
-import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.platform.suite.api.ConfigurationParameter;
-import org.junit.platform.suite.api.IncludeEngines;
-import org.junit.platform.suite.api.SelectClasspathResource;
-import org.junit.platform.suite.api.Suite;
-
-@Category({EnableCucumber.class, Unstable.class})
-@Suite
-@IncludeEngines("cucumber")
-@SelectClasspathResource("cucumber/SetMessages.feature")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQSetMessagesMethodCucumberTest {
-}
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSharingTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSharingTest.java
deleted file mode 100644
index 787e08452f..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQSharingTest.java
+++ /dev/null
@@ -1,40 +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.cucumber.awss3;
-
-import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
-import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.platform.suite.api.ConfigurationParameter;
-import org.junit.platform.suite.api.IncludeEngines;
-import org.junit.platform.suite.api.SelectClasspathResource;
-import org.junit.platform.suite.api.Suite;
-
-@Category({EnableCucumber.class, Unstable.class})
-@Suite
-@IncludeEngines("cucumber")
-@SelectClasspathResource("cucumber/sharing")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQSharingTest {
-}
\ No newline at end of file
diff --git 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
 
b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
deleted file mode 100644
index da6a50f6da..0000000000
--- 
a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQUploadCucumberTest.java
+++ /dev/null
@@ -1,40 +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.cucumber.awss3;
-
-import static io.cucumber.core.options.Constants.FILTER_TAGS_PROPERTY_NAME;
-import static io.cucumber.core.options.Constants.GLUE_PROPERTY_NAME;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.apache.james.junit.categories.Unstable;
-import org.junit.experimental.categories.Category;
-import org.junit.platform.suite.api.ConfigurationParameter;
-import org.junit.platform.suite.api.IncludeEngines;
-import org.junit.platform.suite.api.SelectClasspathResource;
-import org.junit.platform.suite.api.Suite;
-
-@Category({EnableCucumber.class, Unstable.class})
-@Suite
-@SelectClasspathResource("cucumber/UploadEndpoint.feature")
-@IncludeEngines("cucumber")
-@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = 
"org.apache.james.jmap.draft.methods.integration,org.apache.james.jmap.rabbitmq.cucumber.awss3")
-@ConfigurationParameter(key = FILTER_TAGS_PROPERTY_NAME, value = "not @Ignore, 
@BasicFeature")
-public class RabbitMQUploadCucumberTest {
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to