mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-08-13 12:06:47 +00:00
107 lines
2.9 KiB
Raku
Executable File
107 lines
2.9 KiB
Raku
Executable File
#!/usr/bin/perl -T
|
|
|
|
use lib '.'; use lib 't';
|
|
use SATest; sa_t_init("header");
|
|
use Test::More tests => 26;
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
tstprefs('
|
|
# exists
|
|
header TEST_EXISTS1 exists:To
|
|
header TEST_EXISTS2 exists:Not-Exist
|
|
|
|
# if-unset
|
|
header TEST_UNSET1 Not-Exist =~ /./
|
|
header TEST_UNSET2 Not-Exist =~ /^UNSET$/ [if-unset: UNSET]
|
|
header TEST_UNSET3 Not-Exist =~ /^NOT$/ [if-unset: UNSET]
|
|
|
|
# exists should not leak to a redefined test
|
|
header TEST_LEAK1 exists:Not-Exist
|
|
header TEST_LEAK1 To =~ /notexist/
|
|
|
|
# if-unset should not leak to a redefined test
|
|
header TEST_LEAK2 Not-Exist =~ /^UNSET$/ [if-unset: UNSET]
|
|
header TEST_LEAK2 Not-Exist =~ /^UNSET$/
|
|
|
|
# op should not leak to a redefined test
|
|
header TEST_LEAK3 To !~ /./
|
|
header TEST_LEAK3 To =~ /notfound/
|
|
|
|
# Test 4.0 :first :last parser
|
|
header HEADER_FIRST1 X-Hashcash:first =~ /^0:040315:test@example.com:69781c87bae95c03$/
|
|
header HEADER_LAST1 X-Hashcash:last =~ /^1:20:040806:test1@example.com:test=foo:482b788d12eb9b56:2a3349$/
|
|
header HEADER_ALL1 X-Hashcash =~ /^0:040315:.*1:20:040806:/s
|
|
|
|
# Meta should evaluate all
|
|
meta TEST_META (TEST_EXISTS1 && TEST_UNSET2 && HEADER_FIRST1 && HEADER_LAST1 && HEADER_ALL1)
|
|
|
|
# ALL newlines (Bug 8121)
|
|
header TEST_ALL1 ALL =~ /\nTo: announce@ximian\.com\nContent-Type:/
|
|
# ALL selector
|
|
header TEST_ALL2 ALL-TRUSTED =~ /\nDelivered-To: jm@netnoteinc.com\nReceived:/
|
|
header TEST_ALL3 ALL-UNTRUSTED =~ /\nDelivered-To:/
|
|
');
|
|
|
|
%patterns = (
|
|
q{ 1.0 TEST_EXISTS1 }, '',
|
|
q{ 1.0 TEST_UNSET2 }, '',
|
|
q{ 1.0 HEADER_FIRST1 }, '',
|
|
q{ 1.0 HEADER_LAST1 }, '',
|
|
q{ 1.0 HEADER_ALL1 }, '',
|
|
q{ 1.0 TEST_META }, '',
|
|
q{ 1.0 TEST_ALL1 }, '',
|
|
q{ 1.0 TEST_ALL2 }, '',
|
|
);
|
|
%anti_patterns = (
|
|
q{ TEST_EXISTS2 }, '',
|
|
q{ TEST_UNSET1 }, '',
|
|
q{ TEST_UNSET3 }, '',
|
|
q{ TEST_LEAK1 }, '',
|
|
q{ TEST_LEAK2 }, '',
|
|
q{ TEST_LEAK3 }, '',
|
|
q{ TEST_ALL3 }, '',
|
|
);
|
|
|
|
ok (sarun ("-L -t < data/nice/001", \&patterns_run_cb));
|
|
ok_all_patterns();
|
|
|
|
##########################################
|
|
|
|
tstprefs('
|
|
# Test 4.0 multiple :addr parser
|
|
header TO1 To:addr =~ /(?:@.*?){1}/s
|
|
header TONEG1 To:addr =~ /(?:@.*?){2}/s
|
|
header CC1 Cc:addr =~ /(?:@.*?){5}/s
|
|
header CCNEG1 Cc:addr =~ /(?:@.*?){6}/s
|
|
header TOCC1 ToCc:addr =~ /(?:@.*?){6}/s
|
|
header TOCCNEG1 ToCc:addr =~ /(?:@.*?){7}/s
|
|
header __TO_COUNT To:addr =~ /^.+$/m
|
|
tflags __TO_COUNT multiple
|
|
meta TO2 __TO_COUNT == 1
|
|
header __CC_COUNT Cc:addr =~ /^.+$/m
|
|
tflags __CC_COUNT multiple
|
|
meta CC2 __CC_COUNT == 5
|
|
header __TOCC_COUNT ToCc:addr =~ /^.+$/m
|
|
tflags __TOCC_COUNT multiple
|
|
meta TOCC2 __TOCC_COUNT == 6
|
|
');
|
|
|
|
%patterns = (
|
|
q{ 1.0 TO1 }, '',
|
|
q{ 1.0 CC1 }, '',
|
|
q{ 1.0 TOCC1 }, '',
|
|
q{ 1.0 TO2 }, '',
|
|
q{ 1.0 CC2 }, '',
|
|
q{ 1.0 TOCC2 }, '',
|
|
);
|
|
%anti_patterns = (
|
|
q{ TONEG }, '',
|
|
q{ CCNEG }, '',
|
|
q{ TOCCNEG }, '',
|
|
);
|
|
|
|
ok (sarun ("-L -t < data/nice/006", \&patterns_run_cb));
|
|
ok_all_patterns();
|
|
|