Merge branch 'topic/mm-fixes' of git://208.110.73.182/silc into silc.1.1.branch
[silc.git] / lib / silcutil / tests / test_silcmime.c
index a514d55bdd8bc43843fc4350a116893ad5e34d70..6ebcecd617c4b5769ee7fa5dcc276204f533af78 100644 (file)
@@ -1,6 +1,6 @@
 /* SilcMime tests */
 
-#include "silcincludes.h"
+#include "silc.h"
 #include "silcmime.h"
 
 int main(int argc, char **argv)
@@ -22,7 +22,9 @@ int main(int argc, char **argv)
     silc_log_set_debug_string("*mime*");
   }
 
-  /* Simple MIME test */
+  /* 
+   * Simple MIME test
+   */
   SILC_LOG_DEBUG(("Allocating MIME message context"));
   mime = silc_mime_alloc();
   if (!mime)
@@ -48,7 +50,7 @@ int main(int argc, char **argv)
   SILC_LOG_DEBUG(("Encoded MIME message: \n%s", enc));
   silc_mime_free(mime);
   SILC_LOG_DEBUG(("Decoding MIME message"));
-  mime = silc_mime_decode(enc, enc_len);
+  mime = silc_mime_decode(NULL, enc, enc_len);
   if (!mime)
     goto err;
   SILC_LOG_DEBUG(("Re-encoding MIME context"));
@@ -60,7 +62,38 @@ int main(int argc, char **argv)
   silc_free(enc);
   silc_mime_free(mime);
 
-  /* Multipart test, with nesting */
+  /*
+   * Empty data area, only headers present
+   */
+  SILC_LOG_DEBUG(("Allocating MIME message context"));
+  mime = silc_mime_alloc();
+  if (!mime)
+    goto err;
+  SILC_LOG_DEBUG(("Adding Content-Transfer-Encoding: binary"));
+  silc_mime_add_field(mime, "Content-Transfer-Encoding", "binary");
+  SILC_LOG_DEBUG(("No data area, only header present"));
+  SILC_LOG_DEBUG(("Encoding MIME context"));
+  enc = silc_mime_encode(mime, &enc_len);
+  if (!enc)
+    goto err;
+  SILC_LOG_DEBUG(("Encoded MIME message: \n%s", enc));
+  silc_mime_free(mime);
+  SILC_LOG_DEBUG(("Decoding MIME message"));
+  mime = silc_mime_decode(NULL, enc, enc_len);
+  if (!mime)
+    goto err;
+  SILC_LOG_DEBUG(("Re-encoding MIME context"));
+  silc_free(enc);
+  enc = silc_mime_encode(mime, &enc_len);
+  if (!enc)
+    goto err;
+  SILC_LOG_HEXDUMP(("Re-encoded MIME message:"), enc, enc_len);
+  silc_free(enc);
+  silc_mime_free(mime);
+
+  /*
+   * Multipart test, with nesting
+   */
   SILC_LOG_DEBUG(("Allocating MIME message context"));
   mime = silc_mime_alloc();
   if (!mime)
@@ -106,7 +139,7 @@ int main(int argc, char **argv)
   part = silc_mime_alloc();
   if (!part)
     goto err;
-  SILC_LOG_DEBUG(("Adding MIME data, 10 A's + 1 B"));
+  SILC_LOG_DEBUG(("Adding MIME data (NO HEADERS), 10 A's + 1 B"));
   for (i = 0; i < 10; i++)
     tmp[i] = 'A';
   tmp[10] = 'B';
@@ -116,6 +149,16 @@ int main(int argc, char **argv)
     goto err;
   SILC_LOG_DEBUG(("Allocating part"));
   part = silc_mime_alloc();
+  if (!part)
+    goto err;
+  SILC_LOG_DEBUG(("Adding Content-Type: image/foobar"));
+  SILC_LOG_DEBUG(("No data area, only header"));
+  silc_mime_add_field(part, "Content-Type", "image/foobar");
+  SILC_LOG_DEBUG(("Adding part to MIME message"));
+  if (!silc_mime_add_multipart(mime, part))
+    goto err;
+  SILC_LOG_DEBUG(("Allocating part"));
+  part = silc_mime_alloc();
   if (!part)
     goto err;
   SILC_LOG_DEBUG(("Adding part to MIME message"));
@@ -143,7 +186,7 @@ int main(int argc, char **argv)
   SILC_LOG_DEBUG(("Encoded MIME message: \n%s", enc));
   silc_mime_free(mime);
   SILC_LOG_DEBUG(("Decoding MIME message"));
-  mime = silc_mime_decode(enc, enc_len);
+  mime = silc_mime_decode(NULL, enc, enc_len);
   if (!mime)
     goto err;
   SILC_LOG_DEBUG(("Re-encoding MIME context"));
@@ -171,7 +214,9 @@ int main(int argc, char **argv)
   }
   silc_mime_free(mime);
 
-  /* Fragmentation test */
+  /*
+   * Fragmentation test
+   */
   SILC_LOG_DEBUG(("Allocating MIME assembler"));
   ass = silc_mime_assembler_alloc();
   if (!ass)
@@ -210,7 +255,7 @@ int main(int argc, char **argv)
   SILC_LOG_DEBUG(("Defragment"));
   silc_dlist_start(frag);
   while ((buf = silc_dlist_get(frag)) != SILC_LIST_END) {
-    part = silc_mime_decode(buf->data, silc_buffer_len(buf));
+    part = silc_mime_decode(NULL, buf->data, silc_buffer_len(buf));
     if (!silc_mime_is_partial(part))
         goto err;
     part = silc_mime_assemble(ass, part);