You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2019/03/12 11:04:19 UTC
[james-project] branch master updated: JAMES-2675 Rewrite flacky
Cucumber test (not really retrying) to plain Java
This is an automated email from the ASF dual-hosted git repository.
rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push:
new ec765e8 JAMES-2675 Rewrite flacky Cucumber test (not really retrying) to plain Java
new d4edc46 Merge remote-tracking branch 'mine/JAMES-2675-masterfix'
ec765e8 is described below
commit ec765e8db71395e15189132bd980ebf29a2b5ba1
Author: Raphael Ouazana <ra...@linagora.com>
AuthorDate: Fri Mar 8 16:04:38 2019 +0100
JAMES-2675 Rewrite flacky Cucumber test (not really retrying) to plain Java
---
.../cucumber/CassandraIMAPInconsistenciesTest.java | 36 ---------------
.../integration/GetMessageListMethodTest.java | 54 ++++++++++++++++++++++
.../methods/integration/cucumber/ImapStepdefs.java | 7 ---
.../resources/cucumber/ImapConsistency.feature | 36 ---------------
.../cucumber/MemoryIMAPInconsistenciesTest.java | 33 -------------
.../cucumber/RabbitMQIMAPInconsistenciesTest.java | 36 ---------------
6 files changed, 54 insertions(+), 148 deletions(-)
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPInconsistenciesTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPInconsistenciesTest.java
deleted file mode 100644
index 740ab2b..0000000
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPInconsistenciesTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.jmap.cassandra.cucumber;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
-
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/ImapConsistency.feature",
- glue = {"org.apache.james.jmap.methods.integration", "org.apache.james.jmap.cassandra.cucumber"},
- tags = {"not @Ignore", "@BasicFeature"},
- strict = true)
-@Category(EnableCucumber.class)
-public class CassandraIMAPInconsistenciesTest {
-}
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
index 869bca0..640d893 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/GetMessageListMethodTest.java
@@ -20,6 +20,7 @@
package org.apache.james.jmap.methods.integration;
import static io.restassured.RestAssured.given;
+import static io.restassured.RestAssured.with;
import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
import static org.apache.james.jmap.JmapURIBuilder.baseUri;
import static org.apache.james.jmap.TestingConstants.ALICE;
@@ -29,7 +30,9 @@ import static org.apache.james.jmap.TestingConstants.BOB;
import static org.apache.james.jmap.TestingConstants.BOB_PASSWORD;
import static org.apache.james.jmap.TestingConstants.DOMAIN;
import static org.apache.james.jmap.TestingConstants.NAME;
+import static org.apache.james.jmap.TestingConstants.calmlyAwait;
import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder;
+import static org.apache.james.transport.mailets.remote.delivery.HeloNameProvider.LOCALHOST;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -45,6 +48,7 @@ import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
+import java.util.concurrent.TimeUnit;
import javax.mail.Flags;
@@ -69,10 +73,12 @@ import org.apache.james.mime4j.message.MultipartBuilder;
import org.apache.james.mime4j.message.SingleBodyBuilder;
import org.apache.james.modules.ACLProbeImpl;
import org.apache.james.modules.MailboxProbeImpl;
+import org.apache.james.modules.protocols.ImapGuiceProbe;
import org.apache.james.probe.DataProbe;
import org.apache.james.util.ClassLoaderUtils;
import org.apache.james.util.date.ImapDateTimeFormatter;
import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
import org.apache.james.utils.JmapGuiceProbe;
import org.junit.After;
import org.junit.Before;
@@ -2169,4 +2175,52 @@ public abstract class GetMessageListMethodTest {
.body(ARGUMENTS + ".type", equalTo("invalidArguments"))
.body(ARGUMENTS + ".description", containsString("value should be positive and less than 2^53"));
}
+
+ @Test
+ public void getMessageListShouldReturnTwoMessagesWhenCopiedAtOnceViaIMAP() throws Exception {
+ mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE, "mailbox");
+ MailboxId otherMailboxId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, ALICE, "otherMailbox");
+
+ mailboxProbe.appendMessage(ALICE, MailboxPath.forUser(ALICE, "mailbox"),
+ MessageManager.AppendCommand.builder()
+ .build(Message.Builder.of()
+ .setSubject("test 1")
+ .setBody("content 1", StandardCharsets.UTF_8)));
+
+ mailboxProbe.appendMessage(ALICE, MailboxPath.forUser(ALICE, "mailbox"),
+ MessageManager.AppendCommand.builder()
+ .build(Message.Builder.of()
+ .setSubject("test 2")
+ .setBody("content 2", StandardCharsets.UTF_8)));
+
+ try (IMAPMessageReader imap = new IMAPMessageReader()) {
+ imap.connect(LOCALHOST, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort())
+ .login(ALICE, ALICE_PASSWORD)
+ .select("mailbox")
+ .copyAllMessagesInMailboxTo("otherMailbox");
+ }
+
+ await();
+
+ calmlyAwait
+ .atMost(30, TimeUnit.SECONDS)
+ .until(() -> twoMessagesFoundInMailbox(otherMailboxId));
+ }
+
+ private boolean twoMessagesFoundInMailbox(MailboxId mailboxId) {
+ try {
+ with()
+ .header("Authorization", aliceAccessToken.serialize())
+ .body("[[\"getMessageList\", {\"filter\":{\"inMailboxes\":[\"" + mailboxId.serialize() + "\"]}}, \"#0\"]]")
+ .when()
+ .post("/jmap")
+ .then()
+ .statusCode(200)
+ .body(NAME, equalTo("messageList"))
+ .body(ARGUMENTS + ".messageIds", hasSize(2));
+ return true;
+ } catch (AssertionError e) {
+ return false;
+ }
+ }
}
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/ImapStepdefs.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/ImapStepdefs.java
index 03194d0..b09b4d8 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/ImapStepdefs.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/ImapStepdefs.java
@@ -122,13 +122,6 @@ public class ImapStepdefs {
mainStepdefs.awaitMethod.run();
}
- @Then("^the user copies via IMAP all messages from mailbox \"([^\"]*)\" to mailbox \"([^\"]*)\"$")
- public void copyAllMessagesViaIMAPInMailbox(String sourceMailbox, String destinationMailbox) throws Throwable {
- IMAPMessageReader imapMessageReader = imapConnections.get(sourceMailbox);
- imapMessageReader.copyAllMessagesInMailboxTo(destinationMailbox);
- mainStepdefs.awaitMethod.run();
- }
-
@Then("^the user has a IMAP RECENT and a notification about (\\d+) new messages on connection for mailbox \"([^\"]*)\"$")
public void checkNotificationForNewMessageOnActiveConnection(int numberOfMessages, String mailbox) throws Throwable {
IMAPMessageReader imapMessageReader = imapConnections.get(mailbox);
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/ImapConsistency.feature b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/ImapConsistency.feature
deleted file mode 100644
index 4354208..0000000
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/resources/cucumber/ImapConsistency.feature
+++ /dev/null
@@ -1,36 +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. *
-# **************************************************************/
-Feature: Impact of IMAP on JMAP consistency
-
- Background:
- Given a domain named "domain.tld"
- And a connected user "username@domain.tld"
- And "username@domain.tld" has a mailbox "source"
- And "username@domain.tld" has a mailbox "trash"
-
- @BasicFeature
- Scenario: Two messages copied in one step via IMAP should be seen via JMAP
- Given the user has a message "m1" in "source" mailbox with subject "My awesome subject 1", content "This is the content 1"
- And the user has a message "m2" in "source" mailbox with subject "My awesome subject 2", content "This is the content 2"
- And the user has an open IMAP connection with mailbox "source" selected
- And the user copies via IMAP all messages from mailbox "source" to mailbox "trash"
- When "username@domain.tld" asks for message list in mailbox "trash"
- Then the message list has size 2
- And the message list contains "m1"
- And the message list contains "m2"
\ No newline at end of file
diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPInconsistenciesTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPInconsistenciesTest.java
deleted file mode 100644
index 3ff06e2..0000000
--- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/cucumber/MemoryIMAPInconsistenciesTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/****************************************************************
-
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.jmap.memory.cucumber;
-
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
-
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/ImapConsistency.feature",
- glue = {"org.apache.james.jmap.methods.integration", "org.apache.james.jmap.memory.cucumber"},
- strict = true)
-public class MemoryIMAPInconsistenciesTest {
-}
diff --git a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/RabbitMQIMAPInconsistenciesTest.java b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/RabbitMQIMAPInconsistenciesTest.java
deleted file mode 100644
index 5aec9d3..0000000
--- a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/RabbitMQIMAPInconsistenciesTest.java
+++ /dev/null
@@ -1,36 +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;
-
-import org.apache.james.jmap.categories.EnableCucumber;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-
-import cucumber.api.CucumberOptions;
-import cucumber.api.junit.Cucumber;
-
-@RunWith(Cucumber.class)
-@CucumberOptions(features = "classpath:cucumber/ImapConsistency.feature",
- glue = {"org.apache.james.jmap.methods.integration", "org.apache.james.jmap.rabbitmq.cucumber"},
- tags = {"not @Ignore", "@BasicFeature"},
- strict = true)
-@Category(EnableCucumber.class)
-public class RabbitMQIMAPInconsistenciesTest {
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org