mirror of https://github.com/adamdruppe/arsd.git
Unit test email roundtrip
This commit is contained in:
parent
318b0fd320
commit
be963eef83
32
email.d
32
email.d
|
@ -9,6 +9,7 @@ pragma(lib, "curl");
|
||||||
import std.base64;
|
import std.base64;
|
||||||
import std.string;
|
import std.string;
|
||||||
import std.range;
|
import std.range;
|
||||||
|
import std.utf;
|
||||||
|
|
||||||
import arsd.characterencodings;
|
import arsd.characterencodings;
|
||||||
|
|
||||||
|
@ -1181,6 +1182,37 @@ string encodeBase64Mime(const(ubyte[]) content, string LINESEP = "\r\n") {
|
||||||
return cast(immutable(char[]))content.chunks(SOURCE_CHUNK_LENGTH).base64encode.join(LINESEP);
|
return cast(immutable(char[]))content.chunks(SOURCE_CHUNK_LENGTH).base64encode.join(LINESEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unittest {
|
||||||
|
import std.algorithm;
|
||||||
|
import std.string;
|
||||||
|
// Mime message roundtrip
|
||||||
|
auto mail = new EmailMessage();
|
||||||
|
mail.to = ["recipient@example.org"];
|
||||||
|
mail.from = "sender@example.org";
|
||||||
|
mail.subject = "Subject";
|
||||||
|
|
||||||
|
auto text = cast(string) chain(
|
||||||
|
repeat('n', 1200),
|
||||||
|
"\r\n",
|
||||||
|
"äöü\r\n",
|
||||||
|
"ඞ\r\nlast",
|
||||||
|
).byChar.array;
|
||||||
|
mail.setTextBody(text);
|
||||||
|
mail.addAttachment("text/plain", "attachment.txt", text.representation);
|
||||||
|
// In case binary and plaintext get handled differently one day
|
||||||
|
mail.addAttachment("application/octet-stream", "attachment.bin", text.representation);
|
||||||
|
|
||||||
|
auto result = new IncomingEmailMessage(mail.toString().split("\r\n"));
|
||||||
|
|
||||||
|
assert(result.subject.equal(mail.subject));
|
||||||
|
assert(mail.to.canFind(result.to));
|
||||||
|
assert(result.from.equal(mail.from));
|
||||||
|
|
||||||
|
// This roundtrip works modulo trailing newline on the parsed message and LF vs CRLF
|
||||||
|
assert(result.textMessageBody.replace("\n", "\r\n").stripRight().equal(mail.textBody));
|
||||||
|
assert(result.attachments.equal(mail.attachments));
|
||||||
|
}
|
||||||
|
|
||||||
/+
|
/+
|
||||||
void main() {
|
void main() {
|
||||||
import std.file;
|
import std.file;
|
||||||
|
|
Loading…
Reference in New Issue