X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fprecheck.t;fp=t%2Fprecheck.t;h=6deead9843bc194ec7cbb4190b94c77f84fd23ba;hb=858f0a2960123d6d2cbced1bb18e4e5e524df21e;hp=0000000000000000000000000000000000000000;hpb=b5b6e0f45c5ee171d71b549146432a68d6707531;p=public-inbox.git diff --git a/t/precheck.t b/t/precheck.t new file mode 100644 index 00000000..6deead98 --- /dev/null +++ b/t/precheck.t @@ -0,0 +1,74 @@ +# Copyright (C) 2014, Eric Wong and all contributors +# License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) +use strict; +use warnings; +use Test::More; +use Email::Simple; +use Email::Filter; +use PublicInbox; + +sub do_checks { + my ($s) = @_; + + my $f = Email::Filter->new(data => $s->as_string); + local %ENV; + delete $ENV{ORIGINAL_RECIPIENT}; + + ok(PublicInbox->precheck($f), + "ORIGINAL_RECIPIENT unset is OK"); + + $ENV{ORIGINAL_RECIPIENT} = 'foo@example.com'; + ok(!PublicInbox->precheck($f), + "wrong ORIGINAL_RECIPIENT rejected"); + + $ENV{ORIGINAL_RECIPIENT} = 'b@example.com'; + ok(PublicInbox->precheck($f), + "ORIGINAL_RECIPIENT in To: is OK"); + + $ENV{ORIGINAL_RECIPIENT} = 'c@example.com'; + ok(PublicInbox->precheck($f), + "ORIGINAL_RECIPIENT in Cc: is OK"); +} + +{ + do_checks(Email::Simple->create( + header => [ + From => 'a@example.com', + To => 'b@example.com', + Cc => 'c@example.com', + 'Content-Type' => 'text/plain', + Subject => 'this is a subject', + ], + body => "hello world\n", + )); +} + +{ + do_checks(Email::Simple->create( + header => [ + From => 'a@example.com', + To => 'b+plus@example.com', + Cc => 'John Doe ', + 'Content-Type' => 'text/plain', + Subject => 'this is a subject', + ], + body => "hello world\n", + )); +} + +{ + $ENV{ORIGINAL_RECIPIENT} = 'b@example.com'; + my $s = Email::Simple->create( + header => [ + To => 'b@example.com', + Cc => 'c@example.com', + 'Content-Type' => 'text/plain', + Subject => 'this is a subject', + ], + body => "hello world\n", + ); + my $f = Email::Filter->new(data => $s->as_string); + ok(!PublicInbox->precheck($f), "missing From: is rejected"); +} + +done_testing();