");
+
+ assert_addresses_list(addresses, verify_list, "get_recipients");
+ }
+
+ public void get_searchable_body() throws Error {
+ Message test = resource_to_message(BASIC_TEXT_HTML);
+ string searchable = test.get_searchable_body();
+ assert_true(searchable.contains("This is the first line"), "Expected body text");
+ assert_false(searchable.contains(""), "Expected html removed");
+ }
+
+ public void get_searchable_recipients() throws Error {
+ Message test = string_to_message(SIMPLE_MULTIRECIPIENT_TO_CC_BCC);
+ string searchable = test.get_searchable_recipients();
+ assert_true(searchable.contains("Jane Doe "), "Expected to address");
+ assert_true(searchable.contains("Jane Doe CC "), "Expected cc address");
+ assert_true(searchable.contains("Jane Doe BCC "), "Expected bcc address");
+ }
+
+ public void get_network_buffer() throws Error {
+ Message test = resource_to_message(BASIC_TEXT_PLAIN);
+ Memory.Buffer buffer = test.get_network_buffer(true);
+ assert_true(buffer.to_string() == NETWORK_BUFFER_EXPECTED, "Network buffer differs");
+ }
+
+ public void from_composed_email_inline_attachments() throws 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),
+ new Geary.RFC822.MailboxAddresses.single(to),
+ null,
+ null,
+ null,
+ null,
+ "
"
+ );
+
+ GLib.File resource =
+ GLib.File.new_for_uri(RESOURCE_URI).resolve_relative_path(TEST_ATTACHMENT_IMAGE_FILENAME);
+ uint8[] contents;
+ resource.load_contents(null, out contents, null);
+ Geary.Memory.ByteBuffer buffer = new Geary.Memory.ByteBuffer(contents, contents.length);
+ composed.cid_files[TEST_ATTACHMENT_IMAGE_FILENAME] = buffer;
+ Geary.Memory.ByteBuffer buffer2 = new Geary.Memory.ByteBuffer(contents, contents.length);
+ composed.inline_files["needing_cid.png"] = buffer2;
+
+ this.message_from_composed_email.begin(
+ composed,
+ async_complete_full
+ );
+ Geary.RFC822.Message message = message_from_composed_email.end(async_result());
+
+ Gee.List attachments = message.get_attachments();
+
+ bool found_first = false;
+ bool found_second = false;
+ bool second_id_renamed = false;
+ foreach (Part part in attachments) {
+ if (part.get_clean_filename() == TEST_ATTACHMENT_IMAGE_FILENAME) {
+ found_first = true;
+ } else if (part.get_clean_filename() == "needing_cid.png") {
+ found_second = true;
+ second_id_renamed = part.content_id != "needing_cid.png";
+ }
+ }
+ assert_true(found_first, "Expected CID attachment");
+ assert_true(found_second, "Expected inline attachment");
+ assert_true(second_id_renamed, "Expected inline attachment renamed");
+
+ string html_body = message.get_html_body(null);
+ assert_false(html_body.contains("src=\"needing_cid.png\""), "Expected updated attachment content ID");
+
+ Memory.Buffer out_buffer = message.get_native_buffer();
+ assert_true(out_buffer.size > (buffer.size+buffer2.size), "Expected sizeable message");
+ }
+
+ private async Geary.RFC822.Message message_from_composed_email(Geary.ComposedEmail composed) {
+ return yield new Geary.RFC822.Message.from_composed_email(
+ composed,
+ GMime.utils_generate_message_id(composed.from.get(0).domain),
+ null
+ );
+ }
+
private Message resource_to_message(string path) throws Error {
GLib.File resource =
GLib.File.new_for_uri(RESOURCE_URI).resolve_relative_path(path);
@@ -208,6 +318,17 @@ This is the second line.
assert_string(expected, addresses.to_rfc822_string());
}
+ private void assert_addresses_list(Gee.List? addresses,
+ Gee.List expected,
+ string context)
+ throws Error {
+ assert_non_null(addresses, context + " not null");
+ assert_true(addresses.size == expected.size, context + " size");
+ foreach (RFC822.MailboxAddress address in addresses) {
+ assert_true(expected.contains(address.to_rfc822_string()), context + " missing");
+ }
+ }
+
private void assert_message_id_list(Geary.RFC822.MessageIDList? ids,
string expected)
throws Error {