t/redirectors.t (56 lines of code) (raw):

#!/usr/bin/perl -T use lib '.'; use lib 't'; use SATest; sa_t_init("redirectors"); use Test::More; use constant HAS_LWP_USERAGENT => eval { require LWP::UserAgent; require LWP::Protocol::https; }; use constant HAS_DBI => eval { require DBI; }; use constant HAS_DBD_SQLITE => eval { require DBD::SQLite; DBD::SQLite->VERSION(1.59_01); }; use constant SQLITE => (HAS_DBI && HAS_DBD_SQLITE); plan skip_all => "Net tests disabled" unless conf_bool('run_net_tests'); plan skip_all => "LWP::Protocol::https required to run this test" unless HAS_LWP_USERAGENT; my $tests = 4; $tests += 4 if (SQLITE); plan tests => $tests; tstpre (" loadplugin Mail::SpamAssassin::Plugin::Redirectors "); tstprefs(q{ dns_query_restriction allow google.com dns_query_restriction allow disq.us clear_url_redirector url_redirector_get google.com body HAS_REDIR_URL eval:redir_url() body REDIR_URL_404 eval:redir_url_404() body REDIR_URL_C404 eval:redir_url_code('404') uri URI_PAGE_LINK m,^http://spamassassin\.apache\.org/news\.html, }); ### ### Basic functions, no caching ### %patterns = ( q{ 1.0 HAS_REDIR_URL } => '', q{ 1.0 REDIR_URL_404 } => '', q{ 1.0 REDIR_URL_C404 } => '', q{ 1.0 URI_PAGE_LINK } => '', ); sarun ("-t < data/spam/redirectors/base.eml", \&patterns_run_cb); ok_all_patterns(); ### ### With SQLITE caching ### if (SQLITE) { tstprefs(" clear_url_redirector url_redirector_get google.com url_redirector_cache_type dbi url_redirector_cache_dsn dbi:SQLite:dbname=$workdir/Redirectors.db body HAS_REDIR_URL eval:redir_url() describe HAS_REDIR_URL Message contains one or more redirected URLs "); %patterns = ( q{ 1.0 HAS_REDIR_URL } => '', ); sarun ("-t < data/spam/redirectors/base.eml", \&patterns_run_cb); ok_all_patterns(); my $dbh = DBI->connect("dbi:SQLite:dbname=$workdir/Redirectors.db","",""); my @row = $dbh->selectrow_array("SELECT target_url FROM redir_url_cache WHERE redir_url = 'https://www.google.com/amp/spamassassin.apache.org/news.html'"); is($row[0], 'https://www.google.com/url?q=http://spamassassin.apache.org/news.html'); # Check another email to cleanup old entries from database sarun ("-t < data/spam/redirectors/base2.eml", \&patterns_run_cb); ok_all_patterns(); $dbh = DBI->connect("dbi:SQLite:dbname=$workdir/Redirectors.db","",""); @row = $dbh->selectrow_array("SELECT target_url FROM redir_url_cache WHERE redir_url = 'https://www.google.com/amp/spamassassin.apache.org/news.html'"); isnt($row[0], 'https://spamassassin.apache.org/news.html'); }