aboutsummaryrefslogtreecommitdiffstats
path: root/camel/tests
diff options
context:
space:
mode:
authorPeter Williams <peterw@ximian.com>2001-06-29 04:35:43 +0800
committerPeter Williams <peterw@src.gnome.org>2001-06-29 04:35:43 +0800
commit6ffa930086b903dbd8fed3543f5e4ed762b6e8d1 (patch)
tree805bc825e07162f42996776921d770efe44b4b69 /camel/tests
parentdacae0532fb39cee00b4f8ccfa8157d3a31b3a80 (diff)
downloadgsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar.gz
gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar.zst
gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.zip
Add a CamelMimeFilterStripHeader that removes a header from mime output. Used
by sendmail to strip the BCC from the email while still sending to the BCC recipients. camel: 2001-06-28 Peter Williams <peterw@ximian.com> * camel-mime-filter-stripheader.c: New file. Filter that strips a header from mime output. * camel-mime-filter-stripheader.h: New file. Header for the above. * providers/smtp/camel-smtp-transport.c (smtp_data): Use the stripheader filter to remove the "Bcc" header. * Makefile.am: Add the stripheader files. * tests/lib/Makefile.am (INCLUDES): Get this to compile again. * tests/mime-filter/test-stripheader.c: New file. Test suite for the CamelMimeFilterStripHeader. * tests/mime-filter/Makefile.am: New test section: mime filters. mail: 2001-06-28 Peter Williams <peterw@ximian.com> * mail-ops.c (mail_send_message): Revert fejj's Bcc header removal; this unsets the BCC recipients and so doesn't send to the Bcc'd people at all. svn path=/trunk/; revision=10576
Diffstat (limited to 'camel/tests')
-rw-r--r--camel/tests/Makefile.am2
-rw-r--r--camel/tests/lib/Makefile.am2
-rw-r--r--camel/tests/mime-filter/.cvsignore7
-rw-r--r--camel/tests/mime-filter/Makefile.am36
-rw-r--r--camel/tests/mime-filter/stripheader-1.in6
-rw-r--r--camel/tests/mime-filter/stripheader-1.out5
-rw-r--r--camel/tests/mime-filter/stripheader-2.in8
-rw-r--r--camel/tests/mime-filter/stripheader-2.out6
-rw-r--r--camel/tests/mime-filter/stripheader-3.in9
-rw-r--r--camel/tests/mime-filter/stripheader-3.out7
-rw-r--r--camel/tests/mime-filter/stripheader-4.in7
-rw-r--r--camel/tests/mime-filter/stripheader-4.out5
-rw-r--r--camel/tests/mime-filter/stripheader-5.in9
-rw-r--r--camel/tests/mime-filter/stripheader-5.out5
-rw-r--r--camel/tests/mime-filter/stripheader-6.in15
-rw-r--r--camel/tests/mime-filter/stripheader-6.out6
-rw-r--r--camel/tests/mime-filter/test-stripheader.c131
17 files changed, 264 insertions, 2 deletions
diff --git a/camel/tests/Makefile.am b/camel/tests/Makefile.am
index 1d24ebd0ac..e32f2e455f 100644
--- a/camel/tests/Makefile.am
+++ b/camel/tests/Makefile.am
@@ -1,3 +1,3 @@
SUBDIRS = lib \
- message folder stream smime misc
+ message folder stream smime misc mime-filter
diff --git a/camel/tests/lib/Makefile.am b/camel/tests/lib/Makefile.am
index c3da5e37a8..f3a92899b2 100644
--- a/camel/tests/lib/Makefile.am
+++ b/camel/tests/lib/Makefile.am
@@ -1,5 +1,5 @@
-INCLUDES = -I$(includedir)
+INCLUDES = -I$(includedir) -I$(top_srcdir) -I$(top_srcdir)/camel
check_LIBRARIES = libcameltest.a
diff --git a/camel/tests/mime-filter/.cvsignore b/camel/tests/mime-filter/.cvsignore
new file mode 100644
index 0000000000..2cee3ea3cb
--- /dev/null
+++ b/camel/tests/mime-filter/.cvsignore
@@ -0,0 +1,7 @@
+.deps
+Makefile
+Makefile.in
+.libs
+*.lo
+*.la
+test-stripheader \ No newline at end of file
diff --git a/camel/tests/mime-filter/Makefile.am b/camel/tests/mime-filter/Makefile.am
new file mode 100644
index 0000000000..a1a3ebb832
--- /dev/null
+++ b/camel/tests/mime-filter/Makefile.am
@@ -0,0 +1,36 @@
+
+INCLUDES = -I$(top_srcdir)/intl -I$(top_srcdir) -I$(top_srcdir)/camel \
+ -I$(includedir) \
+ -I$(top_srcdir)/camel/tests/lib \
+ -DG_LOG_DOMAIN=\"evolution-tests\" \
+ -DSOURCEDIR=\"$(srcdir)\"
+
+LDADD = \
+ $(top_builddir)/camel/libcamel.la \
+ $(top_builddir)/e-util/libeutil.la \
+ $(top_builddir)/libibex/libibex.la \
+ $(GNOME_LIBDIR) \
+ $(top_builddir)/camel/tests/lib/libcameltest.a \
+ $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS)
+
+EXTRA_DIST = \
+ stripheader-1.in \
+ stripheader-1.out \
+ stripheader-2.in \
+ stripheader-2.out \
+ stripheader-3.in \
+ stripheader-3.out \
+ stripheader-4.in \
+ stripheader-4.out \
+ stripheader-5.in \
+ stripheader-5.out \
+ stripheader-6.in \
+ stripheader-6.out
+
+check_PROGRAMS = \
+ test-stripheader
+
+TESTS = test-stripheader
+
+
+
diff --git a/camel/tests/mime-filter/stripheader-1.in b/camel/tests/mime-filter/stripheader-1.in
new file mode 100644
index 0000000000..1db4bf86e3
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-1.in
@@ -0,0 +1,6 @@
+Subject: this is a simple test
+Stripped: of the header stripping filter
+CC: this header should be preserved
+BCC: as should this one
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-1.out b/camel/tests/mime-filter/stripheader-1.out
new file mode 100644
index 0000000000..3101c1e6bd
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-1.out
@@ -0,0 +1,5 @@
+Subject: this is a simple test
+CC: this header should be preserved
+BCC: as should this one
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-2.in b/camel/tests/mime-filter/stripheader-2.in
new file mode 100644
index 0000000000..0a16133bc0
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-2.in
@@ -0,0 +1,8 @@
+Subject: this is a simple test
+Stripped: of the header stripping filter
+CC: this header should be preserved
+Stripped: this header should also be stripped
+BCC: but not this one
+
+This is the body of the message.
+There are several lines to it. Oh boy oh boy. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-2.out b/camel/tests/mime-filter/stripheader-2.out
new file mode 100644
index 0000000000..626dd9c170
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-2.out
@@ -0,0 +1,6 @@
+Subject: this is a simple test
+CC: this header should be preserved
+BCC: but not this one
+
+This is the body of the message.
+There are several lines to it. Oh boy oh boy. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-3.in b/camel/tests/mime-filter/stripheader-3.in
new file mode 100644
index 0000000000..d7c348125b
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-3.in
@@ -0,0 +1,9 @@
+Subject: this is a simple test with a different subject
+Stripped: of the header stripping filter
+Stripped: this header should also be stripped
+CC: this header should be preserved
+BCC: and so should this one
+
+This is the body of the message.
+There are several lines to it. Oh boy oh boy.
+Let's add lots of characters on this line just for fun because I love fun don't you who wouldn't love fun I sure do. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-3.out b/camel/tests/mime-filter/stripheader-3.out
new file mode 100644
index 0000000000..a6da94594e
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-3.out
@@ -0,0 +1,7 @@
+Subject: this is a simple test with a different subject
+CC: this header should be preserved
+BCC: and so should this one
+
+This is the body of the message.
+There are several lines to it. Oh boy oh boy.
+Let's add lots of characters on this line just for fun because I love fun don't you who wouldn't love fun I sure do. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-4.in b/camel/tests/mime-filter/stripheader-4.in
new file mode 100644
index 0000000000..5b0b12e080
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-4.in
@@ -0,0 +1,7 @@
+Subject: this is a simple test
+Stripped: of the header stripping filter
+ ooh look this header spans two lines.
+CC: this header should be preserved
+BCC: as should this one
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-4.out b/camel/tests/mime-filter/stripheader-4.out
new file mode 100644
index 0000000000..3101c1e6bd
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-4.out
@@ -0,0 +1,5 @@
+Subject: this is a simple test
+CC: this header should be preserved
+BCC: as should this one
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-5.in b/camel/tests/mime-filter/stripheader-5.in
new file mode 100644
index 0000000000..99258daec6
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-5.in
@@ -0,0 +1,9 @@
+Subject: this is a simple test
+Stripped: of the header stripping filter
+ ooh look this header spans many
+ lines look at all the freaking lines
+ that this header spans. Wowwww.
+CC: this header should be preserved
+BCC: as should this one
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-5.out b/camel/tests/mime-filter/stripheader-5.out
new file mode 100644
index 0000000000..3101c1e6bd
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-5.out
@@ -0,0 +1,5 @@
+Subject: this is a simple test
+CC: this header should be preserved
+BCC: as should this one
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-6.in b/camel/tests/mime-filter/stripheader-6.in
new file mode 100644
index 0000000000..8bf0e848d0
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-6.in
@@ -0,0 +1,15 @@
+Subject: this is a simple test
+Stripped: of the header stripping filter
+ ooh look this header spans many
+ lines look at all the freaking lines
+ that this header spans. Wowwww.
+Stripped: and then another one to strip that extends fairly far across the page
+Other: let's not use CC here.
+Stripped: oops, I stripped it again
+Stripped: then single line....
+ followed by multi-line. Huzzah.
+NotBCC: definitely not BCC
+ however this one is definitely continued
+Stripped: god-damn look at that stripping.
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/stripheader-6.out b/camel/tests/mime-filter/stripheader-6.out
new file mode 100644
index 0000000000..d8d4202ed0
--- /dev/null
+++ b/camel/tests/mime-filter/stripheader-6.out
@@ -0,0 +1,6 @@
+Subject: this is a simple test
+Other: let's not use CC here.
+NotBCC: definitely not BCC
+ however this one is definitely continued
+
+This is the body of the message. \ No newline at end of file
diff --git a/camel/tests/mime-filter/test-stripheader.c b/camel/tests/mime-filter/test-stripheader.c
new file mode 100644
index 0000000000..ff5446635b
--- /dev/null
+++ b/camel/tests/mime-filter/test-stripheader.c
@@ -0,0 +1,131 @@
+/*
+ test-stripheader.c
+
+ Test the CamelMimeFilterStripHeader class
+*/
+
+#include <stdio.h>
+#include <string.h>
+
+#include "camel-test.h"
+
+#include <camel/camel-stream-fs.h>
+#include <camel/camel-stream-mem.h>
+#include <camel/camel-stream-filter.h>
+#include <camel/camel-mime-filter-stripheader.h>
+
+#define d(x) x
+
+#define NUM_CASES 6
+#define CHUNK_SIZE 32
+
+int
+main(int argc, char **argv)
+{
+ CamelStream *source;
+ CamelStream *correct;
+ CamelStreamFilter *filter;
+ CamelMimeFilter *sh;
+ gchar *work;
+ int i;
+ ssize_t comp_progress, comp_correct_chunk, comp_filter_chunk;
+ int comp_i;
+ char comp_correct[CHUNK_SIZE], comp_filter[CHUNK_SIZE];
+
+ camel_test_init(argc, argv);
+
+ for (i = 0; i < NUM_CASES; i++) {
+ work = g_strdup_printf ("Header stripping filter, test case %d", i);
+ camel_test_start (work);
+ g_free (work);
+
+ camel_test_push ("Initializing objects");
+ work = g_strdup_printf ("%s/stripheader-%d.in", SOURCEDIR, i + 1);
+ source = camel_stream_fs_new_with_name (work, 0, O_RDONLY);
+ if (!source) {
+ camel_test_fail ("Failed to open input case in \"%s\"", work);
+ g_free (work);
+ continue;
+ }
+ g_free (work);
+
+ work = g_strdup_printf ("%s/stripheader-%d.out", SOURCEDIR, i + 1);
+ correct = camel_stream_fs_new_with_name (work, 0, O_RDONLY);
+ if (!correct) {
+ camel_test_fail ("Failed to open correct output in \"%s\"", work);
+ g_free (work);
+ continue;
+ }
+ g_free (work);
+
+ filter = camel_stream_filter_new_with_stream (CAMEL_STREAM (source));
+ if (!filter) {
+ camel_test_fail ("Couldn't create CamelStreamFilter??");
+ continue;
+ }
+
+ sh = camel_mime_filter_stripheader_new ("Stripped");
+ if (!sh) {
+ camel_test_fail ("Couldn't create CamelMimeFilterStripHeader??");
+ continue;
+ }
+
+ camel_stream_filter_add (filter, sh);
+ camel_test_pull ();
+
+ camel_test_push ("Running filter and comparing to correct result");
+
+ comp_progress = 0;
+
+ while (1) {
+ comp_correct_chunk = camel_stream_read (correct, comp_correct, CHUNK_SIZE);
+ comp_filter_chunk = 0;
+
+ if (comp_correct_chunk == 0)
+ break;
+
+ while (comp_filter_chunk < comp_correct_chunk) {
+ ssize_t delta;
+
+ delta = camel_stream_read (CAMEL_STREAM (filter),
+ comp_filter + comp_filter_chunk,
+ CHUNK_SIZE - comp_filter_chunk);
+
+ if (delta == 0) {
+ camel_test_fail ("Chunks are different sizes: correct is %d, filter is %d, %d bytes into stream",
+ comp_correct_chunk, comp_filter_chunk, comp_progress);
+ }
+
+ comp_filter_chunk += delta;
+ }
+
+ d(printf ("\n\nCORRECT: >>%.*s<<", comp_correct_chunk, comp_correct);)
+ d(printf ("\nFILTER : >>%.*s<<\n", comp_filter_chunk, comp_filter);)
+
+ for (comp_i = 0; comp_i < comp_filter_chunk; comp_i++) {
+ if (comp_correct[comp_i] != comp_filter[comp_i]) {
+ camel_test_fail ("Difference: correct is %c, filter is %c, %d bytes into stream",
+ comp_correct[comp_i],
+ comp_filter[comp_i],
+ comp_progress + comp_i);
+ }
+ }
+
+ comp_progress += comp_filter_chunk;
+ }
+
+ camel_test_pull ();
+
+ /* inefficient */
+ camel_test_push ("Cleaning up");
+ camel_object_unref (CAMEL_OBJECT (filter));
+ camel_object_unref (CAMEL_OBJECT (correct));
+ camel_object_unref (CAMEL_OBJECT (source));
+ camel_object_unref (CAMEL_OBJECT (sh));
+ camel_test_pull ();
+
+ camel_test_end();
+ }
+
+ return 0;
+}