1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
use strict;
use Test::More;
use PublicInbox::Config;
use PublicInbox::TestCommon;
require_git(2.6);
require_mods(qw(Search::Xapian DBD::SQLite));
my ($tmpdir, $for_destroy) = tmpdir();
my $inboxdir = "$tmpdir/v2";
my $maildir = "$tmpdir/md";
use_ok 'PublicInbox::Watch';
use_ok 'PublicInbox::Emergency';
my $cfgpfx = "publicinbox.test";
my $addr = 'test-public@example.com';
my @cmd = ('-init', '-V2', 'test', $inboxdir,
'http://example.com/list', $addr);
local $ENV{PI_CONFIG} = "$tmpdir/pi_config";
ok(run_script(\@cmd), 'public-inbox init OK');
my $msg_to = <<EOF;
From: user\@a.com
To: $addr
Subject: address is in to
Message-Id: <to\@a.com>
Date: Sat, 18 Apr 2020 00:00:00 +0000
content1
EOF
my $msg_cc = <<EOF;
From: user1\@a.com
To: user2\@a.com
Cc: $addr
Subject: address is in cc
Message-Id: <cc\@a.com>
Date: Sat, 18 Apr 2020 00:01:00 +0000
content2
EOF
my $msg_none = <<EOF;
From: user1\@a.com
To: user2\@a.com
Cc: user3\@a.com
Subject: address is not in to or cc
Message-Id: <none\@a.com>
Date: Sat, 18 Apr 2020 00:02:00 +0000
content3
EOF
PublicInbox::Emergency->new($maildir)->prepare(\$msg_to);
PublicInbox::Emergency->new($maildir)->prepare(\$msg_cc);
PublicInbox::Emergency->new($maildir)->prepare(\$msg_none);
my $raw = <<EOF;
$cfgpfx.address=$addr
$cfgpfx.inboxdir=$inboxdir
$cfgpfx.watch=maildir:$maildir
$cfgpfx.watchheader=To:$addr
$cfgpfx.watchheader=Cc:$addr
EOF
my $cfg = PublicInbox::Config->new(\$raw);
PublicInbox::Watch->new($cfg)->scan('full');
my $ibx = $cfg->lookup_name('test');
ok($ibx, 'found inbox by name');
my $num = $ibx->mm->num_for('to@a.com');
ok(defined $num, 'Matched for address in To:');
$num = $ibx->mm->num_for('cc@a.com');
ok(defined $num, 'Matched for address in Cc:');
$num = $ibx->mm->num_for('none@a.com');
is($num, undef, 'No match without address in To: or Cc:');
done_testing;
|