#!/usr/bin/perl -T

use lib '.'; use lib 't';
use SATest;

use Test::More;
plan skip_all => 'AWL SQL Tests not enabled.' if conf_bool('run_awl_sql_tests');
plan tests => 11;
diag "Note: Failure may be due to an incorrect config";

sa_t_init("sql_based_whitelist");

my $dbconfig = '';
foreach my $setting (qw(
                  user_awl_dsn
                  user_awl_sql_username
                  user_awl_sql_password
                  user_awl_sql_table
                ))
{
  my $val = conf($setting);
  $dbconfig .= "$setting $val\n" if $val;
}

my $testuser = 'tstusr.'.$$.'.'.time();

tstlocalrules ("
use_auto_whitelist 1
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
$dbconfig
user_awl_sql_override_username $testuser
");

# ---------------------------------------------------------------------------

%is_nonspam_patterns = (
q{ Subject: Re: [SAtalk] auto-whitelisting}, 'subj',
);
%is_spam_patterns = (
q{Subject: 4000           Your Vacation Winning !}, 'subj',
);

%is_spam_patterns2 = (
q{ X-Spam-Status: Yes}, 'status',
);


%patterns = %is_nonspam_patterns;

ok(sarun ("--remove-addr-from-whitelist whitelist_test\@whitelist.spamassassin.taint.org", \&patterns_run_cb));

# 3 times, to get into the whitelist:
ok(sarun ("-L -t < data/nice/002", \&patterns_run_cb));
ok(sarun ("-L -t < data/nice/002", \&patterns_run_cb));
ok(sarun ("-L -t < data/nice/002", \&patterns_run_cb));

# Now check
ok(sarun ("-L -t < data/nice/002", \&patterns_run_cb));
ok_all_patterns();

%patterns = %is_spam_patterns;
ok(sarun ("-L -t < data/spam/004", \&patterns_run_cb));
ok_all_patterns();

%patterns = %is_spam_patterns2;
ok(sarun ("-L -t < data/spam/007", \&patterns_run_cb));
ok_all_patterns();

ok(sarun ("--remove-addr-from-whitelist whitelist_test\@whitelist.spamassassin.taint.org", \&patterns_run_cb));
