]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/precheck.t
public-inbox 1.1.0-pre1
[public-inbox.git] / t / precheck.t
index 6deead9843bc194ec7cbb4190b94c77f84fd23ba..4481e8d0fde457ed65fbdcb610fee38b8bac50c7 100644 (file)
@@ -1,33 +1,46 @@
-# Copyright (C) 2014, Eric Wong <normalperson@yhbt.net> and all contributors
-# License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt)
+# Copyright (C) 2014-2018 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::Simple;
-use Email::Filter;
-use PublicInbox;
+use PublicInbox::MDA;
 
 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),
+       my $recipient = 'foo@example.com';
+       ok(!PublicInbox::MDA->precheck($s, $recipient),
                "wrong ORIGINAL_RECIPIENT rejected");
 
-       $ENV{ORIGINAL_RECIPIENT} = 'b@example.com';
-       ok(PublicInbox->precheck($f),
+       $recipient = 'b@example.com';
+       ok(PublicInbox::MDA->precheck($s, $recipient),
                "ORIGINAL_RECIPIENT in To: is OK");
 
-       $ENV{ORIGINAL_RECIPIENT} = 'c@example.com';
-       ok(PublicInbox->precheck($f),
+       $recipient = 'c@example.com';
+       ok(PublicInbox::MDA->precheck($s, $recipient),
                "ORIGINAL_RECIPIENT in Cc: is OK");
+
+       $recipient = [ 'c@example.com', 'd@example.com' ];
+       ok(PublicInbox::MDA->precheck($s, $recipient),
+               "alias list is OK");
+}
+
+{
+       my $s = Email::Simple->create(
+               header => [
+                       From => 'abc@example.com',
+                       To => 'abc@example.com',
+                       Cc => 'c@example.com, another-list@example.com',
+                       'Content-Type' => 'text/plain',
+                       Subject => 'list is fine',
+                       'Message-ID' => '<MID@host>',
+                       Date => 'Wed, 09 Apr 2014 01:28:34 +0000',
+               ],
+               body => "hello world\n",
+       );
+       my $addr = [ 'c@example.com', 'd@example.com' ];
+       ok(PublicInbox::MDA->precheck($s, $addr), 'Cc list is OK');
 }
 
 {
@@ -38,6 +51,8 @@ sub do_checks {
                        Cc => 'c@example.com',
                        'Content-Type' => 'text/plain',
                        Subject => 'this is a subject',
+                       'Message-ID' => '<MID@host>',
+                       Date => 'Wed, 09 Apr 2014 01:28:34 +0000',
                ],
                body => "hello world\n",
        ));
@@ -51,24 +66,28 @@ sub do_checks {
                        Cc => 'John Doe <c@example.com>',
                        'Content-Type' => 'text/plain',
                        Subject => 'this is a subject',
+                       'Message-ID' => '<MID@host>',
+                       Date => 'Wed, 09 Apr 2014 01:28:34 +0000',
                ],
                body => "hello world\n",
        ));
 }
 
 {
-       $ENV{ORIGINAL_RECIPIENT} = 'b@example.com';
+       my $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',
+                       'Message-ID' => '<MID@host>',
+                       Date => 'Wed, 09 Apr 2014 01:28:34 +0000',
                ],
                body => "hello world\n",
        );
-       my $f = Email::Filter->new(data => $s->as_string);
-       ok(!PublicInbox->precheck($f), "missing From: is rejected");
+       ok(!PublicInbox::MDA->precheck($s, $recipient),
+               "missing From: is rejected");
 }
 
 done_testing();