t/relaycountry.t (90 lines of code) (raw):

#!/usr/bin/perl -T use lib '.'; use lib 't'; use SATest; sa_t_init("relaycountry"); my $tests = 0; my %has; eval { require MaxMind::DB::Reader; $tests += 2; $has{GEOIP2} = 1 }; eval { require IP::Geolocation::MMDB; $tests += 2; $has{IPMMDB} = 1 }; eval { require Geo::IP; $tests += 2; $has{GEOIP} = 1 }; eval { require IP::Country::Fast; $tests += 2; $has{FAST} = 1 }; eval { require IP::Country::DB_File; if ($DB_File::db_ver > 1 and $DB_File::db_version > 1) { $tests += 2; $has{DB_FILE} = 1; } }; use Test::More; plan skip_all => "No supported GeoDB module installed" unless $tests; plan tests => $tests; # --------------------------------------------------------------------------- tstpre (" loadplugin Mail::SpamAssassin::Plugin::RelayCountry "); my @geoip2_readers = ( ['GEOIP2', 'MaxMind::DB::Reader', 'GeoIP2'], ['IPMMDB', 'IP::Geolocation::MMDB', 'IP::Geolocation::MMDB'], ); for my $reader (@geoip2_readers) { my ($geoip2, $reader_class, $geodb_module) = @{$reader}; if (defined $has{$geoip2}) { tstprefs (" geodb_module $geodb_module geodb_search_path data/geodb add_header all Relay-Country _RELAYCOUNTRY_ "); # Check for country of gmail.com mail server %patterns = ( q{ X-Spam-Relay-Country: US }, '', ); ok sarun ("-L -t < data/spam/relayUS.eml", \&patterns_run_cb); ok_all_patterns(); clear_pattern_counters(); } else { diag "skipping $reader_class (GeoIP2) tests (not installed)\n"; } } if (defined $has{GEOIP}) { tstprefs (" geodb_module Geo::IP geodb_search_path data/geodb add_header all Relay-Country _RELAYCOUNTRY_ "); # Check for country of gmail.com mail server %patterns = ( q{ X-Spam-Relay-Country: US }, '', ); ok sarun ("-L -t < data/spam/relayUS.eml", \&patterns_run_cb); ok_all_patterns(); clear_pattern_counters(); } else { diag "skipping Geo::IP tests (not installed)\n"; } if (defined $has{DB_FILE}) { tstprefs (" geodb_module DB_File geodb_options country:data/geodb/ipcc.db add_header all Relay-Country _RELAYCOUNTRY_ "); # Check for country of gmail.com mail server %patterns = ( q{ X-Spam-Relay-Country: US }, '', ); ok sarun ("-L -t < data/spam/relayUS.eml", \&patterns_run_cb); ok_all_patterns(); clear_pattern_counters(); } else { diag "skipping IP::Country::DB_File tests (not installed or DB_File bdb version too old)\n"; } if (defined $has{FAST}) { tstprefs (" geodb_module Fast add_header all Relay-Country _RELAYCOUNTRY_ "); # Check for country of gmail.com mail server %patterns = ( q{ X-Spam-Relay-Country: US }, '', ); ok sarun ("-L -t < data/spam/relayUS.eml", \&patterns_run_cb); ok_all_patterns(); clear_pattern_counters(); } else { diag "skipping IP::Country::Fast tests (not installed)\n"; }