]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/precheck.t
www: drop --subject from "git send-email" instructions
[public-inbox.git] / t / precheck.t
index 6deead9843bc194ec7cbb4190b94c77f84fd23ba..360dc74f88f748d0bd081929f6d786be193d3849 100644 (file)
@@ -1,74 +1,89 @@
-# 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-2021 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::Eml;
+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 = PublicInbox::Eml->new(<<'EOF');
+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
+
+hello world
+EOF
+       my $addr = [ 'c@example.com', 'd@example.com' ];
+       ok(PublicInbox::MDA->precheck($s, $addr), 'Cc list 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(PublicInbox::Eml->new(<<'EOF'));
+From: a@example.com
+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
+
+hello world
+EOF
 }
 
 {
-       do_checks(Email::Simple->create(
-               header => [
-                       From => 'a@example.com',
-                       To => 'b+plus@example.com',
-                       Cc => 'John Doe <c@example.com>',
-                       'Content-Type' => 'text/plain',
-                       Subject => 'this is a subject',
-               ],
-               body => "hello world\n",
-       ));
+       do_checks(PublicInbox::Eml->new(<<'EOF'));
+From: a@example.com
+To: b+plus@example.com
+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
+
+hello world
+EOF
 }
 
 {
-       $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");
+       my $recipient = 'b@example.com';
+       my $s = PublicInbox::Eml->new(<<'EOF');
+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
+
+hello world
+EOF
+       ok(!PublicInbox::MDA->precheck($s, $recipient),
+               "missing From: is rejected");
 }
 
 done_testing();