1 use strict; |
|
2 use warnings; |
|
3 |
|
4 use Test::More qw(no_plan); |
|
5 use File::Temp; |
|
6 |
|
7 use_ok 'Exim::Grey' => qw(unseen seen) or BAIL_OUT; |
|
8 |
|
9 subtest 'simple' => sub { |
|
10 my $db = File::Temp->new(); |
|
11 is seen('a->x', 0, "$db"), 'no' => 'not seen a->x'; |
|
12 is unseen('a->b', 0, "$db"), 'yes' => 'unseen a->b'; |
|
13 is unseen('a->b', 600, "$db"), 'yes' => 'unseen a->b with 600s delay'; |
|
14 is unseen('a->b', 0, "$db"), 'no' => 'not unseen a->b'; |
|
15 is seen('a->b', 600, "$db"), 'no' => 'not seen a->b with 600s delay'; |
|
16 }; |
|
17 |
|
18 subtest 'whitelist' => sub { |
|
19 my $db = File::Temp->new(); |
|
20 is unseen('x->y/1.1.1.1', 1, "$db"), 'yes' => 'unseen x->y/1.1.1.1'; |
|
21 is unseen('x->y/1.1.1.1', 1, "$db"), 'yes' => 'unseen x->y/1.1.1.1'; |
|
22 |
|
23 is seen('x->y/1.1.1.1', 0, "$db"), 'yes' => 'seen x->y/1.1.1.1'; |
|
24 is seen('x->z/1.1.1.1', 0, "$db"), 'yes' => 'seen x->z/1.1.1.1 (subkey known)'; |
|
25 is seen('1.1.1.1', 0, "$db"), 'yes' => 'seen 1.1.1.1'; |
|
26 |
|
27 }; |
|
28 __END__ |
|
29 |
|
30 subtest 'whitelist multiple subkeys' => sub { |
|
31 my $db = File::Temp->new(); |
|
32 |
|
33 is unseen('x->y/1.1.1.1', 0, "$db"), 'yes' => 'unseen x->y/1.1.1.1'; |
|
34 is unseen('x->y/2.2.2.2', 3, "$db"), 'yes' => 'unseen x->y/3.3.3.3'; |
|
35 is unseen('x->y/3.3.3.3', 0, "$db"), 'no' => 'not unseen x->y/2.2.2.2'; |
|
36 |
|
37 is unseen('a->b/1.1.1.1', 0, "$db"), 'no' => 'not unseen (whitelisted source)'; |
|
38 is unseen('a->c/2.2.2.2', 0, "$db"), 'no' => 'not unseen (whitelisted source)'; |
|
39 is unseen('x->y/3.3.3.3', 0, "$db"), 'no' => 'not unseen x->y/3.3.3.3 (known key)'; |
|
40 }; |
|