JAMES-2436 Simply handle folder hierarchy
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7f945d34 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7f945d34 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7f945d34 Branch: refs/heads/master Commit: 7f945d34fb0f48bb40eea9edef843eeb51dfdd35 Parents: 9e0202a Author: Raphael Ouazana <[email protected]> Authored: Wed Jun 20 15:31:59 2018 +0200 Committer: Raphael Ouazana <[email protected]> Committed: Wed Jun 27 16:36:12 2018 +0200 ---------------------------------------------------------------------- .../mailbox/backup/MailboxMessageFixture.java | 5 ++++ .../apache/james/mailbox/backup/ZipperTest.java | 31 ++++++++++++++++++++ 2 files changed, 36 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/7f945d34/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java ---------------------------------------------------------------------- diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java index e313de5..ea4b027 100644 --- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java +++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java @@ -27,6 +27,8 @@ import java.util.Date; import javax.mail.Flags; import javax.mail.util.SharedByteArrayInputStream; +import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.TestId; @@ -52,7 +54,10 @@ public interface MailboxMessageFixture { long SIZE_1 = 1000; long SIZE_2 = 2000; + MailboxSession MAILBOX_SESSION = new MockMailboxSession("user"); + Mailbox MAILBOX_1 = new SimpleMailbox(MailboxPath.forUser("user", "mailbox1"), 42, TestId.of(1L)); + Mailbox MAILBOX_1_SUB_1 = new SimpleMailbox(MailboxPath.forUser("user", "mailbox1" + MAILBOX_SESSION.getPathDelimiter() + "sub1"), 420, TestId.of(11L)); Mailbox MAILBOX_2 = new SimpleMailbox(MailboxPath.forUser("user", "mailbox2"), 43, TestId.of(2L)); SimpleMailboxMessage MESSAGE_1 = SimpleMailboxMessage.builder() http://git-wip-us.apache.org/repos/asf/james-project/blob/7f945d34/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java index accd629..d11c8c5 100644 --- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java +++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.backup; import static org.apache.james.mailbox.backup.MailboxMessageFixture.MAILBOX_1; +import static org.apache.james.mailbox.backup.MailboxMessageFixture.MAILBOX_1_SUB_1; import static org.apache.james.mailbox.backup.MailboxMessageFixture.MAILBOX_2; import static org.apache.james.mailbox.backup.MailboxMessageFixture.MESSAGE_1; import static org.apache.james.mailbox.backup.MailboxMessageFixture.MESSAGE_2; @@ -125,6 +126,36 @@ class ZipperTest { } } + @Test + void archiveShouldWriteMailboxHierarchyWhenPresent() throws Exception { + testee.archive(ImmutableList.of(MAILBOX_1, MAILBOX_1_SUB_1, MAILBOX_2), Stream.of(), output); + + try (ZipFile zipFile = new ZipFile(toSeekableByteChannel(output))) { + assertThatZip(zipFile) + .containsOnlyEntriesMatching( + hasName(MAILBOX_1.getName() + "/") + .isDirectory(), + hasName(MAILBOX_1_SUB_1.getName() + "/") + .isDirectory(), + hasName(MAILBOX_2.getName() + "/") + .isDirectory()); + } + } + + @Test + void archiveShouldWriteMailboxHierarchyWhenMissingParent() throws Exception { + testee.archive(ImmutableList.of(MAILBOX_1_SUB_1, MAILBOX_2), Stream.of(), output); + + try (ZipFile zipFile = new ZipFile(toSeekableByteChannel(output))) { + assertThatZip(zipFile) + .containsOnlyEntriesMatching( + hasName(MAILBOX_1_SUB_1.getName() + "/") + .isDirectory(), + hasName(MAILBOX_2.getName() + "/") + .isDirectory()); + } + } + private SeekableInMemoryByteChannel toSeekableByteChannel(ByteArrayOutputStream output) { return new SeekableInMemoryByteChannel(output.toByteArray()); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
