Repository: nifi
Updated Branches:
  refs/heads/master 6f1af31ff -> 3c8545a90


NIFI-1912 - PutEmail fixed format when attachment

Correction as suggested by users in JIRA.
+ adding a unit test to check attachments.

This closes: #1081

Signed-off-by: Andre F de Miranda <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/3c8545a9
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/3c8545a9
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/3c8545a9

Branch: refs/heads/master
Commit: 3c8545a90266b8f82a6c541c9a68daad107b0f23
Parents: 6f1af31
Author: Pierre Villard <[email protected]>
Authored: Thu Sep 29 22:47:04 2016 +0200
Committer: Andre F de Miranda <[email protected]>
Committed: Thu Oct 6 21:34:56 2016 +1100

----------------------------------------------------------------------
 .../nifi/processors/standard/PutEmail.java      |  2 +-
 .../nifi/processors/standard/TestPutEmail.java  | 49 ++++++++++++++++++++
 2 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi/blob/3c8545a9/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
index 27534fe..2965a67 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutEmail.java
@@ -318,7 +318,7 @@ public class PutEmail extends AbstractProcessor {
             if (context.getProperty(ATTACH_FILE).asBoolean()) {
                 final MimeBodyPart mimeText = new 
PreencodedMimeBodyPart("base64");
                 mimeText.setDataHandler(new DataHandler(new 
ByteArrayDataSource(
-                        Base64.encodeBase64(messageText.getBytes("UTF-8")), 
"text/plain; charset=\"utf-8\"")));
+                        Base64.encodeBase64(messageText.getBytes("UTF-8")), 
contentType + "; charset=\"utf-8\"")));
                 final MimeBodyPart mimeFile = new MimeBodyPart();
                 session.read(flowFile, new InputStreamCallback() {
                     @Override

http://git-wip-us.apache.org/repos/asf/nifi/blob/3c8545a9/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
----------------------------------------------------------------------
diff --git 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
index fb11d8f..782f61c 100644
--- 
a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
+++ 
b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutEmail.java
@@ -20,15 +20,21 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.mail.BodyPart;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage.RecipientType;
+import javax.mail.internet.MimeMultipart;
 
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.StringUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.nifi.util.LogMessage;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
@@ -182,6 +188,7 @@ public class TestPutEmail {
 
         assertEquals("Expected no messages to be sent", 0, 
processor.getMessages().size());
     }
+
     @Test
     public void testEmptyFrom() throws Exception {
         // verifies that if the FROM property evaluates to an empty string at
@@ -204,4 +211,46 @@ public class TestPutEmail {
         assertTrue(((String)logMessage.getArgs()[2]).contains("Required 
property 'From' evaluates to an empty string"));
     }
 
+    @Test
+    public void testOutgoingMessageAttachment() throws Exception {
+        // verifies that are set on the outgoing Message correctly
+        runner.setProperty(PutEmail.SMTP_HOSTNAME, "smtp-host");
+        runner.setProperty(PutEmail.HEADER_XMAILER, "TestingNiFi");
+        runner.setProperty(PutEmail.FROM, "[email protected]");
+        runner.setProperty(PutEmail.MESSAGE, "Message Body");
+        runner.setProperty(PutEmail.ATTACH_FILE, "true");
+        runner.setProperty(PutEmail.CONTENT_TYPE, "text/html");
+        runner.setProperty(PutEmail.TO, "[email protected]");
+
+        runner.enqueue("Some text".getBytes());
+
+        runner.run();
+
+        runner.assertQueueEmpty();
+        runner.assertAllFlowFilesTransferred(PutEmail.REL_SUCCESS);
+
+        // Verify that the Message was populated correctly
+        assertEquals("Expected a single message to be sent", 1, 
processor.getMessages().size());
+        Message message = processor.getMessages().get(0);
+        assertEquals("[email protected]", message.getFrom()[0].toString());
+        assertEquals("X-Mailer Header", "TestingNiFi", 
message.getHeader("X-Mailer")[0]);
+        assertEquals("[email protected]", 
message.getRecipients(RecipientType.TO)[0].toString());
+
+        assertTrue(message.getContent() instanceof MimeMultipart);
+
+        final MimeMultipart multipart = (MimeMultipart) message.getContent();
+        final BodyPart part = multipart.getBodyPart(0);
+        final InputStream is = part.getDataHandler().getInputStream();
+        final String decodedText = 
StringUtils.newStringUtf8(Base64.decodeBase64(IOUtils.toString(is, "UTF-8")));
+        assertEquals("Message Body", decodedText);
+
+        final BodyPart attachPart = multipart.getBodyPart(1);
+        final InputStream attachIs = 
attachPart.getDataHandler().getInputStream();
+        final String text = IOUtils.toString(attachIs, "UTF-8");
+        assertEquals("Some text", text);
+
+        assertNull(message.getRecipients(RecipientType.BCC));
+        assertNull(message.getRecipients(RecipientType.CC));
+    }
+
 }

Reply via email to