END_TEST START_TEST(test_imap_get_partspec) { DbmailMessage *message; GMimeObject *object; char *result, *expect; /* text/plain */ message = dbmail_message_new(NULL); message = dbmail_message_init_with_string(message, rfc822); object = imap_get_partspec(GMIME_OBJECT(message->content),"HEADER"); result = g_mime_object_to_string(object); fail_unless(MATCH(rfc822,result), "imap_get_partsec failed \n[%s] !=\n[%s]\n", rfc822, result); g_free(result); result = imap_get_logical_part(object,"HEADER"); expect = g_strdup("From nobody Wed Sep 14 16:47:48 2005\r\n" "Content-Type: text/plain; charset=\"us-ascii\"\r\n" "MIME-Version: 1.0\r\n" "Content-Transfer-Encoding: 7bit\r\n" "Message-Id: <1199706209l.3020l.1l@(none)>\r\n" "To: [email protected]\r\n" "From: [email protected]\r\n" "Subject: dbmail test message\r\n" "\r\n"); fail_unless(MATCH(expect,result),"imap_get_partsec failed \n[%s] !=\n[%s]\n", expect, result); g_free(expect); g_free(result); object = imap_get_partspec(GMIME_OBJECT(message->content),"TEXT"); result = imap_get_logical_part(object,"TEXT"); expect = g_strdup("\r\n" " this is a test message\r\n" "\r\n"); fail_unless(MATCH(expect,result),"imap_get_partsec failed \n[%s] !=\n[%s]\n", expect, result); g_free(expect); g_free(result); dbmail_message_free(message); /* multipart */ message = dbmail_message_new(NULL); message = dbmail_message_init_with_string(message, multipart_message); /* test a simple mime part */ object = imap_get_partspec(GMIME_OBJECT(message->content),"1"); result = imap_get_logical_part(object,"MIME"); expect = g_strdup("Content-type: text/html\r\n" "Content-disposition: inline\r\n\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,NULL); expect = g_strdup("Test message one\r\n and more.\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); /* object isn't a message/rfc822 so these are * acually invalid. Let's try anyway */ result = imap_get_logical_part(object,"HEADER"); expect = g_strdup("Content-type: text/html\r\n" "Content-disposition: inline\r\n\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,"TEXT"); expect = g_strdup("Test message one\r\n and more.\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); /* moving on */ object = imap_get_partspec(GMIME_OBJECT(message->content),"2"); result = imap_get_logical_part(object,"MIME"); expect = g_strdup( "Content-type: text/plain; charset=us-ascii; name=testfile\r\n" "Content-transfer-encoding: base64\r\n" "\r\n" ); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); dbmail_message_free(message); /* multipart mixed */ message = dbmail_message_new(NULL); message = dbmail_message_init_with_string(message, multipart_mixed); object = imap_get_partspec(GMIME_OBJECT(message->content),"2"); result = imap_get_logical_part(object,"HEADER"); expect = g_strdup("From: \"try\" <*****@*****.**>"); fail_unless((strncmp(expect,result,29)==0), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(expect); g_free(result); object = imap_get_partspec(GMIME_OBJECT(message->content),"2.1.1"); result = imap_get_logical_part(object,NULL); expect = g_strdup("Body of doc2\r\n\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,"MIME"); expect = g_strdup("Content-Type: text/plain;\r\n" " charset=\"us-ascii\"\r\n" "Content-Transfer-Encoding: 7bit\r\n\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); dbmail_message_free(message); /* multipart signed */ message = dbmail_message_new(NULL); message = dbmail_message_init_with_string(message, multipart_signed); object = imap_get_partspec(GMIME_OBJECT(message->content),"1.1"); result = imap_get_logical_part(object,NULL); expect = g_strdup("quo-pri text"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); object = imap_get_partspec(GMIME_OBJECT(message->content),"1.3"); result = g_mime_object_to_string(object); expect = g_strdup("Content-Type: message/rfc822;\n" "Content-Transfer-Encoding: 7bit\n" "Content-Disposition: attachment;\n" " filename=\"msg1.eml\"\n" "\n" "Date: Mon, 19 Aug 2013 14:54:05 +0200\n" "To: a@b\n" "From: d@b\n" "Reply-To: e@b\n" "Subject: msg1\n" "MIME-Version: 1.0\n" "Content-Type: multipart/alternative;\n" " boundary=b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\n" "\n" "\n" "--b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\n" "Content-Type: text/plain; charset=\"ISO-8859-1\"\n" "Content-Transfer-Encoding: quoted-printable\n" "\n" "quo-pri text\n" "--b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\n" "Content-Type: text/html; charset=\"ISO-8859-1\"\n" "Content-Transfer-Encoding: quoted-printable\n" "\n" "html text\n" "\n" "--b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845--\n" "\n" "\n" "\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,"MIME"); expect = g_strdup("Content-Type: message/rfc822;\r\n" "Content-Transfer-Encoding: 7bit\r\n" "Content-Disposition: attachment;\r\n" " filename=\"msg1.eml\"\r\n" "\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,NULL); expect = g_strdup("Date: Mon, 19 Aug 2013 14:54:05 +0200\r\n" "To: a@b\r\n" "From: d@b\r\n" "Reply-To: e@b\r\n" "Subject: msg1\r\n" "MIME-Version: 1.0\r\n" "Content-Type: multipart/alternative;\r\n" " boundary=b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\r\n" "\r\n" "\r\n" "--b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\r\n" "Content-Type: text/plain; charset=\"ISO-8859-1\"\r\n" "Content-Transfer-Encoding: quoted-printable\r\n" "\r\n" "quo-pri text\r\n" "--b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\r\n" "Content-Type: text/html; charset=\"ISO-8859-1\"\r\n" "Content-Transfer-Encoding: quoted-printable\r\n" "\r\n" "html text\r\n" "\r\n" "--b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845--\r\n" "\r\n" "\r\n" "\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,"MIME"); expect = g_strdup("Content-Type: message/rfc822;\r\n" "Content-Transfer-Encoding: 7bit\r\n" "Content-Disposition: attachment;\r\n" " filename=\"msg1.eml\"\r\n" "\r\n"); fail_unless(MATCH(expect,result), "imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); result = imap_get_logical_part(object,"HEADER"); expect = g_strdup("Date: Mon, 19 Aug 2013 14:54:05 +0200\r\n" "To: a@b\r\n" "From: d@b\r\n" "Reply-To: e@b\r\n" "Subject: msg1\r\n" "MIME-Version: 1.0\r\n" "Content-Type: multipart/alternative;\r\n" "\tboundary=b1_7ad0d7cccab59d27194f9ad69c14606001f05f531376916845\r\n" "\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); dbmail_message_free(message); }
END_TEST START_TEST(test_imap_get_partspec) { DbmailMessage *message; GMimeObject *object; char *result, *expect; /* text/plain */ message = dbmail_message_new(); message = dbmail_message_init_with_string(message, g_string_new(rfc822)); object = imap_get_partspec(GMIME_OBJECT(message->content),"HEADER"); result = imap_get_logical_part(object,"HEADER"); expect = g_strdup("From nobody Wed Sep 14 16:47:48 2005\r\n" "Content-Type: text/plain; charset=\"us-ascii\"\r\n" "MIME-Version: 1.0\r\n" "Content-Transfer-Encoding: 7bit\r\n" "Message-Id: <1199706209l.3020l.1l@(none)>\r\n" "To: [email protected]\r\n" "From: [email protected]\r\n" "Subject: dbmail test message\r\n" ""); fail_unless(MATCH(expect,result),"imap_get_partsec failed \n[%s] !=\n[%s]\n", expect, result); g_free(expect); g_free(result); object = imap_get_partspec(GMIME_OBJECT(message->content),"TEXT"); result = imap_get_logical_part(object,"TEXT"); expect = g_strdup("\r\n" " this is a test message\r\n" "\r\n"); fail_unless(MATCH(expect,result),"imap_get_partsec failed \n[%s] !=\n[%s]\n", expect, result); g_free(expect); g_free(result); dbmail_message_free(message); /* multipart */ message = dbmail_message_new(); message = dbmail_message_init_with_string(message, g_string_new(multipart_message)); object = imap_get_partspec(GMIME_OBJECT(message->content),"1"); result = imap_get_logical_part(object,NULL); expect = g_strdup("Content-type: text/html\r\n" "Content-disposition: inline\r\n\r\n" "Test message one\r\n" " and more.\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); object = imap_get_partspec(GMIME_OBJECT(message->content),"1.TEXT"); result = imap_get_logical_part(object,"TEXT"); expect = g_strdup("Test message one\r\n" " and more.\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); object = imap_get_partspec(GMIME_OBJECT(message->content),"1.HEADER"); result = imap_get_logical_part(object,"HEADER"); expect = g_strdup("Content-type: text/html\r\n" "Content-disposition: inline\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); object = imap_get_partspec(GMIME_OBJECT(message->content),"2.MIME"); result = imap_get_logical_part(object,"MIME"); expect = g_strdup("Content-type: text/plain; charset=us-ascii; name=testfile\r\n" "Content-transfer-encoding: base64\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); dbmail_message_free(message); /* multipart mixed */ message = dbmail_message_new(); message = dbmail_message_init_with_string(message, g_string_new(multipart_mixed)); object = imap_get_partspec(GMIME_OBJECT(message->content),"2.HEADER"); result = imap_get_logical_part(object,"HEADER"); fail_unless(strncmp(result,"From: \"try\" <*****@*****.**>",29)==0,"imap_get_partspec failed"); g_free(result); object = imap_get_partspec(GMIME_OBJECT(message->content),"2.1.1"); result = imap_get_logical_part(object,NULL); expect = g_strdup("Content-Type: text/plain;\r\n" " charset=\"us-ascii\"\r\n" "Content-Transfer-Encoding: 7bit\r\n\r\n" "Body of doc2\r\n\r\n"); fail_unless(MATCH(expect,result),"imap_get_partspec failed:\n[%s] != \n[%s]\n", expect, result); g_free(result); g_free(expect); dbmail_message_free(message); }