about summary refs log tree commit homepage
path: root/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
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')
-rw-r--r--t/filter_base.t81
-rw-r--r--t/filter_mirror.t40
-rw-r--r--t/filter_vger.t46
3 files changed, 167 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();
diff --git a/t/filter_mirror.t b/t/filter_mirror.t
new file mode 100644
index 00000000..01be282e
--- /dev/null
+++ b/t/filter_mirror.t
@@ -0,0 +1,40 @@
+# 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::Mirror';
+
+my $f = PublicInbox::Filter::Mirror->new;
+ok($f, 'created PublicInbox::Filter::Mirror object');
+{
+        my $html_body = "<html><body>hi</body></html>";
+        my $parts = [
+                Email::MIME->create(
+                        attributes => {
+                                content_type => 'text/html; 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->ACCEPT, $f->delivery($email), 'accept any trash that comes');
+}
+
+done_testing();
diff --git a/t/filter_vger.t b/t/filter_vger.t
new file mode 100644
index 00000000..83a4c9ee
--- /dev/null
+++ b/t/filter_vger.t
@@ -0,0 +1,46 @@
+# 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::Vger';
+
+my $f = PublicInbox::Filter::Vger->new;
+ok($f, 'created PublicInbox::Filter::Vger object');
+{
+        my $lkml = <<'EOF';
+From: foo@example.com
+Subject: test
+
+keep this
+--
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at  http://www.tux.org/lkml/
+EOF
+
+        my $mime = Email::MIME->new($lkml);
+        $mime = $f->delivery($mime);
+        is("keep this\n", $mime->body, 'normal message filtered OK');
+}
+
+{
+        my $no_nl = <<'EOF';
+From: foo@example.com
+Subject: test
+
+OSX users :P--
+To unsubscribe from this list: send the line "unsubscribe git" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+EOF
+
+        my $mime = Email::MIME->new($no_nl);
+        $mime = $f->delivery($mime);
+        is('OSX users :P', $mime->body, 'missing trailing LF in original OK');
+}
+
+
+done_testing();