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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
