# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as erl test.pl'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..24\n"; }
END {print "not ok 1\n" unless $loaded;}
use LaBrea::Tarpit::DShield qw(
chk_config
move2_Q
);
$loaded = 1;
print "ok 1\n";
$test = 2;
sub ok {
print "ok $test\n";
++$test;
}
=pod
Need to test this:
my $config = {
'DShield' => 'tmp/DShield.cache', # path/to/file
'UserID' => '0', # DShield UserID
'To' => 'test@dshield.org', # or report@dshield.org
'From' => 'john.doe@foo.com',
'Reply-To' => 'john.doe@foo.com', # optional
# optional
'Obfuscate' => 'complete or partial',
# either one or more working SMTP server's
'smtp' => 'iceman.dshield.org,mail.euclidian.com',
# or a sendmail compatible mail transport command
'sendmail' => '/usr/lib/sendmail -t -oi',
};
order is:
UserID
DShield
To
From
Reply-To
smtp
sendmail
Obfuscate
=cut
my $config = {};
### NOTE ###
# Test for UserID moved to 'move2_Q', tests 2,3,4,5,6
###
## check various UserID combinations
## 2 absent
print "missing UserID not found\nnot "
unless ($_ = move2_Q($config)) eq 'missing DShield UserID';
&ok;
## 3 undefined
$config->{UserID} = undef;
print "undef UserID not found\nnot "
unless ($_ = move2_Q($config)) eq 'missing DShield UserID';
&ok;
## 4 non-numeric
$config->{UserID} = 'crap';
print "non-numeric UserID not found\nnot "
unless ($_ = move2_Q($config)) eq 'missing DShield UserID';
&ok;
## 5 -- 0 OK
$config->{UserID} = 0;
print "zero UserID not accepted\nnot "
unless move2_Q($config) eq 'missing DShield queue directory';
&ok;
## 6 other mumeric
$config->{UserID} = '12345';
print "zero UserID not accepted\nnot "
unless move2_Q($config) eq 'missing DShield queue directory';
&ok;
# missing DShield file checked above, twice... but....
## 7 should not insert leading './'
$config->{DShield} = 'tmp/crap';
chk_config($config);
print "inserted extra './' in DShield filename\nnot "
unless $config->{DShield} eq 'tmp/crap';
&ok;
## 8 insert './' where needed
$config->{DShield} = 'tmp';
chk_config($config);
print "failed to insert './' in DShield filename\nnot "
unless $config->{DShield} eq './tmp';
&ok;
## 9 check one insertion of './' only
$_ = chk_config($config);
print "inserted extra './' in DShield filename\nnot "
unless $config->{DShield} eq './tmp';
&ok;
## 10 response above should find missing To:
print "failed to detect missing To:\nnot "
unless $_ =~ /missing or invalid To:/;
&ok;
## 11 corrupt mail format
$config->{To} = 'a@b';
print "failed to detect corrupt To:\nnot "
unless chk_config($config) =~ /missing or invalid To:/;
&ok;
## 12 To is OK
$config->{To} = 'a@b.c';
print "refused good To:\nnot "
unless ($_ = chk_config($config)) =~ /missing or invalid From:/;
&ok;
## 13 corrupt mail format
$config->{From} = 'a@b';
print "failed to detect corrupt From:\nnot "
unless chk_config($config) =~ /missing or invalid From:/;
&ok;
## 14 From is OK
$config->{From} = 'a@b.f';
print "refused good From:\nnot "
unless ($_ = chk_config($config)) =~ /missing mail agent/;
&ok;
## 15 Reply-To should eq From
print "did not preset absent Reply-To\nnot "
unless $config->{'Reply-To'} eq 'a@b.f';
&ok;
## 16 missing Reply-To
$config->{'Reply-To'} = undef;
print "accepted undefined Reply-To\nnot "
unless chk_config($config) =~ /invalid Reply-To/;
&ok;
## 17 corrupt mail format
$config->{'Reply-To'} = 'a@b';
print "failed to detect corrupt Reply-To:\nnot "
unless chk_config($config) =~ /invalid Reply-To/;
&ok;
## 18 From is OK
$config->{'Reply-To'} = 'a@b.r';
print "refused good Reply-To:\nnot "
unless ($_ = chk_config($config)) =~ /missing mail agent/;
&ok;
## 19 mail agents found
$config->{smtp} = '_SomeRandomString_123453211_';
print "failed to recognize SMTP mail agent\nnot "
if chk_config($config);
&ok;
delete $config->{smtp};
## 20
$config->{sendmail} = '_SomeRandomString_123453211_';
print "accepted bogus sendmail agent\nnot "
unless chk_config($config) =~ /sendmail agent missing/;
&ok;
$config->{smtp} = '_SomeRandomString_123453211_';
delete $config->{sendmail};
## 21 obfuscate
$config->{Obfuscate} = '0'; # false
print "failed Obfuscate false test\nnot "
if chk_config($config);
&ok;
## 22 obfuscate, invalid keyword
$config->{Obfuscate} = 'crap';
print "accepted bad Obfuscate keyword\nnot "
unless chk_config($config) =~ /unknown/;
&ok;
## 23
$config->{Obfuscate} = 'PaRtIaL';
print "failed to accept 'partial' keyword\nnot "
if ($_ = chk_config($config));
&ok;
## 24
$config->{Obfuscate} = 'cOmPlEtE';
print "failed to accept 'complete' keyword\nnot "
if ($_ = chk_config($config));
&ok;