about summary refs log tree commit homepage
path: root/t/filter_base.t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-06-15 00:14:27 +0000
committerEric Wong <e@80x24.org>2016-06-15 00:15:11 +0000
commit61f05bf5869c3f471a16926b1a837ab0d95fb095 (patch)
tree41841dbde442f896ca5ba0495284cbbd6de784ac /t/filter_base.t
parent41aa4756879765d0c6d4d6e8754e0037b1a56fcc (diff)
downloadpublic-inbox-61f05bf5869c3f471a16926b1a837ab0d95fb095.tar.gz
This filter API should be independent of Email::Filter and
hopefully less intrusive to long running processes.
Diffstat (limited to 't/filter_base.t')
-rw-r--r--t/filter_base.t81
1 files changed, 81 insertions, 0 deletions
diff --git a/t/filter_base.t b/t/filter_base.t
new file mode 100644
index 00000000..ee5c7307
--- /dev/null
+++ b/t/filter_base.t
@@ -0,0 +1,81 @@
+# Copyright (C) 2016 all contributors <meta@public-inbox.org>
+# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
+use strict;
+use warnings;
+use Test::More;
+use Email::MIME;
+use_ok 'PublicInbox::Filter::Base';
+
+{
+        my $f = PublicInbox::Filter::Base->new;
+        ok($f, 'created stock object');
+        ok(defined $f->{reject_suffix}, 'rejected suffix redefined');
+        is(ref($f->{reject_suffix}), 'Regexp', 'reject_suffix should be a RE');
+}
+
+{
+        my $f = PublicInbox::Filter::Base->new(reject_suffix => undef);
+        ok($f, 'created base object q/o reject_suffix');
+        ok(!defined $f->{reject_suffix}, 'reject_suffix not defined');
+}
+
+{
+        my $f = PublicInbox::Filter::Base->new;
+        my $html_body = "<html><body>hi</body></html>";
+        my $parts = [
+                Email::MIME->create(
+                        attributes => {
+                                content_type => 'text/xhtml; charset=UTF-8',
+                                encoding => 'base64',
+                        },
+                        body => $html_body,
+                ),
+                Email::MIME->create(
+                        attributes => {
+                                content_type => 'text/plain',
+                                encoding => 'quoted-printable',
+                        },
+                        body => 'hi = "bye"',
+                )
+        ];
+        my $email = Email::MIME->create(
+                header_str => [
+                  From => 'a@example.com',
+                  Subject => 'blah',
+                  'Content-Type' => 'multipart/alternative'
+                ],
+                parts => $parts,
+        );
+        is($f->delivery($email), 100, "xhtml rejected");
+}
+
+{
+        my $f = PublicInbox::Filter::Base->new;
+        my $parts = [
+                Email::MIME->create(
+                        attributes => {
+                                content_type => 'application/vnd.ms-excel',
+                                encoding => 'base64',
+                        },
+                        body => 'junk',
+                ),
+                Email::MIME->create(
+                        attributes => {
+                                content_type => 'text/plain',
+                                encoding => 'quoted-printable',
+                        },
+                        body => 'junk',
+                )
+        ];
+        my $email = Email::MIME->create(
+                header_str => [
+                  From => 'a@example.com',
+                  Subject => 'blah',
+                  'Content-Type' => 'multipart/mixed'
+                ],
+                parts => $parts,
+        );
+        is($f->delivery($email), 100, 'proprietary format rejected on glob');
+}
+
+done_testing();