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

[james-project] 12/14: JAMES-2712 Extract vault requests to a proper helper class

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 0eab09fdc7a4d5b425221a41a820c2748a9ba65e
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Thu May 2 11:53:13 2019 +0700

    JAMES-2712 Extract vault requests to a proper helper class
---
 .../james/jmap/DeletedMessagesVaultRequests.java   | 83 +++++++++++++++++++++
 .../integration/DeletedMessagesVaultTest.java      | 85 ++++------------------
 ...LinshareBlobExportMechanismIntegrationTest.java | 26 ++-----
 3 files changed, 104 insertions(+), 90 deletions(-)

diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/DeletedMessagesVaultRequests.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/DeletedMessagesVaultRequests.java
new file mode 100644
index 0000000..21ace61
--- /dev/null
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/DeletedMessagesVaultRequests.java
@@ -0,0 +1,83 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap;
+
+import static org.hamcrest.Matchers.is;
+
+import io.restassured.specification.RequestSpecification;
+
+public class DeletedMessagesVaultRequests {
+
+    public static void exportVaultContent(RequestSpecification webAdminApi, ExportRequest exportRequest) {
+        String taskId =
+            webAdminApi.with()
+                .queryParam("action", "export")
+                .queryParam("exportTo", exportRequest.getSharee())
+                .body(exportRequest.getMatchingQuery())
+                .post("/deletedMessages/users/" + exportRequest.getUserExportFrom())
+            .jsonPath()
+                .get("taskId");
+
+        webAdminApi.with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+
+    public static void restoreMessagesForUserWithQuery(RequestSpecification webAdminApi, String user, String criteria) {
+        String taskId = webAdminApi.with()
+            .body(criteria)
+            .post("/deletedMessages/users/" + user + "?action=restore")
+        .jsonPath()
+            .get("taskId");
+
+        webAdminApi.given()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+
+    public static void purgeVault(RequestSpecification webAdminApi) {
+        String taskId =
+            webAdminApi.with()
+                .queryParam("scope", "expired")
+                .delete("/deletedMessages")
+            .jsonPath()
+                .get("taskId");
+
+        webAdminApi.with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+
+    public static void deleteFromVault(RequestSpecification webAdminApi, String user, String messageId) {
+        String taskId =
+            webAdminApi.with()
+                .delete("/deletedMessages/users/" + user + "/messages/" + messageId)
+            .jsonPath()
+                .get("taskId");
+
+        webAdminApi.with()
+            .get("/tasks/" + taskId + "/await")
+        .then()
+            .body("status", is("completed"));
+    }
+}
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java
index f8cc0f6..60faec2 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/DeletedMessagesVaultTest.java
@@ -22,6 +22,10 @@ package org.apache.james.jmap.methods.integration;
 import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.with;
 import static io.restassured.config.ParamConfig.UpdateStrategy.REPLACE;
+import static org.apache.james.jmap.DeletedMessagesVaultRequests.deleteFromVault;
+import static org.apache.james.jmap.DeletedMessagesVaultRequests.exportVaultContent;
+import static org.apache.james.jmap.DeletedMessagesVaultRequests.purgeVault;
+import static org.apache.james.jmap.DeletedMessagesVaultRequests.restoreMessagesForUserWithQuery;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
 import static org.apache.james.jmap.JmapCommonRequests.deleteMessages;
 import static org.apache.james.jmap.JmapCommonRequests.getLastMessageId;
@@ -37,7 +41,6 @@ import static org.apache.james.mailbox.backup.ZipAssert.EntryChecks.hasName;
 import static org.apache.james.mailbox.backup.ZipAssert.assertThatZip;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.is;
 
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -258,7 +261,7 @@ public abstract class DeletedMessagesVaultTest {
             "    }" +
             "  ]" +
             "}";
-        restoreMessagesFor(HOMER, query);
+        restoreMessagesForUserWithQuery(webAdminApi, HOMER, query);
 
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1);
 
@@ -294,7 +297,7 @@ public abstract class DeletedMessagesVaultTest {
             "    }" +
             "  ]" +
             "}";
-        restoreMessagesFor(HOMER, query);
+        restoreMessagesForUserWithQuery(webAdminApi, HOMER, query);
 
 
         Thread.sleep(Duration.FIVE_SECONDS.getValueInMS());
@@ -591,7 +594,7 @@ public abstract class DeletedMessagesVaultTest {
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
         clock.setInstant(ONE_DAY_AFTER_ONE_YEAR_EXPIRATION);
-        purgeVault();
+        purgeVault(webAdminApi);
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
@@ -616,7 +619,7 @@ public abstract class DeletedMessagesVaultTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        purgeVault();
+        purgeVault(webAdminApi);
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
@@ -635,7 +638,7 @@ public abstract class DeletedMessagesVaultTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        purgeVault();
+        purgeVault(webAdminApi);
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
@@ -652,7 +655,7 @@ public abstract class DeletedMessagesVaultTest {
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
         clock.setInstant(ONE_DAY_AFTER_ONE_YEAR_EXPIRATION);
-        purgeVault();
+        purgeVault(webAdminApi);
 
         assertThat(listMessageIdsForAccount(homerAccessToken))
             .hasSize(0);
@@ -668,7 +671,7 @@ public abstract class DeletedMessagesVaultTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        deleteVault(HOMER, messageIdOfHomer);
+        deleteFromVault(webAdminApi, HOMER, messageIdOfHomer);
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
@@ -683,7 +686,7 @@ public abstract class DeletedMessagesVaultTest {
 
         String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0);
 
-        deleteVault(HOMER, messageIdOfHomer);
+        deleteFromVault(webAdminApi, HOMER, messageIdOfHomer);
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
@@ -702,7 +705,7 @@ public abstract class DeletedMessagesVaultTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        deleteVault(HOMER, messageIdOfBart);
+        deleteFromVault(webAdminApi, HOMER, messageIdOfBart);
 
         String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken);
         try (ZipAssert zipAssert = assertThatZip(new FileInputStream(fileLocation))) {
@@ -721,7 +724,7 @@ public abstract class DeletedMessagesVaultTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        deleteVault(HOMER, messageIdOfHomer);
+        deleteFromVault(webAdminApi, HOMER, messageIdOfHomer);
 
         assertThat(listMessageIdsForAccount(homerAccessToken))
             .hasSize(0);
@@ -729,7 +732,7 @@ public abstract class DeletedMessagesVaultTest {
 
     private String exportAndGetFileLocationFromLastMail(ExportRequest exportRequest, AccessToken shareeAccessToken) {
         int currentNumberOfMessages = listMessageIdsForAccount(shareeAccessToken).size();
-        exportVaultContent(exportRequest);
+        exportVaultContent(webAdminApi, exportRequest);
 
         WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(shareeAccessToken).size() == currentNumberOfMessages + 1);
         String exportingMessageId = getLastMessageId(shareeAccessToken);
@@ -814,20 +817,7 @@ public abstract class DeletedMessagesVaultTest {
     }
 
     private void restoreMessagesFor(String user) {
-        restoreMessagesFor(user, MATCH_ALL_QUERY);
-    }
-
-    private void restoreMessagesFor(String user, String criteria) {
-        String taskId = webAdminApi.with()
-            .body(criteria)
-            .post("/deletedMessages/users/" + user + "?action=restore")
-            .jsonPath()
-            .get("taskId");
-
-        webAdminApi.given()
-            .get("/tasks/" + taskId + "/await")
-            .then()
-            .body("status", is("completed"));
+        restoreMessagesForUserWithQuery(webAdminApi, user, MATCH_ALL_QUERY);
     }
 
     private void homerMovesTheMailInAnotherMailbox(String messageId) {
@@ -849,47 +839,4 @@ public abstract class DeletedMessagesVaultTest {
             .when()
             .post("/jmap");
     }
-
-    private void exportVaultContent(ExportRequest exportRequest) {
-        String taskId =
-            webAdminApi.with()
-                .queryParam("action", "export")
-                .queryParam("exportTo", exportRequest.getSharee())
-                .body(exportRequest.getMatchingQuery())
-                .post("/deletedMessages/users/" + exportRequest.getUserExportFrom())
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-                .get("/tasks/" + taskId + "/await")
-            .then()
-                .body("status", is("completed"));
-    }
-
-    private void purgeVault() {
-        String taskId =
-            webAdminApi.with()
-                .queryParam("scope", "expired")
-                .delete("/deletedMessages")
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
-
-    private void deleteVault(String user, String messageId) {
-        String taskId =
-            webAdminApi.with()
-                .delete("/deletedMessages/users/" + user + "/messages/" + messageId)
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
 }
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
index 58be63e..8e6c704 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/LinshareBlobExportMechanismIntegrationTest.java
@@ -21,6 +21,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.DeletedMessagesVaultRequests.exportVaultContent;
 import static org.apache.james.jmap.HttpJmapAuthentication.authenticateJamesUser;
 import static org.apache.james.jmap.JmapCommonRequests.deleteMessages;
 import static org.apache.james.jmap.JmapCommonRequests.getOutboxId;
@@ -36,7 +37,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.hasItem;
 import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
 
 import java.util.List;
 
@@ -127,7 +127,7 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TEN_SECONDS.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        exportVaultContent(EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
+        exportVaultContent(webAdminApi, EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
 
         assertThat(user1LinshareAPI.receivedShares())
             .hasSize(1)
@@ -149,7 +149,7 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
 
         WAIT_TEN_SECONDS.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        exportVaultContent(EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
+        exportVaultContent(webAdminApi, EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
 
         assertThat(user1LinshareAPI.receivedShares())
             .hasSize(1)
@@ -166,7 +166,7 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
         homerDeletesMessages(listMessageIdsForAccount(homerAccessToken));
         WAIT_TEN_SECONDS.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        exportVaultContent(EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
+        exportVaultContent(webAdminApi, EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
 
         WAIT_TEN_SECONDS.untilAsserted(
             () -> fakeSmtpRequestSpecification
@@ -195,7 +195,7 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
 
         WAIT_TEN_SECONDS.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0);
 
-        exportVaultContent(EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
+        exportVaultContent(webAdminApi, EXPORT_ALL_HOMER_MESSAGES_TO_USER_1);
 
         WAIT_TEN_SECONDS.untilAsserted(
                 () -> fakeSmtpRequestSpecification
@@ -244,20 +244,4 @@ public abstract class LinshareBlobExportMechanismIntegrationTest {
     private void homerDeletesMessages(List<String> idsToDestroy) {
         deleteMessages(homerAccessToken, idsToDestroy);
     }
-
-    private void exportVaultContent(ExportRequest exportRequest) {
-        String taskId =
-            webAdminApi.with()
-                .queryParam("action", "export")
-                .queryParam("exportTo", exportRequest.getSharee())
-                .body(exportRequest.getMatchingQuery())
-                .post("/deletedMessages/users/" + exportRequest.getUserExportFrom())
-            .jsonPath()
-                .get("taskId");
-
-        webAdminApi.with()
-            .get("/tasks/" + taskId + "/await")
-        .then()
-            .body("status", is("completed"));
-    }
 }


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