t/00-basic.t
author Heiko Schlittermann <hs@schlittermann.de>
Sat, 04 Jun 2016 23:05:29 +0200
changeset 72 f095f28db247
parent 71 46ba051d29bd
permissions -rw-r--r--
Implement auto-history
use strict;
use warnings;

use Test::More qw(no_plan);
use File::Temp;

use_ok 'Exim::Grey' => qw(unseen seen) or BAIL_OUT;

subtest 'simple' => sub {
    my $db = File::Temp->new();
    is seen('a->x', 0, "$db"), 'no' => 'not seen a->x';
    is unseen('a->b', 0,   "$db"), 'yes' => 'unseen a->b';
    is unseen('a->b', 600, "$db"), 'yes' => 'unseen a->b with 600s delay';
    is unseen('a->b', 0,   "$db"), 'no'  => 'not unseen a->b';
    is seen('a->b', 600, "$db"), 'no' => 'not seen a->b with 600s delay';
};

subtest 'whitelist' => sub {
    my $db = File::Temp->new();
    is unseen('x->y/1.1.1.1', 1, "$db"), 'yes' => 'unseen x->y/1.1.1.1';
    is unseen('x->y/1.1.1.1', 1, "$db"), 'yes' => 'unseen x->y/1.1.1.1';

    is unseen('x->y/1.1.1.1', 0, "$db"), 'no' => 'not unseen x->y/1.1.1.1';
    is unseen('x->z/1.1.1.1', 0, "$db"), 'no' => 'not unseen x->z/1.1.1.1';
    is seen('x->z/1.1.1.1', 0, "$db"), 'yes' => 'seen x->z/1.1.1.1';

};

subtest 'whitelist multiple subkeys' => sub {
    my $db = File::Temp->new();

    is unseen('x->y/1.1.1.1', 0, "$db"), 'yes' => 'unseen x->y/1.1.1.1';
    is unseen('x->y/2.2.2.2', 0, "$db"), 'no' => 'not unseen x->y/2.2.2.2';

    is unseen('a->b/1.1.1.1', 0, "$db"), 'no' => 'not unseen (whitelisted source)';
    is unseen('a->c/2.2.2.2', 0, "$db"), 'no' => 'not unseen (whitelisted source)';
    is unseen('x->y/3.3.3.3', 0, "$db"), 'no' => 'not unseen x->y/3.3.3.3 (known key)';
};