# 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;