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
commit 9738e5dd547076471912d3046888d86b2fa9e592 Author: Tran Tien Duc <[email protected]> AuthorDate: Mon Mar 25 15:34:41 2019 +0700 JAMES-2688 DeletedMessageVault Export API Integration Tests --- .../org/apache/james/mailbox/backup/ZipAssert.java | 23 ++- .../cassandra-jmap-integration-testing/pom.xml | 5 + .../CassandraDeletedMessageVaultTest.java | 6 +- .../jmap-integration-testing-common/pom.xml | 6 + .../integration/DeletedMessagesVaultTest.java | 229 ++++++++++++++++++++- .../memory-jmap-integration-testing/pom.xml | 5 + ...FileMailRepositoryDeletedMessagesVaultTest.java | 6 +- .../memory/MemoryDeletedMessagesVaultTest.java | 6 +- .../rabbitmq-jmap-integration-testing/pom.xml | 5 + .../rabbitmq/RabbitMQDeletedMessagesVaultTest.java | 6 +- 10 files changed, 281 insertions(+), 16 deletions(-) diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssert.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssert.java index 9f0c9b0..4721ffd 100644 --- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssert.java +++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipAssert.java @@ -36,6 +36,7 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipExtraField; import org.apache.commons.compress.archivers.zip.ZipFile; import org.apache.commons.compress.utils.SeekableInMemoryByteChannel; +import org.apache.commons.io.IOUtils; import org.assertj.core.api.AbstractAssert; import org.assertj.core.error.BasicErrorMessageFactory; import org.assertj.core.error.ErrorMessageFactory; @@ -91,6 +92,14 @@ public class ZipAssert extends AbstractAssert<ZipAssert, ZipFile> implements Aut return assertThatZip(new ZipFile(new SeekableInMemoryByteChannel(outputStream.toByteArray()))); } + public static ZipAssert assertThatZip(InputStream inputStream) throws IOException { + return assertThatZip(zipFileFromInputStream(inputStream)); + } + + private static ZipFile zipFileFromInputStream(InputStream inputStream) throws IOException { + return new ZipFile(new SeekableInMemoryByteChannel(IOUtils.toByteArray(inputStream))); + } + private static BasicErrorMessageFactory shouldHaveSize(ZipFile zipFile, int expected, int actual) { return new BasicErrorMessageFactory("%nExpecting %s to have size %s but was %s", zipFile, expected, actual); } @@ -104,12 +113,12 @@ public class ZipAssert extends AbstractAssert<ZipAssert, ZipFile> implements Aut } private static BasicErrorMessageFactory shouldHaveSameEntriesSize(List<ZipArchiveEntry> entries, List<ZipArchiveEntry> expectedEntries) { - return new BasicErrorMessageFactory("%nExpecting zipFile entries has size (%s) but actually (%s)", expectedEntries.size(), entries.size()); + return new BasicErrorMessageFactory("%nExpecting zipFile to contains %s entries (%s) but actually contains (%s)", + expectedEntries.size(), expectedEntries, entries); } - private static ErrorMessageFactory entriesShouldHaveSameContentAt(int entryIndex, String entryContentAssertionError) { - return new BasicErrorMessageFactory("%nExpecting zipFile entry at index %s have same content. Details: \n%s", - entryIndex, entryContentAssertionError); + private static ErrorMessageFactory entriesShouldHaveSameContentAt(int entryIndex) { + return new BasicErrorMessageFactory("%nExpecting zipFile entry at index %s has same content", entryIndex); } private static ErrorMessageFactory entriesShouldHaveSameName(ZipArchiveEntry entry, ZipArchiveEntry expectedEntry, int entryIndex) { @@ -160,6 +169,10 @@ public class ZipAssert extends AbstractAssert<ZipAssert, ZipFile> implements Aut zipFile.close(); } + public ZipAssert hasSameContentWith(InputStream inputStream) throws IOException { + return hasSameContentWith(zipFileFromInputStream(inputStream)); + } + public ZipAssert hasSameContentWith(ZipFile anotherZipFile) throws IOException { validateNonNull(zipFile); validateNonNull(anotherZipFile); @@ -204,7 +217,7 @@ public class ZipAssert extends AbstractAssert<ZipAssert, ZipFile> implements Aut assertThat(entryContent) .hasSameContentAs(expectingEntryContent); } catch (AssertionError assertionError) { - throwAssertionError(entriesShouldHaveSameContentAt(entryIndex, assertionError.getMessage())); + throwAssertionError(entriesShouldHaveSameContentAt(entryIndex)); } } diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml index fded2b6..82f0d44 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml @@ -82,6 +82,11 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>backup</artifactId> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>blob-objectstorage-guice</artifactId> <scope>test</scope> </dependency> diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java index 1f331c4..9cbc0ec 100644 --- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java +++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraDeletedMessageVaultTest.java @@ -24,6 +24,7 @@ import java.io.IOException; import org.apache.james.CassandraJmapTestRule; import org.apache.james.DockerCassandraRule; import org.apache.james.GuiceJamesServer; +import org.apache.james.filesystem.api.FileSystem; import org.apache.james.jmap.methods.integration.DeletedMessagesVaultTest; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.modules.mailbox.PreDeletionHookConfiguration; @@ -42,14 +43,15 @@ public class CassandraDeletedMessageVaultTest extends DeletedMessagesVaultTest { public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule(); @Override - protected GuiceJamesServer createJmapServer() throws IOException { + protected GuiceJamesServer createJmapServer(FileSystem fileSystem) throws IOException { return rule.jmapServer(cassandra.getModule(), binder -> binder.bind(PreDeletionHooksConfiguration.class) .toInstance(PreDeletionHooksConfiguration.forHooks( PreDeletionHookConfiguration.forClass(DeletedMessageVaultHook.class))), binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION), binder -> binder.bind(MailRepositoryDeletedMessageVault.Configuration.class) - .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("cassandra://var/deletedMessages/user")))); + .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("cassandra://var/deletedMessages/user"))), + binder -> binder.bind(FileSystem.class).toInstance(fileSystem)); } @Override diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml index c1bca3d..5925135 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/pom.xml @@ -52,6 +52,12 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>backup</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-data-jmap</artifactId> <scope>test</scope> </dependency> 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 109fa2b..7807d7b 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,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.JmapCommonRequests.getLastMessageId; import static org.apache.james.jmap.JmapCommonRequests.getOutboxId; import static org.apache.james.jmap.JmapCommonRequests.listMessageIdsForAccount; import static org.apache.james.jmap.JmapURIBuilder.baseUri; @@ -30,6 +31,8 @@ import static org.apache.james.jmap.TestingConstants.DOMAIN; import static org.apache.james.jmap.TestingConstants.LOCALHOST_IP; import static org.apache.james.jmap.TestingConstants.calmlyAwait; import static org.apache.james.jmap.TestingConstants.jmapRequestSpecBuilder; +import static org.apache.james.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; @@ -39,14 +42,18 @@ import java.util.List; import java.util.stream.Collectors; import org.apache.james.GuiceJamesServer; +import org.apache.james.filesystem.api.FileSystem; import org.apache.james.jmap.api.access.AccessToken; import org.apache.james.jmap.categories.BasicFeature; import org.apache.james.mailbox.DefaultMailboxes; +import org.apache.james.mailbox.backup.ZipAssert; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.probe.MailboxProbe; import org.apache.james.modules.MailboxProbeImpl; import org.apache.james.modules.protocols.ImapGuiceProbe; import org.apache.james.probe.DataProbe; +import org.apache.james.server.core.JamesServerResourceLoader; +import org.apache.james.server.core.filesystem.FileSystemImpl; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.IMAPMessageReader; import org.apache.james.utils.JmapGuiceProbe; @@ -59,6 +66,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.rules.TemporaryFolder; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; @@ -68,6 +76,39 @@ import io.restassured.parsing.Parser; import io.restassured.specification.RequestSpecification; public abstract class DeletedMessagesVaultTest { + + private static class ExportRequest { + + private static class Builder { + + @FunctionalInterface + interface RequireSharee { + RequireMatchingQuery exportTo(String sharee); + } + + @FunctionalInterface + interface RequireMatchingQuery { + ExportRequest query(String query); + } + } + + private static Builder.RequireSharee userExportFrom(String userExportFrom) { + return sharee -> query -> new ExportRequest(userExportFrom, sharee, query); + } + + private final String userExportFrom; + private final String sharee; + private final String matchingQuery; + + private ExportRequest(String userExportFrom, String sharee, String matchingQuery) { + this.userExportFrom = userExportFrom; + this.sharee = sharee; + this.matchingQuery = matchingQuery; + } + } + + private static final String FIRST_SUBJECT = "first subject"; + private static final String SECOND_SUBJECT = "second subject"; private static final String HOMER = "homer@" + DOMAIN; private static final String BART = "bart@" + DOMAIN; private static final String PASSWORD = "password"; @@ -79,24 +120,32 @@ public abstract class DeletedMessagesVaultTest { "\"combinator\": \"and\"," + "\"criteria\": []" + "}"; + private static final ExportRequest EXPORT_ALL_HOMER_MESSAGES_TO_BART = ExportRequest + .userExportFrom(HOMER) + .exportTo(BART) + .query(MATCH_ALL_QUERY); private MailboxId otherMailboxId; - protected abstract GuiceJamesServer createJmapServer() throws IOException; + protected abstract GuiceJamesServer createJmapServer(FileSystem fileSystem) throws IOException; protected abstract void awaitSearchUpToDate(); @Rule public IMAPMessageReader imapMessageReader = new IMAPMessageReader(); + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); private AccessToken homerAccessToken; private AccessToken bartAccessToken; private GuiceJamesServer jmapServer; private RequestSpecification webAdminApi; + private FileSystem fileSystem; @Before public void setup() throws Throwable { - jmapServer = createJmapServer(); + fileSystem = new FileSystemImpl(new JamesServerResourceLoader(tempFolder.getRoot().getPath())); + jmapServer = createJmapServer(fileSystem); jmapServer.start(); MailboxProbe mailboxProbe = jmapServer.getProbe(MailboxProbeImpl.class); DataProbe dataProbe = jmapServer.getProbe(DataProbeImpl.class); @@ -118,7 +167,7 @@ public abstract class DeletedMessagesVaultTest { } @After - public void tearDown() { + public void tearDown() throws Exception { jmapServer.stop(); } @@ -405,6 +454,166 @@ public abstract class DeletedMessagesVaultTest { .body(ARGUMENTS + ".list.subject", hasItem(SUBJECT)); } + @Category(BasicFeature.class) + @Test + public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenJmapDeleteMessage() throws Exception { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0); + + homerDeletesMessages(listMessageIdsForAccount(homerAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocation))) { + zipAssert.containsOnlyEntriesMatching(hasName(messageIdOfHomer)); + } + } + + @Category(BasicFeature.class) + @Test + public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeleteMessage() throws Exception { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0); + + imapMessageReader.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort()) + .login(HOMER, PASSWORD) + .select(IMAPMessageReader.INBOX) + .setFlagsForAllMessagesInMailbox("\\Deleted"); + imapMessageReader.expunge(); + + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocation))) { + zipAssert.containsOnlyEntriesMatching(hasName(messageIdOfHomer)); + } + } + + @Category(BasicFeature.class) + @Test + public void vaultExportShouldExportZipContainsVaultMessagesToShareeWhenImapDeletedMailbox() throws Exception { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + String messageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0); + + imapMessageReader.connect(LOCALHOST_IP, jmapServer.getProbe(ImapGuiceProbe.class).getImapPort()) + .login(HOMER, PASSWORD) + .select(IMAPMessageReader.INBOX); + + imapMessageReader.moveFirstMessage(MAILBOX_NAME); + + imapMessageReader.delete(MAILBOX_NAME); + + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocation))) { + zipAssert.containsOnlyEntriesMatching(hasName(messageIdOfHomer)); + } + } + + @Test + public void vaultExportShouldExportZipContainsOnlyMatchedMessages() throws Exception { + bartSendMessageToHomerWithSubject(FIRST_SUBJECT); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + String firstMessageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(0); + + bartSendMessageToHomerWithSubject(SECOND_SUBJECT); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2); + String secondMessageIdOfHomer = listMessageIdsForAccount(homerAccessToken).get(1); + + homerDeletesMessages(listMessageIdsForAccount(homerAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + ExportRequest exportRequest = ExportRequest + .userExportFrom(HOMER) + .exportTo(BART) + .query("{" + + " \"fieldName\": \"subject\"," + + " \"operator\": \"equals\"," + + " \"value\": \"" + FIRST_SUBJECT + "\"" + + "}"); + String fileLocation = exportAndGetFileLocationFromLastMail(exportRequest, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocation))) { + zipAssert.containsOnlyEntriesMatching(hasName(firstMessageIdOfHomer)); + } + } + + @Test + public void vaultExportShouldExportEmptyZipWhenQueryDoesntMatch() throws Exception { + bartSendMessageToHomerWithSubject(FIRST_SUBJECT); + bartSendMessageToHomerWithSubject(SECOND_SUBJECT); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 2); + + homerDeletesMessages(listMessageIdsForAccount(homerAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + ExportRequest exportRequest = ExportRequest + .userExportFrom(HOMER) + .exportTo(BART) + .query("{" + + " \"fieldName\": \"subject\"," + + " \"operator\": \"equals\"," + + " \"value\": \"non matching\"" + + "}"); + String fileLocation = exportAndGetFileLocationFromLastMail(exportRequest, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocation))) { + zipAssert.hasNoEntry(); + } + } + + @Test + public void vaultExportShouldExportEmptyZipWhenVaultIsEmpty() throws Exception { + String fileLocation = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocation))) { + zipAssert.hasNoEntry(); + } + } + + @Test + public void vaultExportShouldResponseIdempotentSideEffect() throws Exception { + bartSendMessageToHomer(); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 1); + + homerDeletesMessages(listMessageIdsForAccount(homerAccessToken)); + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(homerAccessToken).size() == 0); + + String fileLocationFirstExport = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken); + String fileLocationSecondExport = exportAndGetFileLocationFromLastMail(EXPORT_ALL_HOMER_MESSAGES_TO_BART, bartAccessToken); + + try (ZipAssert zipAssert = assertThatZip(fileSystem.getResource(fileLocationFirstExport))) { + zipAssert.hasSameContentWith(fileSystem.getResource(fileLocationSecondExport)); + } + } + + private String exportAndGetFileLocationFromLastMail(ExportRequest exportRequest, AccessToken shareeAccessToken) { + int currentNumberOfMessages = listMessageIdsForAccount(shareeAccessToken).size(); + exportVaultContent(exportRequest); + + WAIT_TWO_MINUTES.until(() -> listMessageIdsForAccount(shareeAccessToken).size() == currentNumberOfMessages + 1); + String exportingMessageId = getLastMessageId(shareeAccessToken); + return exportedFileLocationFromMailHeader(exportingMessageId, shareeAccessToken); + + } + + private String exportedFileLocationFromMailHeader(String messageId, AccessToken accessToken) { + return with() + .header("Authorization", accessToken.serialize()) + .body("[[\"getMessages\", {\"ids\": [\"" + messageId + "\"]}, \"#0\"]]") + .post("/jmap") + .jsonPath() + .getList(ARGUMENTS + ".list.headers.corresponding-file", String.class) + .get(0); + } + private void homerSharesHisMailboxWithBart() { with() .header("Authorization", homerAccessToken.serialize()) @@ -518,4 +727,18 @@ public abstract class DeletedMessagesVaultTest { .when() .post("/jmap"); } + + private void exportVaultContent(ExportRequest exportRequest) { + String taskId = + webAdminApi.with() + .body(exportRequest.matchingQuery) + .post("/deletedMessages/users/" + exportRequest.userExportFrom + "?action=export&exportTo=" + exportRequest.sharee) + .jsonPath() + .get("taskId"); + + webAdminApi.given() + .get("/tasks/" + taskId + "/await") + .then() + .body("status", is("completed")); + } } diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml index 02531d3..d2601dc 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/pom.xml @@ -57,6 +57,11 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>backup</artifactId> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-dnsservice-test</artifactId> </dependency> <dependency> diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/FileMailRepositoryDeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/FileMailRepositoryDeletedMessagesVaultTest.java index ec7dd62..4656d9d 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/FileMailRepositoryDeletedMessagesVaultTest.java +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/FileMailRepositoryDeletedMessagesVaultTest.java @@ -23,6 +23,7 @@ import java.io.IOException; import org.apache.james.GuiceJamesServer; import org.apache.james.MemoryJmapTestRule; +import org.apache.james.filesystem.api.FileSystem; import org.apache.james.jmap.methods.integration.DeletedMessagesVaultTest; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.modules.mailbox.PreDeletionHookConfiguration; @@ -43,13 +44,14 @@ public class FileMailRepositoryDeletedMessagesVaultTest extends DeletedMessagesV } @Override - protected GuiceJamesServer createJmapServer() throws IOException { + protected GuiceJamesServer createJmapServer(FileSystem fileSystem) throws IOException { return memoryJmap.jmapServer( binder -> binder.bind(PreDeletionHooksConfiguration.class) .toInstance(PreDeletionHooksConfiguration.forHooks( PreDeletionHookConfiguration.forClass(DeletedMessageVaultHook.class))), binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION), binder -> binder.bind(MailRepositoryDeletedMessageVault.Configuration.class) - .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("file://var/deletedMessages/user")))); + .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("file://var/deletedMessages/user"))), + binder -> binder.bind(FileSystem.class).toInstance(fileSystem)); } } diff --git a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java index d83717d..62360ad 100644 --- a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java +++ b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryDeletedMessagesVaultTest.java @@ -23,6 +23,7 @@ import java.io.IOException; import org.apache.james.GuiceJamesServer; import org.apache.james.MemoryJmapTestRule; +import org.apache.james.filesystem.api.FileSystem; import org.apache.james.jmap.methods.integration.DeletedMessagesVaultTest; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.modules.mailbox.PreDeletionHookConfiguration; @@ -37,14 +38,15 @@ public class MemoryDeletedMessagesVaultTest extends DeletedMessagesVaultTest { public MemoryJmapTestRule memoryJmap = new MemoryJmapTestRule(); @Override - protected GuiceJamesServer createJmapServer() throws IOException { + protected GuiceJamesServer createJmapServer(FileSystem fileSystem) throws IOException { return memoryJmap.jmapServer( binder -> binder.bind(PreDeletionHooksConfiguration.class) .toInstance(PreDeletionHooksConfiguration.forHooks( PreDeletionHookConfiguration.forClass(DeletedMessageVaultHook.class))), binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION), binder -> binder.bind(MailRepositoryDeletedMessageVault.Configuration.class) - .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("memory://var/deletedMessages/user")))); + .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("memory://var/deletedMessages/user"))), + binder -> binder.bind(FileSystem.class).toInstance(fileSystem)); } @Override diff --git a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/pom.xml index 21fec29..a6c4482 100644 --- a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/pom.xml +++ b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/pom.xml @@ -53,6 +53,11 @@ </dependency> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>backup</artifactId> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>blob-objectstorage</artifactId> <type>test-jar</type> <scope>test</scope> diff --git a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java index 840f45c..30f0a3a 100644 --- a/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java +++ b/server/protocols/jmap-integration-testing/rabbitmq-jmap-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQDeletedMessagesVaultTest.java @@ -24,6 +24,7 @@ import java.io.IOException; import org.apache.james.CassandraRabbitMQSwiftJmapTestRule; import org.apache.james.DockerCassandraRule; import org.apache.james.GuiceJamesServer; +import org.apache.james.filesystem.api.FileSystem; import org.apache.james.jmap.methods.integration.DeletedMessagesVaultTest; import org.apache.james.mailrepository.api.MailRepositoryUrl; import org.apache.james.modules.mailbox.PreDeletionHookConfiguration; @@ -42,14 +43,15 @@ public class RabbitMQDeletedMessagesVaultTest extends DeletedMessagesVaultTest { public CassandraRabbitMQSwiftJmapTestRule rule = CassandraRabbitMQSwiftJmapTestRule.defaultTestRule(); @Override - protected GuiceJamesServer createJmapServer() throws IOException { + protected GuiceJamesServer createJmapServer(FileSystem fileSystem) throws IOException { return rule.jmapServer(cassandra.getModule(), binder -> binder.bind(PreDeletionHooksConfiguration.class) .toInstance(PreDeletionHooksConfiguration.forHooks( PreDeletionHookConfiguration.forClass(DeletedMessageVaultHook.class))), binder -> binder.bind(WebAdminConfiguration.class).toInstance(WebAdminConfiguration.TEST_CONFIGURATION), binder -> binder.bind(MailRepositoryDeletedMessageVault.Configuration.class) - .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("cassandra://var/deletedMessages/user")))); + .toInstance(new MailRepositoryDeletedMessageVault.Configuration(MailRepositoryUrl.from("cassandra://var/deletedMessages/user"))), + binder -> binder.bind(FileSystem.class).toInstance(fileSystem)); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
