#!/usr/bin/perl -T

use lib '.'; use lib 't';
use SATest; sa_t_init("welcomelist_from");

use Test::More;
plan skip_all => 'Long running tests disabled' unless conf_bool('run_long_tests');
plan tests => 32;

# ---------------------------------------------------------------------------
tstpre ("
  loadplugin Mail::SpamAssassin::Plugin::AWL
");

tstprefs ("
  header USER_IN_WELCOMELIST		eval:check_from_in_welcomelist()
  tflags USER_IN_WELCOMELIST		userconf nice noautolearn
  score USER_IN_WELCOMELIST		-100
  header USER_IN_DEF_WELCOMELIST	eval:check_from_in_default_welcomelist()
  tflags USER_IN_DEF_WELCOMELIST	userconf nice noautolearn
  score USER_IN_DEF_WELCOMELIST		-15
  def_welcomelist_from_rcvd *\@paypal.com paypal.com
  def_welcomelist_from_rcvd *\@paypal.com ebay.com
  def_welcomelist_from_rcvd mumble\@example.com example.com
  welcomelist_from_rcvd foo\@example.com spamassassin.org
  welcomelist_from_rcvd foo\@example.com example.com
  welcomelist_from_rcvd bar\@example.com example.com
  welcomelist_allows_relays bar\@example.com
  welcomelist_from baz\@example.com
  welcomelist_from bam\@example.com
  unwelcomelist_from bam\@example.com
  unwelcomelist_from_rcvd mumble\@example.com
");

# tests 1 - 4 does welcomelist_from work?
%patterns = (
  q{ -100 USER_IN_WELCOMELIST }, '',
);

%anti_patterns = (
  q{ FORGED_IN_WELCOMELIST }, '',
  q{ USER_IN_DEF_WELCOMELIST }, '',
  q{ FORGED_IN_DEF_WELCOMELIST }, '',
);
sarun ("-L -t < data/nice/008", \&patterns_run_cb);
ok_all_patterns();

# tests 5 - 8 does welcomelist_from_rcvd work?
sarun ("-L -t < data/nice/009", \&patterns_run_cb);
ok_all_patterns();

# tests 9 - 12 second relay specified for same addr in welcomelist_from_rcvd
sarun ("-L -t < data/nice/010", \&patterns_run_cb);
ok_all_patterns();

%patterns = (
  q{ -15 USER_IN_DEF_WELCOMELIST }, '',
);

%anti_patterns = (
  q{ USER_IN_WELCOMELIST }, '',
  q{ FORGED_IN_WELCOMELIST }, '',
  q{ FORGED_IN_DEF_WELCOMELIST }, '',
);

# tests 13 - 16 does def_welcomelist_from_rcvd work?
sarun ("-L -t < data/nice/011", \&patterns_run_cb);
ok_all_patterns();

# tests 17 - 20 second relay specified for same addr in def_welcomelist_from_rcvd
sarun ("-L -t < data/nice/012", \&patterns_run_cb);
ok_all_patterns();

%patterns = ();

%anti_patterns = (
  q{ USER_IN_WELCOMELIST }, '',
  q{ FORGED_IN_WELCOMELIST }, '',
  q{ USER_IN_DEF_WELCOMELIST }, '',
  q{ FORGED_IN_DEF_WELCOMELIST }, '',
);
# tests 21 - 24 does welcomelist_allows_relays suppress the forged rule without
#  putting the address on the welcomelist?
sarun ("-L -t < data/nice/013", \&patterns_run_cb);
ok_all_patterns();

# tests 25 - 28 does unwelcomelist_from work?
sarun ("-L -t < data/nice/014", \&patterns_run_cb);
ok_all_patterns();

# tests 29 - 32 does unwelcomelist_from_rcvd work?
sarun ("-L -t < data/nice/015", \&patterns_run_cb);
ok_all_patterns();

