From 42152d00baac8832308e29ec51bb864abcb696d5 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Sun, 29 Mar 2020 09:51:17 +1100 Subject: [PATCH] Geary.RFC822.Message: Work around long HTML lines exceeding SMTP max len --- test/engine/rfc822-message-test.vala | 58 +++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/test/engine/rfc822-message-test.vala b/test/engine/rfc822-message-test.vala index 48b4bef0..c99865f9 100644 --- a/test/engine/rfc822-message-test.vala +++ b/test/engine/rfc822-message-test.vala @@ -57,9 +57,11 @@ This is the second line. add_test("get_recipients", get_recipients); add_test("get_searchable_body", get_searchable_body); add_test("get_searchable_recipients", get_searchable_recipients); - add_test("get_network_buffer", get_network_buffer); add_test("from_composed_email", from_composed_email); add_test("from_composed_email_inline_attachments", from_composed_email_inline_attachments); + add_test("get_network_buffer", get_network_buffer); + add_test("get_network_buffer_dot_stuff", get_network_buffer_dot_stuff); + add_test("get_network_buffer_long_ascii_line", get_network_buffer_long_ascii_line); } public void basic_message_from_buffer() throws Error { @@ -210,10 +212,62 @@ This is the second line. public void get_network_buffer() throws Error { Message test = resource_to_message(BASIC_TEXT_PLAIN); - Memory.Buffer buffer = test.get_network_buffer(true); + Memory.Buffer buffer = test.get_network_buffer(true); assert_true(buffer.to_string() == NETWORK_BUFFER_EXPECTED, "Network buffer differs"); } + public void get_network_buffer_dot_stuff() throws GLib.Error { + RFC822.MailboxAddress to = new RFC822.MailboxAddress( + "Test", "test@example.com" + ); + RFC822.MailboxAddress from = new RFC822.MailboxAddress( + "Sender", "sender@example.com" + ); + Geary.ComposedEmail composed = new Geary.ComposedEmail( + new GLib.DateTime.now_local(), + new Geary.RFC822.MailboxAddresses.single(from) + ).set_to(new Geary.RFC822.MailboxAddresses.single(to)); + composed.body_text = ".newline\n.\n"; + + this.message_from_composed_email.begin( + composed, + async_complete_full + ); + Geary.RFC822.Message message = message_from_composed_email.end(async_result()); + + string message_data = message.get_network_buffer(true).to_string(); + print("\n'%s'\n", message_data); + assert_true(message_data.has_suffix("..newline\r\n..\r\n")); + } + + public void get_network_buffer_long_ascii_line() throws GLib.Error { + RFC822.MailboxAddress to = new RFC822.MailboxAddress( + "Test", "test@example.com" + ); + RFC822.MailboxAddress from = new RFC822.MailboxAddress( + "Sender", "sender@example.com" + ); + Geary.ComposedEmail composed = new Geary.ComposedEmail( + new GLib.DateTime.now_local(), + new Geary.RFC822.MailboxAddresses.single(from) + ).set_to(new Geary.RFC822.MailboxAddresses.single(to)); + composed.body_text = """ +long long long long long long long long long long long long long long long long long +"""; + composed.body_html = "

%s

".printf(composed.body_text); + + this.message_from_composed_email.begin( + composed, + async_complete_full + ); + Geary.RFC822.Message message = message_from_composed_email.end(async_result()); + + string message_data = message.get_network_buffer(true).to_string(); + foreach (var line in message_data.split("\n")) { + assert_true(line.length < 80, line); + } + } + public void from_composed_email() throws GLib.Error { RFC822.MailboxAddress to = new RFC822.MailboxAddress( "Test", "test@example.com"