blob: 51d580fda46b9757e5687b51ea0d9900269019bd [file] [log] [blame]
#!/usr/bin/perl -T
use lib '.'; use lib 't';
use SATest; sa_t_init("spamd_sql_prefs");
use constant HAS_DBI => eval { require DBI; };
use constant HAS_DBD_SQLITE => eval { require DBD::SQLite; };
use Test::More;
plan skip_all => "Spamd tests disabled" if $SKIP_SPAMD_TESTS;
plan skip_all => "SQL Pref tests disabled" unless conf_bool('run_sql_pref_tests');
plan skip_all => "DBI is unavailble" unless HAS_DBI;
plan skip_all => "SQLite is unavailble" unless HAS_DBD_SQLITE;
plan tests => 32;
# ---------------------------------------------------------------------------
my $userprefdb = mk_safe_tmpdir()."/userpref.db";
my $dbh = DBI->connect("dbi:SQLite:dbname=$userprefdb","","");
ok($dbh);
$dbh->{AutoCommit} = 1;
ok($dbh->do("CREATE TABLE userpref (username, preference, value)"));
ok($dbh->do("INSERT INTO userpref VALUES('\@GLOBAL', 'add_header', 'all tTEST1 FOO1')"));
ok($dbh->do("INSERT INTO userpref VALUES('testuser', 'score', 'GTUBE 0')"));
ok($dbh->do("INSERT INTO userpref VALUES('testuser', 'score', 'MSGID_RANDY 0')"));
ok($dbh->do("INSERT INTO userpref VALUES('testuser', 'score', 'DATE_IN_PAST_03_06 0')"));
ok($dbh->do("INSERT INTO userpref VALUES('testuser', 'add_header', 'all tTEST2 FOO2')"));
tstlocalrules ("
user_scores_dsn dbi:SQLite:dbname=$userprefdb
");
ok(start_spamd("-L --sql-config -u $spamd_run_as_user"));
%patterns = (
q{ X-Spam-tTEST1: FOO1 }, 'Added Header tTEST1',
q{ X-Spam-Flag: YES}, 'Spam Flag',
q{ BODY: Generic Test for Unsolicited Bulk Email }, 'GTUBE Test',
q{ XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X }, 'GTUBE String',
);
%anti_patterns = (
q{ X-Spam-tTEST2: FOO2 }, 'Added Header',
);
ok (spamcrun("-u nobody < data/spam/018", \&patterns_run_cb));
ok_all_patterns();
clear_pattern_counters();
%patterns = (
q{ X-Spam-tTEST1: FOO1 }, 'Added Header tTEST1',
q{ X-Spam-tTEST2: FOO2 }, 'Added Header tTEST2',
q{ XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X }, 'GTUBE String',
);
%anti_patterns = (
q{ BODY: Generic Test for Unsolicited Bulk Email }, 'GTUBE Test',
q{ X-Spam-Flag: YES}, 'Spam Flag',
);
ok (spamcrun("-u testuser < data/spam/018", \&patterns_run_cb));
ok_all_patterns();
clear_pattern_counters();
ok($dbh->do("INSERT INTO userpref VALUES('testuser', 'required_score', '1000')"));
%patterns = (
q{ X-Spam-tTEST1: FOO1 }, 'Added Header tTEST1',
q{ X-Spam-tTEST2: FOO2 }, 'Added Header tTEST2',
q{ X-Spam-Status: No }, 'Spam Status No',
q{ XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X }, 'GTUBE String',
);
%anti_patterns = (
q{ X-Spam-Flag: YES}, 'Spam Flag YES',
q{ BODY: Generic Test for Unsolicited Bulk Email }, 'GTUBE Test',
);
ok (spamcrun("-u testuser < data/spam/018", \&patterns_run_cb));
ok_all_patterns();
clear_pattern_counters();
%patterns = (
q{ dbg: config: retrieving prefs for }, 'Retrieving Prefs',
);
%anti_patterns = (
q{ warn: closing dbh with active statement handles }, 'Closing Active Handles',
);
checkfile ($spamd_stderr, \&patterns_run_cb);
ok_all_patterns();
ok(stop_spamd());
cleanup_safe_tmpdir();
ok($dbh->disconnect());