MAILET-149 Filename should be generated when none
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/84ed5a28 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/84ed5a28 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/84ed5a28 Branch: refs/heads/master Commit: 84ed5a28a266ec9102fc90896c52f62f10abf0db Parents: d0b6169 Author: Antoine Duprat <adup...@linagora.com> Authored: Mon Jan 23 10:09:37 2017 +0100 Committer: Antoine Duprat <adup...@linagora.com> Committed: Mon Jan 23 16:19:26 2017 +0100 ---------------------------------------------------------------------- .../transport/mailets/StripAttachment.java | 6 +-- .../transport/mailets/StripAttachmentTest.java | 52 ++++++++++++++++++-- .../mailets/AmqpForwardAttachmentTest.java | 2 +- 3 files changed, 51 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/84ed5a28/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java index 4bf7a5c..58b7304 100644 --- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java @@ -31,6 +31,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.UUID; import java.util.regex.Pattern; import javax.mail.BodyPart; @@ -310,9 +311,6 @@ public class StripAttachment extends GenericMailet { private boolean shouldBeRemoved(BodyPart bodyPart, Mail mail) throws MessagingException, Exception { String fileName = getFilename(bodyPart); - if (fileName == null) { - return false; - } boolean shouldRemove = removeAttachments.equals(REMOVE_ALL); String decodedName = DecoderUtil.decodeEncodedWords(fileName, DecodeMonitor.SILENT); @@ -379,7 +377,7 @@ public class StripAttachment extends GenericMailet { if (fileName != null) { return renameWithConfigurationPattern(decodeFilename(fileName)); } - return fileName; + return UUID.randomUUID().toString(); } private String renameWithConfigurationPattern(String fileName) { http://git-wip-us.apache.org/repos/asf/james-project/blob/84ed5a28/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java index 0c481c9..5995f98 100644 --- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java +++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java @@ -55,6 +55,8 @@ import org.junit.rules.TemporaryFolder; import com.google.common.base.Charsets; import com.google.common.base.Optional; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; public class StripAttachmentTest { @@ -217,7 +219,7 @@ public class StripAttachmentTest { MimeMessageBuilder.bodyPartBuilder() .data("simple text") .build(), - createAttachmentBodyPart(expectedAttachmentContent, "temp.tmp", TEXT_HEADERS), + createAttachmentBodyPart(expectedAttachmentContent, "temp_filname.tmp", TEXT_HEADERS), createAttachmentBodyPart("\u0014\u00A3\u00E1\u00E2\u00E4", "winmail.dat", TEXT_HEADERS)) .build(); @@ -230,13 +232,26 @@ public class StripAttachmentTest { @SuppressWarnings("unchecked") Collection<String> savedAttachments = (Collection<String>) mail.getAttribute(StripAttachment.SAVED_ATTACHMENTS_ATTRIBUTE_KEY); assertThat(savedAttachments).isNotNull(); - assertThat(savedAttachments).hasSize(1); - - String attachmentFilename = savedAttachments.iterator().next(); + assertThat(savedAttachments).hasSize(2); + String attachmentFilename = retrieveFilenameStartingWith(savedAttachments, "temp_filname"); + assertThat(attachmentFilename).isNotNull(); assertThat(new File(folderPath + attachmentFilename)).hasContent(expectedAttachmentContent); } + private String retrieveFilenameStartingWith(Collection<String> savedAttachments, final String filename) { + return FluentIterable.from(savedAttachments) + .filter(new Predicate<String>() { + + @Override + public boolean apply(String attachmentFilename) { + return attachmentFilename.startsWith(filename); + } + }) + .first() + .get(); + } + @Test public void serviceShouldDecodeFilenameAndSaveAttachmentInAFolderWhenPatternMatchAndDecodeFilenameTrue() throws MessagingException, IOException { Mailet mailet = initMailet(); @@ -760,6 +775,35 @@ public class StripAttachmentTest { } @Test + public void processMultipartPartMessageShouldSetFilenameToMatchingAttachmentsWhenAttachmentWithoutFilename() throws Exception { + //Given + StripAttachment mailet = new StripAttachment(); + + FakeMailetConfig mci = FakeMailetConfig.builder() + .mailetName("Test") + .setProperty("remove", "matched") + .setProperty("directory", folderPath) + .setProperty("pattern", ".*") + .build(); + mailet.init(mci); + + MimeMessage mimeMessage = MimeMessageBuilder.mimeMessageBuilder() + .setMultipartWithBodyParts( + MimeMessageBuilder.bodyPartBuilder() + .build()) + .build(); + + Mail mail = FakeMail.builder().build(); + //When + boolean actual = mailet.processMultipartPartMessage(mimeMessage, mail); + //Then + assertThat(actual).isTrue(); + @SuppressWarnings("unchecked") + List<String> values = (List<String>)mail.getAttribute(StripAttachment.SAVED_ATTACHMENTS_ATTRIBUTE_KEY); + assertThat(values).hasSize(1); + } + + @Test public void saveAttachmentShouldUsePartNameIfNoFilename() throws Exception { //Given StripAttachment mailet = new StripAttachment(); http://git-wip-us.apache.org/repos/asf/james-project/blob/84ed5a28/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java index 2ebc972..500140f 100644 --- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java +++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/AmqpForwardAttachmentTest.java @@ -98,7 +98,7 @@ public class AmqpForwardAttachmentTest { .match("All") .clazz("StripAttachment") .addProperty("attribute", MAIL_ATTRIBUTE) - .addProperty("pattern", ".*") + .addProperty("pattern", ".*\\.txt") .build()) .addMailet(MailetConfiguration.builder() .match("All") --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org