diff options
author | Peter Williams <peterw@ximian.com> | 2001-06-29 04:35:43 +0800 |
---|---|---|
committer | Peter Williams <peterw@src.gnome.org> | 2001-06-29 04:35:43 +0800 |
commit | 6ffa930086b903dbd8fed3543f5e4ed762b6e8d1 (patch) | |
tree | 805bc825e07162f42996776921d770efe44b4b69 /camel/tests | |
parent | dacae0532fb39cee00b4f8ccfa8157d3a31b3a80 (diff) | |
download | gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar.gz gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar.bz2 gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar.lz gsoc2013-evolution-6ffa930086b903dbd8fed3543f5e4ed762b6e8d1.tar.xz 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.am | 2 | ||||
-rw-r--r-- | camel/tests/lib/Makefile.am | 2 | ||||
-rw-r--r-- | camel/tests/mime-filter/.cvsignore | 7 | ||||
-rw-r--r-- | camel/tests/mime-filter/Makefile.am | 36 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-1.in | 6 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-1.out | 5 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-2.in | 8 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-2.out | 6 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-3.in | 9 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-3.out | 7 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-4.in | 7 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-4.out | 5 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-5.in | 9 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-5.out | 5 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-6.in | 15 | ||||
-rw-r--r-- | camel/tests/mime-filter/stripheader-6.out | 6 | ||||
-rw-r--r-- | camel/tests/mime-filter/test-stripheader.c | 131 |
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; +} |