mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-04-29 02:53:15 +00:00
164 lines
3.4 KiB
Perl
Executable File
164 lines
3.4 KiB
Perl
Executable File
#!/usr/bin/perl -w -T
|
|
|
|
use strict;
|
|
|
|
use lib '.'; use lib 't';
|
|
use SATest; sa_t_init("missing_hb_separator");
|
|
use Mail::SpamAssassin;
|
|
|
|
use Test::More tests => 13;
|
|
|
|
# initialize SpamAssassin
|
|
my $sa = create_saobj({
|
|
dont_copy_prefs => 1,
|
|
post_config_text => q{
|
|
score X_MESSAGE_INFO 0.1
|
|
score MISSING_HB_SEP 0.1
|
|
},
|
|
});
|
|
|
|
$sa->init(0); # parse rules
|
|
|
|
my @msg;
|
|
my $mail;
|
|
my $status;
|
|
my $result;
|
|
|
|
#####
|
|
|
|
# make sure we catch w/out body, and that we catch the last header
|
|
|
|
@msg = ("Content-Type: text/plain; boundary=foo\n","X-Message-Info: foo\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 0;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
print "test hit: $_\n";
|
|
$result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'X_MESSAGE_INFO');
|
|
}
|
|
|
|
ok ( $result == 2 );
|
|
ok ( $mail->{pristine_body} eq "" );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|
|
|
|
#####
|
|
|
|
# we should also catch no separator before the mime part boundary, and the
|
|
# last header
|
|
|
|
@msg = ("Content-Type: text/plain;\n"," boundary=foo\n","X-Message-Info: foo\n","--foo\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 0;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
$result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'X_MESSAGE_INFO');
|
|
}
|
|
|
|
ok ( $result == 2 );
|
|
ok ( $mail->{pristine_body} eq "--foo\n" );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|
|
|
|
#####
|
|
|
|
@msg = ("X-Message-Info: foo\n", "Content-Type: text/plain; boundary=foo\n","--foo\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 0;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
$result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'X_MESSAGE_INFO');
|
|
}
|
|
|
|
ok ( $result == 2 );
|
|
ok ( $mail->{pristine_body} eq "--foo\n" );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|
|
|
|
|
|
#####
|
|
|
|
@msg = ("Subject:x\n", "one\n", "two\n", "three\n", "X-Message-Info:foo\n",
|
|
"\n", "test body\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 0;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
# print "test hit: $_\n";
|
|
$result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'X_MESSAGE_INFO');
|
|
}
|
|
|
|
ok ( $result == 1 );
|
|
ok ( $mail->{pristine_body} eq "test body\n" );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|
|
|
|
|
|
#####
|
|
|
|
@msg = ("Subject:x\n", "one\n", "two\n", "three\n", "four\n",
|
|
"X-Message-Info:foo\n", "\n", "test\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 0;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
# print "test hitH: $_\n";
|
|
$result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'X_MESSAGE_INFO');
|
|
}
|
|
|
|
ok ( $result == 1 );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|
|
|
|
|
|
#####
|
|
|
|
@msg = ('Content-Type: multipart/related; boundary="foobar:"'."\n",
|
|
"--foobar:\n",
|
|
"Content-Type: text/plain\n",
|
|
"XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X\n",
|
|
"--foobar:--\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 0;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
$result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'GTUBE');
|
|
}
|
|
|
|
ok ( $result == 2 );
|
|
ok ( $mail->{body_parts}->[0]->{rendered} eq "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|
|
|
|
|
|
#####
|
|
|
|
# A normal message, should not trigger
|
|
|
|
@msg = ("Content-Type: text/plain;\n", " boundary=foo\n","\n","--foo\n");
|
|
$mail = $sa->parse(\@msg, 1);
|
|
$status = $sa->check($mail);
|
|
|
|
$result = 1;
|
|
foreach (@{$status->{test_names_hit}}) {
|
|
$result = 0 if ($_ eq 'MISSING_HB_SEP');
|
|
}
|
|
|
|
ok ( $result && $mail->{pristine_body} eq "--foo\n" );
|
|
ok ( $mail->{pristine_body} eq "--foo\n" );
|
|
|
|
$status->finish();
|
|
$mail->finish();
|