You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/11/04 02:30:01 UTC
[james-project] 03/10: JAMES-2944 Refactor MIMEMessageConverterTest
to use Junit 5
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 6348f2165f4d70a3d7b711dbabd9ffd6bbd8105d
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Wed Oct 30 10:34:43 2019 +0700
JAMES-2944 Refactor MIMEMessageConverterTest to use Junit 5
---
.../draft/methods/MIMEMessageConverterTest.java | 400 +++++++++++----------
1 file changed, 205 insertions(+), 195 deletions(-)
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java
index 07af12d..7e95048 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MIMEMessageConverterTest.java
@@ -20,6 +20,7 @@
package org.apache.james.jmap.draft.methods;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.nio.charset.StandardCharsets;
import java.sql.Date;
@@ -44,14 +45,16 @@ import org.apache.james.mime4j.dom.address.Mailbox;
import org.apache.james.mime4j.dom.field.ContentTypeField;
import org.apache.james.mime4j.message.BasicBodyFactory;
import org.apache.james.mime4j.stream.Field;
-import org.junit.Test;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-public class MIMEMessageConverterTest {
+class MIMEMessageConverterTest {
+
@Test
- public void convertToMimeShouldAddInReplyToHeaderWhenProvided() {
+ void convertToMimeShouldAddInReplyToHeaderWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -73,7 +76,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldGenerateMessageId() {
+ void convertToMimeShouldGenerateMessageId() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -92,7 +95,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldGenerateMessageIdWhenSenderWithoutDomain() {
+ void convertToMimeShouldGenerateMessageIdWhenSenderWithoutDomain() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -112,7 +115,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldGenerateMessageIdContainingSenderDomain() {
+ void convertToMimeShouldGenerateMessageIdContainingSenderDomain() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -133,7 +136,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldAddHeaderWhenProvided() {
+ void convertToMimeShouldAddHeaderWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -154,7 +157,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldAddHeadersWhenProvided() {
+ void convertToMimeShouldAddHeadersWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -177,7 +180,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldFilterGeneratedHeadersWhenProvided() {
+ void convertToMimeShouldFilterGeneratedHeadersWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -203,7 +206,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldFilterGeneratedHeadersRegardlessOfCaseWhenProvided() {
+ void convertToMimeShouldFilterGeneratedHeadersRegardlessOfCaseWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -229,7 +232,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldAddMultivaluedHeadersWhenProvided() {
+ void convertToMimeShouldAddMultivaluedHeadersWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -250,7 +253,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldFilterEmptyHeaderNames() {
+ void convertToMimeShouldFilterEmptyHeaderNames() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -270,7 +273,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldFilterWhiteSpacesOnlyHeaderNames() {
+ void convertToMimeShouldFilterWhiteSpacesOnlyHeaderNames() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -290,15 +293,18 @@ public class MIMEMessageConverterTest {
assertThat(result.getHeader().getFields("")).isEmpty();
}
- @Test(expected = IllegalArgumentException.class)
- public void convertToMimeShouldThrowWhenMessageIsNull() {
+ @Test
+ void convertToMimeShouldThrowWhenMessageIsNull() {
MIMEMessageConverter sut = new MIMEMessageConverter();
- sut.convertToMime(new ValueWithId.CreationMessageEntry(CreationMessageId.of("any"), null), ImmutableList.of());
+ assertThatThrownBy(() -> sut.convertToMime(
+ new ValueWithId.CreationMessageEntry(CreationMessageId.of("any"), null),
+ ImmutableList.of()))
+ .isInstanceOf(IllegalArgumentException.class);
}
@Test
- public void convertToMimeShouldSetBothFromAndSenderHeaders() {
+ void convertToMimeShouldSetBothFromAndSenderHeaders() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -319,7 +325,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetCorrectLocalDate() {
+ void convertToMimeShouldSetCorrectLocalDate() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -342,7 +348,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetQuotedPrintableContentTransferEncodingWhenText() {
+ void convertToMimeShouldSetQuotedPrintableContentTransferEncodingWhenText() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -365,7 +371,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetTextBodyWhenProvided() {
+ void convertToMimeShouldSetTextBodyWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
TextBody expected = new BasicBodyFactory().textBody("Hello all!", StandardCharsets.UTF_8);
@@ -386,7 +392,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetEmptyBodyWhenNoBodyProvided() {
+ void convertToMimeShouldSetEmptyBodyWhenNoBodyProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
TextBody expected = new BasicBodyFactory().textBody("", StandardCharsets.UTF_8);
@@ -406,7 +412,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetHtmlBodyWhenProvided() {
+ void convertToMimeShouldSetHtmlBodyWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
TextBody expected = new BasicBodyFactory().textBody("Hello <b>all</b>!", StandardCharsets.UTF_8);
@@ -427,7 +433,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldGenerateMultipartWhenHtmlBodyAndTextBodyProvided() throws Exception {
+ void convertToMimeShouldGenerateMultipartWhenHtmlBodyAndTextBodyProvided() throws Exception {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -452,7 +458,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertShouldGenerateExpectedMultipartWhenHtmlAndTextBodyProvided() throws Exception {
+ void convertShouldGenerateExpectedMultipartWhenHtmlAndTextBodyProvided() throws Exception {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -488,7 +494,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetMimeTypeWhenTextBody() {
+ void convertToMimeShouldSetMimeTypeWhenTextBody() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -508,7 +514,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetMimeTypeWhenHtmlBody() {
+ void convertToMimeShouldSetMimeTypeWhenHtmlBody() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
@@ -528,7 +534,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetEmptyHtmlBodyWhenProvided() {
+ void convertToMimeShouldSetEmptyHtmlBodyWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
TextBody expected = new BasicBodyFactory().textBody("", StandardCharsets.UTF_8);
@@ -550,7 +556,7 @@ public class MIMEMessageConverterTest {
}
@Test
- public void convertToMimeShouldSetEmptyTextBodyWhenProvided() {
+ void convertToMimeShouldSetEmptyTextBodyWhenProvided() {
// Given
MIMEMessageConverter sut = new MIMEMessageConverter();
TextBody expected = new BasicBodyFactory().textBody("", StandardCharsets.UTF_8);
@@ -571,172 +577,176 @@ public class MIMEMessageConverterTest {
assertThat(result.getMimeType()).isEqualTo("text/plain");
}
- @Test
- public void convertToMimeShouldAddAttachmentWhenOne() {
- // Given
- MIMEMessageConverter sut = new MIMEMessageConverter();
-
- CreationMessage testMessage = CreationMessage.builder()
- .mailboxId("dead-bada55")
- .subject("subject")
- .from(DraftEmailer.builder().name("sender").build())
- .htmlBody("Hello <b>all<b>!")
- .build();
-
- String expectedCID = "cid";
- String expectedMimeType = "image/png";
- String text = "123456";
- TextBody expectedBody = new BasicBodyFactory().textBody(text.getBytes(), StandardCharsets.UTF_8);
- MessageAttachment attachment = MessageAttachment.builder()
- .attachment(org.apache.james.mailbox.model.Attachment.builder()
- .attachmentId(AttachmentId.from("blodId"))
- .bytes(text.getBytes())
- .type(expectedMimeType)
- .build())
- .cid(Cid.from(expectedCID))
- .isInline(true)
- .build();
-
- // When
- Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
- CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of(attachment));
-
- // Then
- assertThat(result.getBody()).isInstanceOf(Multipart.class);
- assertThat(result.isMultipart()).isTrue();
- Multipart typedResult = (Multipart)result.getBody();
- assertThat(typedResult.getBodyParts()).hasSize(2);
- Entity attachmentPart = typedResult.getBodyParts().get(1);
- assertThat(attachmentPart.getBody()).isEqualToComparingOnlyGivenFields(expectedBody, "content");
- assertThat(attachmentPart.getDispositionType()).isEqualTo("inline");
- assertThat(attachmentPart.getMimeType()).isEqualTo(expectedMimeType);
- assertThat(attachmentPart.getHeader().getField("Content-ID").getBody()).isEqualTo(expectedCID);
- assertThat(attachmentPart.getContentTransferEncoding()).isEqualTo("base64");
- }
-
- @Test
- public void convertToMimeShouldAddAttachmentAndMultipartAlternativeWhenOneAttachementAndTextAndHtmlBody() {
- // Given
- MIMEMessageConverter sut = new MIMEMessageConverter();
-
- CreationMessage testMessage = CreationMessage.builder()
- .mailboxId("dead-bada55")
- .subject("subject")
- .from(DraftEmailer.builder().name("sender").build())
- .textBody("Hello all!")
- .htmlBody("Hello <b>all<b>!")
- .build();
- TextBody expectedTextBody = new BasicBodyFactory().textBody("Hello all!".getBytes(), StandardCharsets.UTF_8);
- TextBody expectedHtmlBody = new BasicBodyFactory().textBody("Hello <b>all<b>!".getBytes(), StandardCharsets.UTF_8);
-
- String expectedCID = "cid";
- String expectedMimeType = "image/png";
- String text = "123456";
- TextBody expectedAttachmentBody = new BasicBodyFactory().textBody(text.getBytes(), StandardCharsets.UTF_8);
- MessageAttachment attachment = MessageAttachment.builder()
- .attachment(org.apache.james.mailbox.model.Attachment.builder()
- .attachmentId(AttachmentId.from("blodId"))
- .bytes(text.getBytes())
- .type(expectedMimeType)
- .build())
- .cid(Cid.from(expectedCID))
- .isInline(true)
- .build();
-
- // When
- Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
- CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of(attachment));
-
- // Then
- assertThat(result.getBody()).isInstanceOf(Multipart.class);
- assertThat(result.isMultipart()).isTrue();
- Multipart typedResult = (Multipart)result.getBody();
- assertThat(typedResult.getBodyParts()).hasSize(2);
- Entity mainBodyPart = typedResult.getBodyParts().get(0);
- assertThat(mainBodyPart.getBody()).isInstanceOf(Multipart.class);
- assertThat(mainBodyPart.isMultipart()).isTrue();
- assertThat(mainBodyPart.getMimeType()).isEqualTo("multipart/alternative");
- assertThat(((Multipart)mainBodyPart.getBody()).getBodyParts()).hasSize(2);
- Entity textPart = ((Multipart)mainBodyPart.getBody()).getBodyParts().get(0);
- Entity htmlPart = ((Multipart)mainBodyPart.getBody()).getBodyParts().get(1);
- assertThat(textPart.getBody()).isEqualToComparingOnlyGivenFields(expectedTextBody, "content");
- assertThat(htmlPart.getBody()).isEqualToComparingOnlyGivenFields(expectedHtmlBody, "content");
-
- Entity attachmentPart = typedResult.getBodyParts().get(1);
- assertThat(attachmentPart.getBody()).isEqualToComparingOnlyGivenFields(expectedAttachmentBody, "content");
- assertThat(attachmentPart.getDispositionType()).isEqualTo("inline");
- assertThat(attachmentPart.getMimeType()).isEqualTo(expectedMimeType);
- assertThat(attachmentPart.getHeader().getField("Content-ID").getBody()).isEqualTo(expectedCID);
- }
-
- @Test
- public void convertShouldEncodeWhenNonASCIICharacters() {
- // Given
- MIMEMessageConverter sut = new MIMEMessageConverter();
-
- CreationMessage testMessage = CreationMessage.builder()
- .mailboxId("dead-bada55")
- .subject("subject")
- .from(DraftEmailer.builder().name("sender").build())
- .htmlBody("Some non-ASCII characters: áÄÎßÿ")
- .build();
-
- // When
- ImmutableList<MessageAttachment> attachments = ImmutableList.of();
- byte[] convert = sut.convert(new ValueWithId.CreationMessageEntry(
- CreationMessageId.of("user|mailbox|1"), testMessage), attachments);
-
- String expectedEncodedContent = "Some non-ASCII characters: =C3=A1=C3=84=C3=8E=C3=9F=C3=BF";
-
- // Then
- String actual = new String(convert, StandardCharsets.US_ASCII);
- assertThat(actual).contains(expectedEncodedContent);
- }
-
- @Test
- public void convertToMimeShouldAddAttachmentAndContainsIndicationAboutTheWayToEncodeFilenamesAttachmentInTheInputStreamWhenSending() {
- // Given
- MIMEMessageConverter sut = new MIMEMessageConverter();
-
- CreationMessage testMessage = CreationMessage.builder()
- .mailboxIds(ImmutableList.of("dead-bada55"))
- .subject("subject")
- .from(DraftEmailer.builder().name("sender").build())
- .htmlBody("Hello <b>all<b>!")
- .build();
-
- String expectedCID = "cid";
- String expectedMimeType = "image/png";
- String text = "123456";
- String name = "ديناصور.png";
- String expectedName = EncoderUtil.encodeEncodedWord(name, Usage.TEXT_TOKEN);
- MessageAttachment attachment = MessageAttachment.builder()
- .name(name)
- .attachment(org.apache.james.mailbox.model.Attachment.builder()
- .attachmentId(AttachmentId.from("blodId"))
- .bytes(text.getBytes())
- .type(expectedMimeType)
- .build())
- .cid(Cid.from(expectedCID))
- .isInline(true)
- .build();
-
- // When
- Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
- CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of(attachment));
-
- // Then
- assertThat(result.getBody()).isInstanceOf(Multipart.class);
- assertThat(result.isMultipart()).isTrue();
- Multipart typedResult = (Multipart)result.getBody();
- assertThat(typedResult.getBodyParts()).hasSize(2);
-
- Entity attachmentPart = typedResult.getBodyParts().get(1);
- String filename = getNameParameterValue(attachmentPart);
- assertThat(filename).isEqualTo(expectedName);
- }
-
- private String getNameParameterValue(Entity attachmentPart) {
- return ((ContentTypeField) attachmentPart.getHeader().getField("Content-Type")).getParameter("name");
+ @Nested
+ class WithAttachments {
+
+ @Test
+ void convertToMimeShouldAddAttachmentWhenOne() {
+ // Given
+ MIMEMessageConverter sut = new MIMEMessageConverter();
+
+ CreationMessage testMessage = CreationMessage.builder()
+ .mailboxId("dead-bada55")
+ .subject("subject")
+ .from(DraftEmailer.builder().name("sender").build())
+ .htmlBody("Hello <b>all<b>!")
+ .build();
+
+ String expectedCID = "cid";
+ String expectedMimeType = "image/png";
+ String text = "123456";
+ TextBody expectedBody = new BasicBodyFactory().textBody(text.getBytes(), StandardCharsets.UTF_8);
+ MessageAttachment attachment = MessageAttachment.builder()
+ .attachment(org.apache.james.mailbox.model.Attachment.builder()
+ .attachmentId(AttachmentId.from("blodId"))
+ .bytes(text.getBytes())
+ .type(expectedMimeType)
+ .build())
+ .cid(Cid.from(expectedCID))
+ .isInline(true)
+ .build();
+
+ // When
+ Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
+ CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of(attachment));
+
+ // Then
+ assertThat(result.getBody()).isInstanceOf(Multipart.class);
+ assertThat(result.isMultipart()).isTrue();
+ Multipart typedResult = (Multipart)result.getBody();
+ assertThat(typedResult.getBodyParts()).hasSize(2);
+ Entity attachmentPart = typedResult.getBodyParts().get(1);
+ assertThat(attachmentPart.getBody()).isEqualToComparingOnlyGivenFields(expectedBody, "content");
+ assertThat(attachmentPart.getDispositionType()).isEqualTo("inline");
+ assertThat(attachmentPart.getMimeType()).isEqualTo(expectedMimeType);
+ assertThat(attachmentPart.getHeader().getField("Content-ID").getBody()).isEqualTo(expectedCID);
+ assertThat(attachmentPart.getContentTransferEncoding()).isEqualTo("base64");
+ }
+
+ @Test
+ void convertToMimeShouldAddAttachmentAndMultipartAlternativeWhenOneAttachementAndTextAndHtmlBody() {
+ // Given
+ MIMEMessageConverter sut = new MIMEMessageConverter();
+
+ CreationMessage testMessage = CreationMessage.builder()
+ .mailboxId("dead-bada55")
+ .subject("subject")
+ .from(DraftEmailer.builder().name("sender").build())
+ .textBody("Hello all!")
+ .htmlBody("Hello <b>all<b>!")
+ .build();
+ TextBody expectedTextBody = new BasicBodyFactory().textBody("Hello all!".getBytes(), StandardCharsets.UTF_8);
+ TextBody expectedHtmlBody = new BasicBodyFactory().textBody("Hello <b>all<b>!".getBytes(), StandardCharsets.UTF_8);
+
+ String expectedCID = "cid";
+ String expectedMimeType = "image/png";
+ String text = "123456";
+ TextBody expectedAttachmentBody = new BasicBodyFactory().textBody(text.getBytes(), StandardCharsets.UTF_8);
+ MessageAttachment attachment = MessageAttachment.builder()
+ .attachment(org.apache.james.mailbox.model.Attachment.builder()
+ .attachmentId(AttachmentId.from("blodId"))
+ .bytes(text.getBytes())
+ .type(expectedMimeType)
+ .build())
+ .cid(Cid.from(expectedCID))
+ .isInline(true)
+ .build();
+
+ // When
+ Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
+ CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of(attachment));
+
+ // Then
+ assertThat(result.getBody()).isInstanceOf(Multipart.class);
+ assertThat(result.isMultipart()).isTrue();
+ Multipart typedResult = (Multipart)result.getBody();
+ assertThat(typedResult.getBodyParts()).hasSize(2);
+ Entity mainBodyPart = typedResult.getBodyParts().get(0);
+ assertThat(mainBodyPart.getBody()).isInstanceOf(Multipart.class);
+ assertThat(mainBodyPart.isMultipart()).isTrue();
+ assertThat(mainBodyPart.getMimeType()).isEqualTo("multipart/alternative");
+ assertThat(((Multipart)mainBodyPart.getBody()).getBodyParts()).hasSize(2);
+ Entity textPart = ((Multipart)mainBodyPart.getBody()).getBodyParts().get(0);
+ Entity htmlPart = ((Multipart)mainBodyPart.getBody()).getBodyParts().get(1);
+ assertThat(textPart.getBody()).isEqualToComparingOnlyGivenFields(expectedTextBody, "content");
+ assertThat(htmlPart.getBody()).isEqualToComparingOnlyGivenFields(expectedHtmlBody, "content");
+
+ Entity attachmentPart = typedResult.getBodyParts().get(1);
+ assertThat(attachmentPart.getBody()).isEqualToComparingOnlyGivenFields(expectedAttachmentBody, "content");
+ assertThat(attachmentPart.getDispositionType()).isEqualTo("inline");
+ assertThat(attachmentPart.getMimeType()).isEqualTo(expectedMimeType);
+ assertThat(attachmentPart.getHeader().getField("Content-ID").getBody()).isEqualTo(expectedCID);
+ }
+
+ @Test
+ void convertShouldEncodeWhenNonASCIICharacters() {
+ // Given
+ MIMEMessageConverter sut = new MIMEMessageConverter();
+
+ CreationMessage testMessage = CreationMessage.builder()
+ .mailboxId("dead-bada55")
+ .subject("subject")
+ .from(DraftEmailer.builder().name("sender").build())
+ .htmlBody("Some non-ASCII characters: áÄÎßÿ")
+ .build();
+
+ // When
+ ImmutableList<MessageAttachment> attachments = ImmutableList.of();
+ byte[] convert = sut.convert(new ValueWithId.CreationMessageEntry(
+ CreationMessageId.of("user|mailbox|1"), testMessage), attachments);
+
+ String expectedEncodedContent = "Some non-ASCII characters: =C3=A1=C3=84=C3=8E=C3=9F=C3=BF";
+
+ // Then
+ String actual = new String(convert, StandardCharsets.US_ASCII);
+ assertThat(actual).contains(expectedEncodedContent);
+ }
+
+ @Test
+ void convertToMimeShouldAddAttachmentAndContainsIndicationAboutTheWayToEncodeFilenamesAttachmentInTheInputStreamWhenSending() {
+ // Given
+ MIMEMessageConverter sut = new MIMEMessageConverter();
+
+ CreationMessage testMessage = CreationMessage.builder()
+ .mailboxIds(ImmutableList.of("dead-bada55"))
+ .subject("subject")
+ .from(DraftEmailer.builder().name("sender").build())
+ .htmlBody("Hello <b>all<b>!")
+ .build();
+
+ String expectedCID = "cid";
+ String expectedMimeType = "image/png";
+ String text = "123456";
+ String name = "ديناصور.png";
+ String expectedName = EncoderUtil.encodeEncodedWord(name, Usage.TEXT_TOKEN);
+ MessageAttachment attachment = MessageAttachment.builder()
+ .name(name)
+ .attachment(org.apache.james.mailbox.model.Attachment.builder()
+ .attachmentId(AttachmentId.from("blodId"))
+ .bytes(text.getBytes())
+ .type(expectedMimeType)
+ .build())
+ .cid(Cid.from(expectedCID))
+ .isInline(true)
+ .build();
+
+ // When
+ Message result = sut.convertToMime(new ValueWithId.CreationMessageEntry(
+ CreationMessageId.of("user|mailbox|1"), testMessage), ImmutableList.of(attachment));
+
+ // Then
+ assertThat(result.getBody()).isInstanceOf(Multipart.class);
+ assertThat(result.isMultipart()).isTrue();
+ Multipart typedResult = (Multipart)result.getBody();
+ assertThat(typedResult.getBodyParts()).hasSize(2);
+
+ Entity attachmentPart = typedResult.getBodyParts().get(1);
+ String filename = getNameParameterValue(attachmentPart);
+ assertThat(filename).isEqualTo(expectedName);
+ }
+
+ private String getNameParameterValue(Entity attachmentPart) {
+ return ((ContentTypeField) attachmentPart.getHeader().getField("Content-Type")).getParameter("name");
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org