File: spamd_sql_prefs.t

package info (click to toggle)
spamassassin 4.0.2-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 25,724 kB
  • sloc: perl: 89,143; ansic: 5,193; sh: 3,737; javascript: 339; sql: 295; makefile: 209; python: 49
file content (88 lines) | stat: -rwxr-xr-x 2,945 bytes parent folder | download | duplicates (4)
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
77
78
79
80
81
82
83
84
85
86
87
88
#!/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; DBD::SQLite->VERSION(1.59_01); };

use Test::More;
plan skip_all => "Spamd tests disabled" if $SKIP_SPAMD_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 = $workdir."/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')"));

tstprefs ("
  user_scores_dsn dbi:SQLite:dbname=$userprefdb
");

ok(start_spamd("-L --sql-config -u $spamd_run_as_user"));

%patterns = (
  qr/^X-Spam-tTEST1: FOO1$/m, 'Added Header tTEST1',
  qr/^X-Spam-Flag: YES/m, 'Spam Flag',
  q{ 1000 GTUBE }, 'GTUBE Test',
  'XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X', 'GTUBE String',
);
%anti_patterns = (
  'X-Spam-tTEST2: FOO2', 'Added Header',
);
ok (spamcrun("-u nobody < data/spam/018", \&patterns_run_cb));
ok_all_patterns();
clear_pattern_counters();

%patterns = (
  qr/^X-Spam-tTEST1: FOO1$/m, 'Added Header tTEST1',
  qr/^X-Spam-tTEST2: FOO2$/m, 'Added Header tTEST2',
  'XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X', 'GTUBE String',
);
%anti_patterns = (
  q{ 1000 GTUBE }, 'GTUBE Test',
  '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 = (
  qr/^X-Spam-tTEST1: FOO1\n/m, 'Added Header tTEST1',
  qr/^X-Spam-tTEST2: FOO2\n/m, 'Added Header tTEST2',
  qr/^X-Spam-Status: No/m, 'Spam Status No',
  'XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X', 'GTUBE String',
);
%anti_patterns = (
  'X-Spam-Flag: YES', 'Spam Flag YES',
  q{ 1000 GTUBE }, '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());

ok($dbh->disconnect());