#!/usr/bin/perl -T

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

use Test::More;
plan skip_all => "No SPAMC exe" if $SKIP_SPAMC_TESTS;
plan tests => 9;

# ---------------------------------------------------------------------------

tstprefs ("
  loadplugin reporterplugin ../../../data/reporterplugin.pm
");

unlink "log/rptfail";

start_spamd("-L --allow-tell");

%patterns = ( 'Message successfully reported/revoked' => 'reported spam' );

ok (spamcrun ("-C report < data/spam/001", \&patterns_run_cb));
ok_all_patterns();

%patterns = ( 'Message successfully reported/revoked' => 'revoked ham' );

ok (spamcrun ("-C revoke < data/nice/001", \&patterns_run_cb));
ok_all_patterns();

open (OUT, ">log/rptfail");
print OUT "file created to trigger a reporterplugin failure";
close OUT;

%patterns = ( 'Unable to report/revoke message' => 'failed to report spam' );

ok (spamcrun ("-C report < data/spam/001", \&patterns_run_cb));
ok_all_patterns();

%patterns = ( 'Unable to report/revoke message' => 'failed to revoke ham' );

ok (spamcrun ("-C revoke < data/nice/001", \&patterns_run_cb));
ok_all_patterns();

stop_spamd();

ok(unlink "log/rptfail"); # need a little cleanup

