Browse Source

[Test] Use HTTP & simplified test style

tags/2.6
Andrew Lewis 3 years ago
parent
commit
c07cb6a8c4
38 changed files with 1198 additions and 1173 deletions
  1. 14
    15
      test/functional/cases/100_general.robot
  2. 19
    20
      test/functional/cases/101_lua.robot
  3. 151
    152
      test/functional/cases/102_multimap.robot
  4. 22
    22
      test/functional/cases/104_get_from.robot
  5. 30
    30
      test/functional/cases/105_mimetypes.robot
  6. 16
    16
      test/functional/cases/106_mid.robot
  7. 166
    167
      test/functional/cases/108_settings.robot
  8. 48
    46
      test/functional/cases/109_composites.robot
  9. 9
    9
      test/functional/cases/110_statistics/lib.robot
  10. 6
    6
      test/functional/cases/114_phishing.robot
  11. 42
    42
      test/functional/cases/115_dmarc.robot
  12. 18
    18
      test/functional/cases/116_dkim.robot
  13. 81
    81
      test/functional/cases/117_spf.robot
  14. 15
    17
      test/functional/cases/120_fuzzy/lib.robot
  15. 48
    54
      test/functional/cases/123_whitelist.robot
  16. 4
    4
      test/functional/cases/125_map_reload.robot
  17. 21
    45
      test/functional/cases/135_spamassassin.robot
  18. 4
    5
      test/functional/cases/140_proxy.robot
  19. 38
    38
      test/functional/cases/160_antivirus.robot
  20. 30
    39
      test/functional/cases/161_p0f.robot
  21. 2
    2
      test/functional/cases/220_http.robot
  22. 20
    23
      test/functional/cases/230_tcp.robot
  23. 4
    4
      test/functional/cases/240_redis.robot
  24. 4
    4
      test/functional/cases/241_redis_is_dead.robot
  25. 6
    6
      test/functional/cases/250_dns.robot
  26. 11
    11
      test/functional/cases/260_regex.robot
  27. 3
    3
      test/functional/cases/270_selector.robot
  28. 47
    47
      test/functional/cases/280_rules.robot
  29. 4
    4
      test/functional/cases/281_fnames.robot
  30. 7
    7
      test/functional/cases/290_greylist.robot
  31. 21
    20
      test/functional/cases/300_rbl.robot
  32. 6
    6
      test/functional/cases/310_udp.robot
  33. 28
    28
      test/functional/cases/330_neural.robot
  34. 103
    105
      test/functional/cases/340_surbl.robot
  35. 56
    56
      test/functional/cases/350_magic.robot
  36. 19
    19
      test/functional/cases/360_force_actions.robot
  37. 12
    2
      test/functional/lib/rspamd.py
  38. 63
    0
      test/functional/lib/rspamd.robot

+ 14
- 15
test/functional/cases/100_general.robot View File

@@ -13,8 +13,8 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
GTUBE
${result} = Scan Message With Rspamc ${GTUBE}
Check Rspamc ${result} GTUBE (
Scan File ${GTUBE}
Expect Symbol GTUBE

GTUBE - Encrypted
${result} = Run Rspamc -p -h ${LOCAL_ADDR}:${PORT_NORMAL} --key ${KEY_PUB1}
@@ -22,13 +22,13 @@ GTUBE - Encrypted
Check Rspamc ${result} GTUBE (

GTUBE - Scan File feature
${result} = Scan File ${LOCAL_ADDR} ${PORT_NORMAL} ${GTUBE}
Should Contain ${result} GTUBE
Scan File By Reference ${GTUBE}
Expect Symbol GTUBE

GTUBE - Scan File feature (encoded)
${encoded} = Encode Filename ${GTUBE}
${result} = Scan File ${LOCAL_ADDR} ${PORT_NORMAL} ${encoded}
Should Contain ${result} GTUBE
Scan File By Reference ${encoded}
Expect Symbol GTUBE

GTUBE - SPAMC
${result} = Spamc ${LOCAL_ADDR} ${PORT_NORMAL} ${GTUBE}
@@ -38,14 +38,13 @@ GTUBE - RSPAMC
${result} = Rspamc ${LOCAL_ADDR} ${PORT_NORMAL} ${GTUBE}
Should Contain ${result} GTUBE

# Broken
#EMAILS DETECTION 1
# ${result} = Scan Message With Rspamc ${TESTDIR}/messages/emails1.eml
# Check Rspamc ${result} "jim@example.net"
# Should Contain ${result.stdout} "bob@example.net"
# Should Contain ${result.stdout} "rupert@example.net"
EMAILS DETECTION 1
Scan File ${TESTDIR}/messages/emails1.eml URL-Format=Extended
Expect Email jim@example.net
Expect Email bob@example.net
Expect Email rupert@example.net

EMAILS DETECTION ZEROFONT
${result} = Scan File ${LOCAL_ADDR} ${PORT_NORMAL} ${TESTDIR}/messages/zerofont.eml
Should Contain ${result} MANY_INVISIBLE_PARTS
Should Contain ${result} ZERO_FONT
Scan File ${TESTDIR}/messages/zerofont.eml
Expect Symbol MANY_INVISIBLE_PARTS
Expect Symbol ZERO_FONT

+ 19
- 20
test/functional/cases/101_lua.robot View File

@@ -16,51 +16,50 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat
*** Test Cases ***
Flags
[Setup] Lua Setup ${TESTDIR}/lua/flags.lua
${result} = Scan Message With Rspamc ${MESSAGE}
Scan File ${MESSAGE}
${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} stat
Should Contain ${result.stdout} Messages scanned: 0

Dependencies
[Setup] Lua Setup ${TESTDIR}/lua/deps.lua
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} DEP10
Scan File ${MESSAGE}
Expect Symbol DEP10

Pre and Post Filters
[Setup] Lua Setup ${TESTDIR}/lua/prepostfilters.lua
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} TEST_PRE
Should Contain ${result.stdout} TEST_POST
Scan File ${MESSAGE}
Expect Symbol TEST_PRE
Expect Symbol TEST_POST

Recipient Parsing Sanity
[Setup] Lua Setup ${TESTDIR}/lua/recipients.lua
${result} = Scan Message With Rspamc ${MESSAGE} -r rcpt1@foobar -r rcpt2@foobar
... -r rcpt3@foobar -r rcpt4@foobar
Check Rspamc ${result} TEST_RCPT (1.00)[rcpt1@foobar,rcpt2@foobar,rcpt3@foobar,rcpt4@foobar]
Scan File ${MESSAGE} Rcpt=rcpt1@foobar,rcpt2@foobar,rcpt3@foobar,rcpt4@foobar
Expect Symbol With Exact Options TEST_RCPT rcpt1@foobar,rcpt2@foobar,rcpt3@foobar,rcpt4@foobar

TLD parts
[Setup] TLD Setup ${TESTDIR}/lua/tlds.lua
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} TEST_TLD (1.00)[no worry]
Scan File ${MESSAGE}
Expect Symbol With Exact Options TEST_TLD no worry

Hashes
[Setup] Lua Setup ${TESTDIR}/lua/hashes.lua
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} TEST_HASHES (1.00)[no worry]
Scan File ${MESSAGE}
Expect Symbol With Exact Options TEST_HASHES no worry

Maps Key Values
[Setup] Lua Replace Setup ${TESTDIR}/lua/maps_kv.lua
[Teardown] Lua Replace Teardown
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} RADIX_KV (1.00)[no worry]
Should Contain ${result.stdout} REGEXP_KV (1.00)[no worry]
Should Contain ${result.stdout} MAP_KV (1.00)[no worry]
Scan File ${MESSAGE}
Expect Symbol With Exact Options RADIX_KV no worry
Expect Symbol With Exact Options REGEXP_KV no worry
Expect Symbol With Exact Options MAP_KV no worry

Option Order
[Setup] Lua Replace Setup ${TESTDIR}/lua/option_order.lua
[Teardown] Lua Replace Teardown
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} OPTION_ORDER (1.00)[one, two, three, 4, 5, a]
Should Contain ${result.stdout} TBL_OPTION_ORDER (1.00)[one, two, three, 4, 5, a]
Scan File ${MESSAGE}
Expect Symbol With Exact Options OPTION_ORDER one two three 4 5 a
Expect Symbol With Exact Options TBL_OPTION_ORDER one two three 4 5 a

*** Keywords ***
Lua Setup

+ 151
- 152
test/functional/cases/102_multimap.robot View File

@@ -26,312 +26,311 @@ ${URL_ICS} ${TESTDIR}/messages/ics.eml

*** Test Cases ***
URL_ICS
${result} = Scan Message With Rspamc ${URL_ICS}
Check Rspamc ${result} Urls: ["test.com"]
Scan File ${URL_ICS}
Expect URL test.com

MAP - DNSBL HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 127.0.0.2
Check Rspamc ${result} DNSBL_MAP
Scan File ${MESSAGE} IP=127.0.0.2
Expect Symbol DNSBL_MAP

MAP - DNSBL MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 127.0.0.1
Check Rspamc ${result} DNSBL_MAP inverse=1
Scan File ${MESSAGE} IP=127.0.0.1
Do Not Expect Symbol DNSBL_MAP

MAP - IP HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 127.0.0.1
Check Rspamc ${result} IP_MAP
Scan File ${MESSAGE} IP=127.0.0.1
Expect Symbol IP_MAP

MAP - IP MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 127.0.0.2
Check Rspamc ${result} IP_MAP inverse=1
Scan File ${MESSAGE} IP=127.0.0.2
Do Not Expect Symbol IP_MAP

MAP - IP MASK
${result} = Scan Message With Rspamc ${MESSAGE} -i 10.1.0.10
Check Rspamc ${result} IP_MAP
Scan File ${MESSAGE} IP=10.1.0.10
Expect Symbol IP_MAP

MAP - IP MASK MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 11.1.0.10
Check Rspamc ${result} IP_MAP inverse=1
Scan File ${MESSAGE} IP=11.1.0.10
Do Not Expect Symbol IP_MAP

MAP - IP V6
${result} = Scan Message With Rspamc ${MESSAGE} -i ::1
Check Rspamc ${result} IP_MAP
Scan File ${MESSAGE} IP=::1
Expect Symbol IP_MAP

MAP - IP V6 MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i fe80::1
Check Rspamc ${result} IP_MAP inverse=1
Scan File ${MESSAGE} IP=fe80::1
Do Not Expect Symbol IP_MAP

MAP - FROM
${result} = Scan Message With Rspamc ${MESSAGE} --from user@example.com
Check Rspamc ${result} FROM_MAP
Scan File ${MESSAGE} From=user@example.com
Expect Symbol FROM_MAP

MAP - COMBINED IP MASK FROM
${result} = Scan Message With Rspamc ${MESSAGE} -i 10.1.0.10 --from user@example.com
Check Rspamc ${result} COMBINED_MAP_AND
Check Rspamc ${result} COMBINED_MAP_OR
Scan File ${MESSAGE} IP=10.1.0.10 From=user@example.com
Expect Symbol COMBINED_MAP_AND
Expect Symbol COMBINED_MAP_OR

MAP - COMBINED IP MASK ONLY
${result} = Scan Message With Rspamc ${MESSAGE} -i 10.1.0.10
Check Rspamc ${result} COMBINED_MAP_AND inverse=1
Check Rspamc ${result} COMBINED_MAP_OR
Scan File ${MESSAGE} IP=10.1.0.10
Do Not Expect Symbol COMBINED_MAP_AND
Expect Symbol COMBINED_MAP_OR

MAP - COMBINED FROM ONLY
${result} = Scan Message With Rspamc ${MESSAGE} --from user@example.com
Check Rspamc ${result} COMBINED_MAP_AND inverse=1
Check Rspamc ${result} COMBINED_MAP_OR
Scan File ${MESSAGE} From=user@example.com
Do Not Expect Symbol COMBINED_MAP_AND
Expect Symbol COMBINED_MAP_OR

MAP - COMBINED MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 11.1.0.10 --from user@other.com
Check Rspamc ${result} COMBINED_MAP_AND inverse=1
Check Rspamc ${result} COMBINED_MAP_OR inverse=1
Scan File ${MESSAGE} IP=11.1.0.10 From=user@other.com
Do Not Expect Symbol COMBINED_MAP_AND
Do Not Expect Symbol COMBINED_MAP_OR

MAP - FROM MISS
${result} = Scan Message With Rspamc ${MESSAGE} --from user@other.com
Check Rspamc ${result} FROM_MAP inverse=1
Scan File ${MESSAGE} From=user@other.com
Do Not Expect Symbol FROM_MAP

MAP - FROM REGEXP
${result} = Scan Message With Rspamc ${MESSAGE} --from user123@test.com
Check Rspamc ${result} REGEXP_MAP
${result} = Scan Message With Rspamc ${MESSAGE} --from somebody@example.com
Check Rspamc ${result} REGEXP_MAP
Scan File ${MESSAGE} From=user123@test.com
Expect Symbol REGEXP_MAP
Scan File ${MESSAGE} From=somebody@example.com
Expect Symbol REGEXP_MAP

MAP - FROM REGEXP MISS
${result} = Scan Message With Rspamc ${MESSAGE} --from user@other.org
Check Rspamc ${result} REGEXP_MAP inverse=1
Scan File ${MESSAGE} From=user@other.org
Do Not Expect Symbol REGEXP_MAP

MAP - RCPT DOMAIN HIT
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user@example.com
Check Rspamc ${result} RCPT_DOMAIN
Scan File ${MESSAGE} Rcpt=user@example.com
Expect Symbol RCPT_DOMAIN

MAP - RCPT DOMAIN MISS
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt example.com@user
Check Rspamc ${result} RCPT_DOMAIN inverse=1
Scan File ${MESSAGE} Rcpt=example.com@user
Do Not Expect Symbol RCPT_DOMAIN

MAP - RCPT USER HIT
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt bob@example.com
Check Rspamc ${result} RCPT_USER
Scan File ${MESSAGE} Rcpt=bob@example.com
Expect Symbol RCPT_USER

MAP - RCPT USER MISS
${result} = Scan Message With Rspamc ${MESSAGE} --from example.com@bob
Check Rspamc ${result} RCPT_USER inverse=1
Scan File ${MESSAGE} From=example.com@bob
Do Not Expect Symbol RCPT_USER

MAP - DEPENDS HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 88.99.142.95 --from user123@rspamd.com
Check Rspamc ${result} DEPS_MAP
Scan File ${MESSAGE} IP=88.99.142.95 From=user123@rspamd.com
Expect Symbol DEPS_MAP

MAP - DEPENDS MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 1.2.3.4 --from user123@rspamd.com
Check Rspamc ${result} DEPS_MAP inverse=1
Scan File ${MESSAGE} IP=1.2.3.4 From=user123@rspamd.com
Do Not Expect Symbol DEPS_MAP

MAP - MULSYM PLAIN
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user1@example.com
Check Rspamc ${result} RCPT_MAP
Scan File ${MESSAGE} Rcpt=user1@example.com
Expect Symbol RCPT_MAP

MAP - MULSYM SCORE
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user2@example.com
Check Rspamc ${result} RCPT_MAP (10.0
Scan File ${MESSAGE} Rcpt=user2@example.com
Expect Symbol With Score RCPT_MAP 10.0

MAP - MULSYM SYMBOL
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user3@example.com
Check Rspamc ${result} SYM1 (1.0
Scan File ${MESSAGE} Rcpt=user3@example.com
Expect Symbol With Score SYM1 1.0

MAP - MULSYM SYMBOL MISS
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user4@example.com
Check Rspamc ${result} RCPT_MAP (1.0
Scan File ${MESSAGE} Rcpt=user4@example.com
Expect Symbol With Score RCPT_MAP 1.0

MAP - MULSYM SYMBOL + SCORE
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user5@example.com
Check Rspamc ${result} SYM1 (-10.1
Scan File ${MESSAGE} Rcpt=user5@example.com
Expect Symbol With Score SYM1 -10.1

MAP - UTF
${result} = Scan Message With Rspamc ${UTF_MESSAGE}
Check Rspamc ${result} HEADER_MAP
Scan File ${UTF_MESSAGE}
Expect Symbol HEADER_MAP

MAP - UTF MISS
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} HEADER_MAP inverse=1
Scan File ${MESSAGE}
Do Not Expect Symbol HEADER_MAP

MAP - HOSTNAME
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname example.com
Check Rspamc ${result} HOSTNAME_MAP
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com
Expect Symbol HOSTNAME_MAP

MAP - HOSTNAME MISS
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname rspamd.com
Check Rspamc ${result} HOSTNAME_MAP inverse=1
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=rspamd.com
Do Not Expect Symbol HOSTNAME_MAP

MAP - TOP
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname example.com.au
Check Rspamc ${result} HOSTNAME_TOP_MAP
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com.au
Expect Symbol HOSTNAME_TOP_MAP

MAP - TOP MISS
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname example.com.bg
Check Rspamc ${result} HOSTNAME_TOP_MAP inverse=1
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com.bg
Do Not Expect Symbol HOSTNAME_TOP_MAP

MAP - CDB - HOSTNAME
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname example.com
Check Rspamc ${result} CDB_HOSTNAME
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=example.com
Expect Symbol CDB_HOSTNAME

MAP - CDB - HOSTNAME MISS
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname rspamd.com
Check Rspamc ${result} CDB_HOSTNAME inverse=1
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=rspamd.com
Do Not Expect Symbol CDB_HOSTNAME

MAP - REDIS - HOSTNAME
Redis HSET hostname redistest.example.net ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname redistest.example.net
Check Rspamc ${result} REDIS_HOSTNAME
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=redistest.example.net
Expect Symbol REDIS_HOSTNAME

MAP - REDIS - HOSTNAME MISS
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname rspamd.com
Check Rspamc ${result} REDIS_HOSTNAME inverse=1
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=rspamd.com
Do Not Expect Symbol REDIS_HOSTNAME

MAP - REDIS - HOSTNAME - EXPANSION - HIT
Redis HSET 127.0.0.1.foo.com redistest.example.net ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname redistest.example.net --rcpt bob@foo.com
Check Rspamc ${result} REDIS_HOSTNAME_EXPANSION
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=redistest.example.net Rcpt=bob@foo.com
Expect Symbol REDIS_HOSTNAME_EXPANSION

MAP - REDIS - HOSTNAME - EXPANSION - MISS
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1 --hostname redistest.example.net --rcpt bob@bar.com
Check Rspamc ${result} REDIS_HOSTNAME_EXPANSION inverse=1
Scan File ${MESSAGE} IP=127.0.0.1 Hostname=redistest.example.net Rcpt=bob@bar.com
Do Not Expect Symbol REDIS_HOSTNAME_EXPANSION

MAP - REDIS - IP
Redis HSET ipaddr 127.0.0.1 ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} --ip 127.0.0.1
Check Rspamc ${result} REDIS_IPADDR
Scan File ${MESSAGE} IP=127.0.0.1
Expect Symbol REDIS_IPADDR

MAP - REDIS - IP - MISS
${result} = Scan Message With Rspamc ${MESSAGE} --ip 8.8.8.8
Check Rspamc ${result} REDIS_IPADDR inverse=1
Scan File ${MESSAGE} IP=8.8.8.8
Do Not Expect Symbol REDIS_IPADDR

MAP - REDIS - FROM
Redis HSET emailaddr from@rspamd.tk ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} --from from@rspamd.tk
Check Rspamc ${result} REDIS_FROMADDR
Scan File ${MESSAGE} From=from@rspamd.tk
Expect Symbol REDIS_FROMADDR

MAP - REDIS - FROM MISS
${result} = Scan Message With Rspamc ${MESSAGE} --from user@other.com
Check Rspamc ${result} REDIS_FROMADDR inverse=1
Scan File ${MESSAGE} From=user@other.com
Do Not Expect Symbol REDIS_FROMADDR

MAP - REDIS - URL TLD - HIT
Redis HSET hostname example.com ${EMPTY}
${result} = Scan Message With Rspamc ${URL1}
Check Rspamc ${result} REDIS_URL_TLD
Scan File ${URL1}
Expect Symbol REDIS_URL_TLD

MAP - REDIS - URL TLD - MISS
${result} = Scan Message With Rspamc ${URL2}
Check Rspamc ${result} REDIS_URL_TLD inverse=1
Scan File ${URL2}
Do Not Expect Symbol REDIS_URL_TLD

MAP - REDIS - URL RE FULL - HIT
Redis HSET fullurlre html ${EMPTY}
${result} = Scan Message With Rspamc ${URL2}
Check Rspamc ${result} REDIS_URL_RE_FULL
Scan File ${URL2}
Expect Symbol REDIS_URL_RE_FULL

MAP - REDIS - URL RE FULL - MISS
${result} = Scan Message With Rspamc ${URL1}
Check Rspamc ${result} REDIS_URL_RE_FULL inverse=1
Scan File ${URL1}
Do Not Expect Symbol REDIS_URL_RE_FULL

MAP - REDIS - URL FULL - HIT
Redis HSET fullurl https://www.example.com/foo?a=b ${EMPTY}
${result} = Scan Message With Rspamc ${URL1}
Check Rspamc ${result} REDIS_URL_FULL
Scan File ${URL1}
Expect Symbol REDIS_URL_FULL

MAP - REDIS - URL FULL - MISS
${result} = Scan Message With Rspamc ${URL2}
Check Rspamc ${result} REDIS_URL_FULL inverse=1
Scan File ${URL2}
Do Not Expect Symbol REDIS_URL_FULL

MAP - REDIS - URL PHISHED - HIT
Redis HSET phishedurl www.rspamd.com ${EMPTY}
${result} = Scan Message With Rspamc ${URL3}
Check Rspamc ${result} REDIS_URL_PHISHED
Scan File ${URL3}
Expect Symbol REDIS_URL_PHISHED

MAP - REDIS - URL PHISHED - MISS
${result} = Scan Message With Rspamc ${URL4}
Check Rspamc ${result} REDIS_URL_PHISHED inverse=1
Scan File ${URL4}
Do Not Expect Symbol REDIS_URL_PHISHED

MAP - REDIS - URL PLAIN REGEX - HIT
Redis HSET urlre www ${EMPTY}
${result} = Scan Message With Rspamc ${URL3}
Check Rspamc ${result} REDIS_URL_RE_PLAIN
Scan File ${URL3}
Expect Symbol REDIS_URL_RE_PLAIN

MAP - REDIS - URL PLAIN REGEX - MISS
${result} = Scan Message With Rspamc ${URL4}
Check Rspamc ${result} REDIS_URL_RE_PLAIN inverse=1
Scan File ${URL4}
Do Not Expect Symbol REDIS_URL_RE_PLAIN

MAP - REDIS - URL TLD REGEX - HIT
Redis HSET tldre net ${EMPTY}
${result} = Scan Message With Rspamc ${URL5}
Check Rspamc ${result} REDIS_URL_RE_TLD
Scan File ${URL5}
Expect Symbol REDIS_URL_RE_TLD

MAP - REDIS - URL TLD REGEX - MISS
${result} = Scan Message With Rspamc ${URL4}
Check Rspamc ${result} REDIS_URL_RE_TLD inverse=1
Scan File ${URL4}
Do Not Expect Symbol REDIS_URL_RE_TLD

MAP - REDIS - URL NOFILTER - HIT
Redis HSET urlnofilter www.example.net ${EMPTY}
${result} = Scan Message With Rspamc ${URL5}
Check Rspamc ${result} REDIS_URL_NOFILTER
Scan File ${URL5}
Expect Symbol REDIS_URL_NOFILTER

MAP - REDIS - URL NOFILTER - MISS
${result} = Scan Message With Rspamc ${URL4}
Check Rspamc ${result} REDIS_URL_NOFILTER inverse=1
Scan File ${URL4}
Do Not Expect Symbol REDIS_URL_NOFILTER

MAP - REDIS - ASN - HIT
Redis HSET asn 15169 ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} -i 8.8.8.8
Check Rspamc ${result} REDIS_ASN
Scan File ${MESSAGE} IP=8.8.8.8
Expect Symbol REDIS_ASN

MAP - REDIS - ASN - MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 46.228.47.114
Check Rspamc ${result} REDIS_ASN inverse=1
Scan File ${MESSAGE} IP=46.228.47.114
Do Not Expect Symbol REDIS_ASN

MAP - REDIS - CC - HIT
Redis HSET cc US ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} -i 8.8.8.8
Check Rspamc ${result} REDIS_COUNTRY
Scan File ${MESSAGE} IP=8.8.8.8
Expect Symbol REDIS_COUNTRY

MAP - REDIS - CC - MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 46.228.47.114
Check Rspamc ${result} REDIS_COUNTRY inverse=1
Scan File ${MESSAGE} IP=46.228.47.114
Do Not Expect Symbol REDIS_COUNTRY

MAP - REDIS - ASN FILTERED - HIT
Redis HSET asn 1 ${EMPTY}
${result} = Scan Message With Rspamc ${MESSAGE} -i 8.8.8.8
Check Rspamc ${result} REDIS_ASN_FILTERED
Scan File ${MESSAGE} IP=8.8.8.8
Expect Symbol REDIS_ASN_FILTERED

MAP - REDIS - ASN FILTERED - MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 46.228.47.114
Check Rspamc ${result} REDIS_ASN_FILTERED inverse=1
Scan File ${MESSAGE} IP=46.228.47.114
Do Not Expect Symbol REDIS_ASN_FILTERED

MAP - RECEIVED - IP MINMAX POS - ONE
${result} = Scan Message With Rspamc ${RCVD1}
Check Rspamc ${result} RCVD_TEST_01
Check Rspamc ${result} RCVD_TEST_02 inverse=1
Scan File ${RCVD1}
Expect Symbol RCVD_TEST_01
Do Not Expect Symbol RCVD_TEST_02

# Relies on parsing of shitty received
#MAP - RECEIVED - IP MINMAX POS - TWO / RCVD_AUTHED_ONE HIT
# ${result} = Scan Message With Rspamc ${RCVD2}
# Check Rspamc ${result} RCVD_TEST_02
# Should Not Contain ${result.stdout} RCVD_TEST_01
# Should Contain ${result.stdout} RCVD_AUTHED_ONE
# Scan File ${RCVD2}
# Expect Symbol RCVD_TEST_02
# Do Not Expect Symbol RCVD_TEST_01
# Expect Symbol RCVD_AUTHED_ONE

MAP - RECEIVED - REDIS
Redis HSET RCVD_TEST 2a01:7c8:aab6:26d:5054:ff:fed1:1da2 ${EMPTY}
${result} = Scan Message With Rspamc ${RCVD1}
Check Rspamc ${result} RCVD_TEST_REDIS_01
Scan File ${RCVD1}
Expect Symbol RCVD_TEST_REDIS_01

RCVD_AUTHED_ONE & RCVD_AUTHED_TWO - MISS
${result} = Scan Message With Rspamc ${RCVD3}
Check Rspamc ${result} RCVD_AUTHED_ inverse=1
Scan File ${RCVD3}
Do Not Expect Symbol RCVD_AUTHED_ONE
Do Not Expect Symbol RCVD_AUTHED_TWO

RCVD_AUTHED_TWO HIT / RCVD_AUTHED_ONE MISS
${result} = Scan Message With Rspamc ${RCVD4}
Check Rspamc ${result} RCVD_AUTHED_TWO
Should Not Contain ${result.stdout} RCVD_AUTHED_ONE
Scan File ${RCVD4}
Expect Symbol RCVD_AUTHED_TWO
Do Not Expect Symbol RCVD_AUTHED_ONE

FREEMAIL_CC
${result} = Scan Message With Rspamc ${FREEMAIL_CC}
Check Rspamc ${result} FREEMAIL_CC (19.00)[test.com, test1.com, test2.com, test3.com, test4.com, test5.com, test6.com, test7.com, test8.com, test9.com, test10.com, test11.com, test12.com, test13.com, test14.com]


Scan File ${FREEMAIL_CC}
Expect Symbol With Score And Exact Options FREEMAIL_CC 19.00 test.com test1.com test2.com test3.com test4.com test5.com test6.com test7.com test8.com test9.com test10.com test11.com test12.com test13.com test14.com

*** Keywords ***
Multimap Setup

+ 22
- 22
test/functional/cases/104_get_from.robot View File

@@ -10,44 +10,44 @@ ${CONFIG} ${TESTDIR}/configs/lua_script.conf
${LUA_SCRIPT} ${TESTDIR}/lua/get_from.lua
${RSPAMD_SCOPE} Suite

${SYMBOL} GET_FROM (0.00)
${SYMBOL1} ${SYMBOL}\[,user@example.org,user,example.org]
${SYMBOL2} ${SYMBOL}\[First Last,user@example.org,user,example.org]
${SYMBOL3} ${SYMBOL}\[First M. Last,user@example.org,user,example.org]
${SYMBOL} GET_FROM
${OPTIONS1} ,user@example.org,user,example.org
${OPTIONS2} First Last,user@example.org,user,example.org
${OPTIONS3} First M. Last,user@example.org,user,example.org

*** Test Cases ***
task:get_from('mime') - address only
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from.eml
Check Rspamc ${result} ${SYMBOL1}
Scan File ${TESTDIR}/messages/from/from.eml
Expect Symbol ${SYMBOL}

task:get_from('mime') - comment
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_comment.eml
Check Rspamc ${result} ${SYMBOL1}
Scan File ${TESTDIR}/messages/from/from_comment.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS1}

task:get_from('mime') - display name
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_dn.eml
Check Rspamc ${result} ${SYMBOL2}
Scan File ${TESTDIR}/messages/from/from_dn.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS2}

task:get_from('mime') - display name Base64
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_dn_base64.eml
Check Rspamc ${result} ${SYMBOL}\[Кириллица,user@example.org,user,example.org]
Scan File ${TESTDIR}/messages/from/from_dn_base64.eml
Expect Symbol With Exact Options ${SYMBOL} Кириллица,user@example.org,user,example.org

task:get_from('mime') - display name and comment
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_dn_comment.eml
Check Rspamc ${result} ${SYMBOL2}
Scan File ${TESTDIR}/messages/from/from_dn_comment.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS2}

task:get_from('mime') - quoted display name
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_quoted_dn.eml
Check Rspamc ${result} ${SYMBOL3}
Scan File ${TESTDIR}/messages/from/from_quoted_dn.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS3}

task:get_from('mime') - quoted display name and comment
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_quoted_dn_comment.eml
Check Rspamc ${result} ${SYMBOL3}
Scan File ${TESTDIR}/messages/from/from_quoted_dn_comment.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS3}

task:get_from('mime') - quoted in the middle of DN (outer spaces)
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_quoted_dn_middle.eml
Check Rspamc ${result} ${SYMBOL3}
Scan File ${TESTDIR}/messages/from/from_quoted_dn_middle.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS3}

task:get_from('mime') - quoted in the middle of DN (inner spaces)
${result} = Scan Message With Rspamc ${TESTDIR}/messages/from/from_quoted_dn_middle_inner.eml
Check Rspamc ${result} ${SYMBOL3}
Scan File ${TESTDIR}/messages/from/from_quoted_dn_middle_inner.eml
Expect Symbol With Exact Options ${SYMBOL} ${OPTIONS3}

+ 30
- 30
test/functional/cases/105_mimetypes.robot View File

@@ -12,58 +12,58 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
Zip
${result} = Scan Message With Rspamc ${TESTDIR}/messages/zip.eml
Check Rspamc ${result} MIME_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[exe\\]\\n re=1
Scan File ${TESTDIR}/messages/zip.eml
Expect Symbol With Exact Options MIME_BAD_EXTENSION exe

Zip Double Bad Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/zip-doublebad.eml
Check Rspamc ${result} MIME_DOUBLE_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[\\.pdf\\.exe\\]\\n re=1
Scan File ${TESTDIR}/messages/zip-doublebad.eml
Expect Symbol With Exact Options MIME_DOUBLE_BAD_EXTENSION .pdf.exe

Next-to-last Double Bad Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/next2last-doublebad.eml
Check Rspamc ${result} MIME_DOUBLE_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[\\.scr\\.xz\\]\\n re=1
Scan File ${TESTDIR}/messages/next2last-doublebad.eml
Expect Symbol With Exact Options MIME_DOUBLE_BAD_EXTENSION .scr.xz

Date is followed by Bad Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/rar-date-bad-ext.eml
Check Rspamc ${result} MIME_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[scr\\]\\n re=1
Should Not Contain ${result.stdout} MIME_DOUBLE_BAD_EXTENSION
Scan File ${TESTDIR}/messages/rar-date-bad-ext.eml
Expect Symbol With Exact Options MIME_BAD_EXTENSION scr
Do Not Expect Symbol MIME_DOUBLE_BAD_EXTENSION

Dotted file name is followed by Bad Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/bad_ext.dotted_file_name.eml
Check Rspamc ${result} MIME_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[exe\\]\\n re=1
Should Not Contain ${result.stdout} MIME_DOUBLE_BAD_EXTENSION
Scan File ${TESTDIR}/messages/bad_ext.dotted_file_name.eml
Expect Symbol With Exact Options MIME_BAD_EXTENSION exe
Do Not Expect Symbol MIME_DOUBLE_BAD_EXTENSION

Dotted numbers in parentheses is followed by Bad Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/next2last-digits_in_parens.eml
Check Rspamc ${result} MIME_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[msi\\]\\n re=1
Should Not Contain ${result.stdout} MIME_DOUBLE_BAD_EXTENSION
Scan File ${TESTDIR}/messages/next2last-digits_in_parens.eml
Expect Symbol With Exact Options MIME_BAD_EXTENSION msi
Do Not Expect Symbol MIME_DOUBLE_BAD_EXTENSION

Dotted numbers in square brackets is followed by Bad Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/next2last-digits_in_brackets.eml
Check Rspamc ${result} MIME_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[msi\\]\\n re=1
Should Not Contain ${result.stdout} MIME_DOUBLE_BAD_EXTENSION
Scan File ${TESTDIR}/messages/next2last-digits_in_brackets.eml
Expect Symbol With Exact Options MIME_BAD_EXTENSION msi
Do Not Expect Symbol MIME_DOUBLE_BAD_EXTENSION

Rar4
${result} = Scan Message With Rspamc ${TESTDIR}/messages/rar4.eml
Check Rspamc ${result} MIME_BAD_EXTENSION \\(\\d+\\.\\d+\\)\\[exe\\]\\n re=1
Scan File ${TESTDIR}/messages/rar4.eml
Expect Symbol With Exact Options MIME_BAD_EXTENSION exe

Cloaked Archive Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/f.zip.gz.eml
Check Rspamc ${result} MIME_ARCHIVE_IN_ARCHIVE \\(\\d+\\.\\d+\\)\\[\\.zip\\.gz re=1
Scan File ${TESTDIR}/messages/f.zip.gz.eml
Expect Symbol With Exact Options MIME_ARCHIVE_IN_ARCHIVE .zip.gz zip

Multipart Archive Extension
${result} = Scan Message With Rspamc ${TESTDIR}/messages/f.zip.001.eml
Should Not Contain ${result.stdout} MIME_ARCHIVE_IN_ARCHIVE
Scan File ${TESTDIR}/messages/f.zip.001.eml
Do Not Expect Symbol MIME_ARCHIVE_IN_ARCHIVE

Exe file, but name in filename_whitelist
${result} = Scan Message With Rspamc ${TESTDIR}/messages/exe_attm.eml
Should Not Contain ${result.stdout} MIME_BAD_EXTENSION
Should Not Contain ${result.stdout} MIME_BAD_ATTACHMENT
Should Not Contain ${result.stdout} MIME_DOUBLE_BAD_EXTENSION
Scan File ${TESTDIR}/messages/exe_attm.eml
Do Not Expect Symbol MIME_BAD_EXTENSION
Do Not Expect Symbol MIME_BAD_ATTACHMENT
Do Not Expect Symbol MIME_DOUBLE_BAD_EXTENSION

Empty text part should not be treat as html
${result} = Scan Message With Rspamc ${TESTDIR}/messages/empty-plain-text.eml
Should Not Contain ${result.stdout} FORGED_OUTLOOK_HTML
Scan File ${TESTDIR}/messages/empty-plain-text.eml
Do Not Expect Symbol FORGED_OUTLOOK_HTML

*** Keywords ***
MIMETypes Setup

+ 16
- 16
test/functional/cases/106_mid.robot View File

@@ -12,28 +12,28 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
MID - invalid Message-ID
${result} = Scan Message With Rspamc ${TESTDIR}/messages/fws_fp.eml
Check Rspamc ${result} INVALID_MSGID (1.70)
Should Not Contain ${result.stdout} MISSING_MID
Should Not Contain ${result.stdout} INVALID_MSGID_ALLOWED
Scan File ${TESTDIR}/messages/fws_fp.eml
Expect Symbol With Score INVALID_MSGID 1.70
Do Not Expect Symbol MISSING_MID
Do Not Expect Symbol INVALID_MSGID_ALLOWED

MID - invalid Message-ID allowed
${result} = Scan Message With Rspamc ${TESTDIR}/messages/invalid_mid_allowed.eml
Check Rspamc ${result} INVALID_MSGID_ALLOWED (1.00)
Should Not Contain ${result.stdout} MISSING_MID
Should Not Contain ${result.stdout} INVALID_MSGID (
Scan File ${TESTDIR}/messages/invalid_mid_allowed.eml
Expect Symbol With Score INVALID_MSGID_ALLOWED 1.00
Do Not Expect Symbol MISSING_MID
Do Not Expect Symbol INVALID_MSGID

MID - missing Message-ID
${result} = Scan Message With Rspamc ${TESTDIR}/messages/freemail.eml
Check Rspamc ${result} MISSING_MID (2.50)
Should Not Contain ${result.stdout} MISSING_MID_ALLOWED
Should Not Contain ${result.stdout} INVALID_MSGID
Scan File ${TESTDIR}/messages/freemail.eml
Expect Symbol With Score MISSING_MID 2.50
Do Not Expect Symbol MISSING_MID_ALLOWED
Do Not Expect Symbol INVALID_MSGID

MID - missing Message-ID allowed
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/onsubdomain_pass_relaxed.eml
Check Rspamc ${result} MISSING_MID_ALLOWED (1.00)
Should Not Contain ${result.stdout} MISSING_MID (
Should Not Contain ${result.stdout} INVALID_MSGID
Scan File ${TESTDIR}/messages/dmarc/onsubdomain_pass_relaxed.eml
Expect Symbol With Score MISSING_MID_ALLOWED 1.00
Do Not Expect Symbol MISSING_MID
Do Not Expect Symbol INVALID_MSGID

*** Keywords ***
MID Setup

+ 166
- 167
test/functional/cases/108_settings.robot View File

@@ -20,236 +20,235 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Keywords ***
Check Everything Disabled
[Arguments] ${result}
Check Rspamc ${result} Action: no action
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL
Should Not Contain ${result.stdout} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} BAYES_SPAM
Expect Action no action
Do Not Expect Symbol SIMPLE_VIRTUAL
Do Not Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol BAYES_SPAM

*** Test Cases ***
NO SETTINGS SPAM
${result} = Scan Message With Rspamc ${SPAM_MESSAGE}
Check Rspamc ${result} SIMPLE_TEST
Should Contain ${result.stdout} SIMPLE_VIRTUAL
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Contain ${result.stdout} SIMPLE_PRE
Should Contain ${result.stdout} SIMPLE_POST
Should Contain ${result.stdout} BAYES_SPAM
Scan File ${SPAM_MESSAGE}
Expect Symbol SIMPLE_TEST
Expect Symbol SIMPLE_VIRTUAL
Do Not Expect Symbol SIMPLE_VIRTUAL1
Expect Symbol SIMPLE_PRE
Expect Symbol SIMPLE_POST
Expect Symbol BAYES_SPAM

NO SETTINGS HAM
${result} = Scan Message With Rspamc ${HAM_MESSAGE}
Check Rspamc ${result} SIMPLE_TEST
Should Contain ${result.stdout} SIMPLE_PRE
Should Contain ${result.stdout} SIMPLE_POST
Should Contain ${result.stdout} BAYES_HAM
Scan File ${HAM_MESSAGE}
Expect Symbol SIMPLE_TEST
Expect Symbol SIMPLE_PRE
Expect Symbol SIMPLE_POST
Expect Symbol BAYES_HAM

EMPTY SYMBOLS ENABLED - STATIC
${result} = Scan Message With Rspamc ${SPAM_MESSAGE} -i 5.5.5.5
Check Everything Disabled ${result}
Scan File ${SPAM_MESSAGE} IP=5.5.5.5
Check Everything Disabled

EMPTY GROUPS ENABLED - STATIC
${result} = Scan Message With Rspamc ${SPAM_MESSAGE} -i 5.5.5.6
Check Everything Disabled ${result}
Scan File ${SPAM_MESSAGE} IP=5.5.5.6
Check Everything Disabled

EMPTY SYMBOLS ENABLED - SETTINGS-ID
${result} = Scan Message With Rspamc ${SPAM_MESSAGE} --header Settings-Id=empty_symbols_enabled
Check Everything Disabled ${result}
Scan File ${SPAM_MESSAGE} Settings-Id=empty_symbols_enabled
Check Everything Disabled

EMPTY GROUPS ENABLED - SETTINGS-ID
${result} = Scan Message With Rspamc ${SPAM_MESSAGE} --header Settings-Id=empty_groups_enabled
Check Everything Disabled ${result}
Scan File ${SPAM_MESSAGE} Settings-Id=empty_groups_enabled
Check Everything Disabled

ENABLE SYMBOL - NORMAL
${result} = Scan Message With Rspamc ${HAM_MESSAGE} --header Settings={symbols_enabled = ["SIMPLE_TEST"]}
Check Rspamc ${result} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} BAYES_HAM
Scan File ${HAM_MESSAGE} Settings={symbols_enabled = ["SIMPLE_TEST"]}
Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol BAYES_HAM

ENABLE SYMBOL - POSTFILTER
${result} = Scan Message With Rspamc ${HAM_MESSAGE} --header Settings={symbols_enabled = ["SIMPLE_TEST", "SIMPLE_POST"]}
Check Rspamc ${result} SIMPLE_TEST
Should Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Should Not Contain ${result.stdout} BAYES_HAM
Scan File ${HAM_MESSAGE} Settings={symbols_enabled = ["SIMPLE_TEST", "SIMPLE_POST"]}
Expect Symbol SIMPLE_TEST
Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE
Do Not Expect Symbol BAYES_HAM

ENABLE SYMBOL - PREFILTER
${result} = Scan Message With Rspamc ${HAM_MESSAGE} --header Settings={symbols_enabled = ["SIMPLE_PRE"]}
Check Rspamc ${result} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} BAYES_HAM
Scan File ${HAM_MESSAGE} Settings={symbols_enabled = ["SIMPLE_PRE"]}
Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol BAYES_HAM

ENABLE SYMBOL - CLASSIFIER
${result} = Scan Message With Rspamc ${HAM_MESSAGE} --header Settings={symbols_enabled = ["BAYES_HAM", "BAYES_SPAM"]}
Check Rspamc ${result} BAYES_HAM
Should Not Contain ${result.stdout} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_TEST
Scan File ${HAM_MESSAGE} Settings={symbols_enabled = ["BAYES_HAM", "BAYES_SPAM"]}
Expect Symbol BAYES_HAM
Do Not Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_TEST

DISABLE SYMBOL - NORMAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_disabled = ["SIMPLE_TEST"]}
Check Rspamc ${result} SIMPLE_TEST inverse=1
Should Contain ${result.stdout} SIMPLE_PRE
Should Contain ${result.stdout} SIMPLE_POST
Scan File ${MESSAGE} Settings={symbols_disabled = ["SIMPLE_TEST"]}
Do Not Expect Symbol SIMPLE_TEST
Expect Symbol SIMPLE_PRE
Expect Symbol SIMPLE_POST

RESCORE SYMBOL - NORMAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={SIMPLE_TEST = 3.33}
Check Rspamc ${result} SIMPLE_TEST (3.33)
Scan File ${MESSAGE} Settings={SIMPLE_TEST = 3.33}
Expect Symbol With Score SIMPLE_TEST 3.33

INJECT SYMBOL - NORMAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols = ["INJECTED_SYMBOL1", "INJECTED_SYMBOL2"]}
Check Rspamc ${result} INJECTED_SYMBOL1
Should Contain ${result.stdout} INJECTED_SYMBOL2
Scan File ${MESSAGE} Settings={symbols = ["INJECTED_SYMBOL1", "INJECTED_SYMBOL2"]}
Expect Symbol INJECTED_SYMBOL1
Expect Symbol INJECTED_SYMBOL2

RESCORE ACTION
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={actions { reject = 1234.5; } }
Check Rspamc ${result} ${SPACE}/ 1234.50
Scan File ${MESSAGE} Settings={actions { reject = 1234.5; } }
Expect Required Score 1234.5

DISABLE GROUP - NORMAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={groups_disabled = ["b"]}
Check Rspamc ${result} SIMPLE_TEST inverse=1
Should Contain ${result.stdout} SIMPLE_PRE
Should Contain ${result.stdout} SIMPLE_POST
Scan File ${MESSAGE} Settings={groups_disabled = ["b"]}
Do Not Expect Symbol SIMPLE_TEST
Expect Symbol SIMPLE_PRE
Expect Symbol SIMPLE_POST

ENABLE GROUP - NORMAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={groups_enabled = ["b"]}
Check Rspamc ${result} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_POST
Scan File ${MESSAGE} Settings={groups_enabled = ["b"]}
Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_POST

SETTINGS ID - NORMAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_test
Check Rspamc ${result} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_POST
Scan File ${MESSAGE} Settings-Id=id_test
Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_POST

SETTINGS ID - PRE
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_pre
Check Rspamc ${result} SIMPLE_PRE
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_POST
Scan File ${MESSAGE} Settings-Id=id_pre
Expect Symbol SIMPLE_PRE
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_POST

SETTINGS ID - VIRTUAL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_virtual
Check Rspamc ${result} SIMPLE_VIRTUAL
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Settings-Id=id_virtual
Expect Symbol SIMPLE_VIRTUAL
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL GROUP
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_virtual_group
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Settings-Id=id_virtual_group
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL FROM
${result} = Scan Message With Rspamc ${MESSAGE} --from test2@example.com
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} From=test2@example.com
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL USER
${result} = Scan Message With Rspamc ${MESSAGE} --user test@example.com
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} User=test@example.com
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL HOSTNAME
${result} = Scan Message With Rspamc ${MESSAGE} --hostname example.com
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Hostname=example.com
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL SELECTOR
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt user3@example.com
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Rcpt=user3@example.com
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - ANGLED RECIPIENT
${result} = Scan Message With Rspamc ${MESSAGE} --rcpt <user3@example.com>
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Rcpt=<user3@example.com>
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL HEADER MATCH
${result} = Scan Message With Rspamc ${MESSAGE_7BIT}
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Contain ${result.stdout} EXPLICIT_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE_7BIT}
Expect Symbol With Score SIMPLE_VIRTUAL 10
Expect Symbol With Score EXPLICIT_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL HEADER EXISTS
${result} = Scan Message With Rspamc ${MESSAGE_CUSTOM_HDR}
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE_CUSTOM_HDR}
Expect Symbol With Score SIMPLE_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL HEADER ABSENT
${result} = Scan Message With Rspamc ${MESSAGE_ABSENT_MIME}
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE_ABSENT_MIME}
Expect Symbol With Score SIMPLE_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL REQUEST HEADER
${result} = Scan Message With Rspamc ${MESSAGE} --header Test=passed
Check Rspamc ${result} SIMPLE_VIRTUAL (10
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL1
Should Not Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Test=passed
Expect Symbol With Score SIMPLE_VIRTUAL 10
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL1
Do Not Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

SETTINGS ID - VIRTUAL DEP
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_virtual1
Check Rspamc ${result} EXPLICIT_VIRTUAL1
Should Contain ${result.stdout} DEP_VIRTUAL
Should Contain ${result.stdout} DEP_REAL
Should Not Contain ${result.stdout} SIMPLE_TEST
Should Not Contain ${result.stdout} SIMPLE_VIRTUAL
Should Not Contain ${result.stdout} SIMPLE_POST
Should Not Contain ${result.stdout} SIMPLE_PRE
Scan File ${MESSAGE} Settings-Id=id_virtual1
Expect Symbol EXPLICIT_VIRTUAL1
Expect Symbol DEP_VIRTUAL
Expect Symbol DEP_REAL
Do Not Expect Symbol SIMPLE_TEST
Do Not Expect Symbol SIMPLE_VIRTUAL
Do Not Expect Symbol SIMPLE_POST
Do Not Expect Symbol SIMPLE_PRE

PRIORITY
${result} = Scan Message With Rspamc ${MESSAGE_PRIORITY} --header Settings-Id=id_virtual_group --from user@test.com
Should Contain ${result.stdout} PRIORITY_2
Scan File ${MESSAGE_PRIORITY} Settings-Id=id_virtual_group From=user@test.com
Expect Symbol PRIORITY_2


*** Keywords ***

+ 48
- 46
test/functional/cases/109_composites.robot View File

@@ -13,73 +13,75 @@ ${RSPAMD_SCOPE} Suite

*** Test Cases ***
Composites - Score
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} ${SPACE}50.00 / 0.00
Scan File ${MESSAGE}
Expect Score 50
Expect Required Score To Be Null

Composites - Expressions
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} EXPRESSIONS (5.00)
Should Contain ${result.stdout} EXPRESSIONS_B (0.00)
Scan File ${MESSAGE}
Expect Symbol With Score EXPRESSIONS 5
Expect Symbol With Score EXPRESSIONS_B 0

Composites - Policy: remove_weight
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} ${SPACE}POLICY_REMOVE_WEIGHT (5.00)
Should Not Contain ${result.stdout} ${SPACE}POLICY_REMOVE_WEIGHT_A (1.00)
Should Contain ${result.stdout} ${SPACE}POLICY_REMOVE_WEIGHT_B (0.00)
Scan File ${MESSAGE}
Expect Symbol With Score POLICY_REMOVE_WEIGHT 5
Expect Symbol With Score POLICY_REMOVE_WEIGHT_B 0
Do Not Expect Symbol POLICY_REMOVE_WEIGHT_A

Composites - Policy: force removing
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} ${SPACE}POLICY_FORCE_REMOVE (5.00)
Should Contain ${result.stdout} ${SPACE}POLICY_FORCE_REMOVE_A (1.00)
Should Not Contain ${result.stdout} ${SPACE}POLICY_FORCE_REMOVE_B
Scan File ${MESSAGE}
Expect Symbol With Score POLICY_FORCE_REMOVE 5.00
Expect Symbol With Score POLICY_FORCE_REMOVE_A 1.00
Do Not Expect Symbol POLICY_FORCE_REMOVE_B

Composites - Policy: leave
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} ${SPACE}POLICY_LEAVE (5.00)
Should Not Contain ${result.stdout} ${SPACE}POLICY_LEAVE_A
Should Contain ${result.stdout} ${SPACE}POLICY_LEAVE_B (1.00)
Scan File ${MESSAGE}
Expect Symbol With Score POLICY_LEAVE 5.00
Do Not Expect Symbol POLICY_LEAVE_A
Expect Symbol With Score POLICY_LEAVE_B 1.00

Composites - Default policy: remove_weight
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} DEFAULT_POLICY_REMOVE_WEIGHT (5.00)
Should Contain ${result.stdout} DEFAULT_POLICY_REMOVE_WEIGHT_A (0.00)
Should Contain ${result.stdout} DEFAULT_POLICY_REMOVE_WEIGHT_B (0.00)
Scan File ${MESSAGE}
Expect Symbol With Score DEFAULT_POLICY_REMOVE_WEIGHT 5.00
Expect Symbol With Score DEFAULT_POLICY_REMOVE_WEIGHT_A 0.00
Expect Symbol With Score DEFAULT_POLICY_REMOVE_WEIGHT_B 0.00

Composites - Default policy: remove_symbol
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} DEFAULT_POLICY_REMOVE_SYMBOL (5.00)
Should Not Contain ${result.stdout} DEFAULT_POLICY_REMOVE_SYMBOL_
Scan File ${MESSAGE}
Expect Symbol With Score DEFAULT_POLICY_REMOVE_SYMBOL 5.00
Do Not Expect Symbol DEFAULT_POLICY_REMOVE_SYMBOL_A
Do Not Expect Symbol DEFAULT_POLICY_REMOVE_SYMBOL_B

Composites - Default policy: leave
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} DEFAULT_POLICY_LEAVE (5.00)
Should Contain ${result.stdout} DEFAULT_POLICY_LEAVE_A (1.00)
Should Contain ${result.stdout} DEFAULT_POLICY_LEAVE_B (1.00)
Scan File ${MESSAGE}
Expect Symbol With Score DEFAULT_POLICY_LEAVE 5.00
Expect Symbol With Score DEFAULT_POLICY_LEAVE_A 1.00
Expect Symbol With Score DEFAULT_POLICY_LEAVE_B 1.00

Composites - Symbol groups
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} SYMBOL_GROUPS (5.00)
Should Contain ${result.stdout} POSITIVE_A (-1.00)
Should Contain ${result.stdout} ANY_A (-1.00)
Should Contain ${result.stdout} NEGATIVE_B (1.00)
Should Not Contain ${result.stdout} NEGATIVE_A
Scan File ${MESSAGE}
Expect Symbol With Score SYMBOL_GROUPS 5.00
Expect Symbol With Score POSITIVE_A -1.00
Expect Symbol With Score ANY_A -1.00
Expect Symbol With Score NEGATIVE_B 1.00
Do Not Expect Symbol NEGATIVE_A

Composites - Opts Plain
${result} = Scan Message With Rspamc ${MESSAGE} --header=opts:sym1
Check Rspamc ${result} SYMOPTS1 (5.00)
Should Not Contain ${result.stdout} SYMOPTS2
Scan File ${MESSAGE} opts=sym1
Expect Symbol With Score SYMOPTS1 5.00
Do Not Expect Symbol SYMOPTS2

Composites - Opts RE Miss one
${result} = Scan Message With Rspamc ${MESSAGE} --header=opts:sym1,foo1
Check Rspamc ${result} SYMOPTS1 (5.00)
Should Not Contain ${result.stdout} SYMOPTS2
Scan File ${MESSAGE} opts=sym1,foo1
Expect Symbol With Score SYMOPTS1 5.00
Do Not Expect Symbol SYMOPTS2

Composites - Opts RE Miss both
${result} = Scan Message With Rspamc ${MESSAGE} --header=opts:sym2
Should Not Contain ${result.stdout} SYMOPTS1
Should Not Contain ${result.stdout} SYMOPTS2
Scan File ${MESSAGE} opts=sym2
Do Not Expect Symbol SYMOPTS1
Do Not Expect Symbol SYMOPTS2

Composites - Opts RE Hit
${result} = Scan Message With Rspamc ${MESSAGE} --header=opts:sym2,foo1
Check Rspamc ${result} SYMOPTS2 (6.00)
Should Not Contain ${result.stdout} SYMOPTS1
Scan File ${MESSAGE} opts=sym2,foo1
Expect Symbol With Score SYMOPTS2 6.00
Do Not Expect Symbol SYMOPTS1

+ 9
- 9
test/functional/cases/110_statistics/lib.robot View File

@@ -22,28 +22,28 @@ Empty Part Test
Set Test Variable ${MESSAGE} ${TESTDIR}/messages/empty_part.eml
${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} learn_spam ${MESSAGE}
Check Rspamc ${result}
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} BAYES_SPAM
Scan File ${MESSAGE}
Expect Symbol BAYES_SPAM

Learn Test
Set Suite Variable ${RSPAMD_STATS_LEARNTEST} 0
${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} learn_spam ${MESSAGE_SPAM}
${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} learn_ham ${MESSAGE_HAM}
Check Rspamc ${result}
${result} = Scan Message With Rspamc ${MESSAGE_SPAM}
Check Rspamc ${result} BAYES_SPAM
${result} = Scan Message With Rspamc ${MESSAGE_HAM}
Check Rspamc ${result} BAYES_HAM
Scan File ${MESSAGE_SPAM}
Expect Symbol BAYES_SPAM
Scan File ${MESSAGE_HAM}
Expect Symbol BAYES_HAM
Set Suite Variable ${RSPAMD_STATS_LEARNTEST} 1

Relearn Test
Run Keyword If ${RSPAMD_STATS_LEARNTEST} == 0 Fail "Learn test was not run"
${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} learn_ham ${MESSAGE_SPAM}
Check Rspamc ${result}
${result} = Scan Message With Rspamc ${MESSAGE_SPAM}
${pass} = Run Keyword And Return Status Check Rspamc ${result} BAYES_HAM
Scan File ${MESSAGE_SPAM}
${pass} = Run Keyword And Return Status Expect Symbol BAYES_HAM
Run Keyword If ${pass} Pass Execution What Me Worry
Should Not Contain ${result.stdout} BAYES_SPAM
Do Not Expect Symbol BAYES_SPAM

Redis Statistics Setup
${tmpdir} = Make Temporary Directory

+ 6
- 6
test/functional/cases/114_phishing.robot View File

@@ -15,16 +15,16 @@ ${URL_TLD} ${TESTDIR}/../../contrib/publicsuffix/effective_tld_names.dat

*** Test Cases ***
TEST PHISHING
${result} = Scan Message With Rspamc ${MESSAGE1}
Check Rspamc ${result} ${SPACE}PHISHING
Scan File ${MESSAGE1}
Expect Symbol PHISHING

TEST PHISHING STRICT ONE
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} STRICT_PHISHING
Scan File ${MESSAGE2}
Expect Symbol STRICT_PHISHING

TEST PHISHING STRICT TWO
${result} = Scan Message With Rspamc ${MESSAGE3}
Check Rspamc ${result} STRICTER_PHISHING
Scan File ${MESSAGE3}
Expect Symbol STRICTER_PHISHING

*** Keywords ***
Phishing Setup

+ 42
- 42
test/functional/cases/115_dmarc.robot View File

@@ -12,80 +12,80 @@ ${URL_TLD} ${TESTDIR}/../../contrib/publicsuffix/effective_tld_names.dat

*** Test Cases ***
DMARC NONE PASS DKIM
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/pass_none.eml
Check Rspamc ${result} DMARC_POLICY_ALLOW
Scan File ${TESTDIR}/messages/dmarc/pass_none.eml
Expect Symbol DMARC_POLICY_ALLOW

DMARC NONE PASS SPF
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/fail_none.eml
... -i 8.8.4.4 --from foo@spf.cacophony.za.org
Check Rspamc ${result} DMARC_POLICY_ALLOW
Scan File ${TESTDIR}/messages/dmarc/fail_none.eml
... IP=8.8.4.4 From=foo@spf.cacophony.za.org
Expect Symbol DMARC_POLICY_ALLOW

DMARC NONE FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/fail_none.eml
Check Rspamc ${result} DMARC_POLICY_SOFTFAIL
Scan File ${TESTDIR}/messages/dmarc/fail_none.eml
Expect Symbol DMARC_POLICY_SOFTFAIL

DMARC REJECT FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/fail_reject.eml
Check Rspamc ${result} DMARC_POLICY_REJECT
Scan File ${TESTDIR}/messages/dmarc/fail_reject.eml
Expect Symbol DMARC_POLICY_REJECT

DMARC QUARANTINE FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/fail_quarantine.eml
Check Rspamc ${result} DMARC_POLICY_QUARANTINE
Scan File ${TESTDIR}/messages/dmarc/fail_quarantine.eml
Expect Symbol DMARC_POLICY_QUARANTINE

DMARC SP NONE FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/subdomain_fail_none.eml
Check Rspamc ${result} DMARC_POLICY_SOFTFAIL
Scan File ${TESTDIR}/messages/dmarc/subdomain_fail_none.eml
Expect Symbol DMARC_POLICY_SOFTFAIL

DMARC SP REJECT FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/subdomain_fail_reject.eml
Check Rspamc ${result} DMARC_POLICY_REJECT
Scan File ${TESTDIR}/messages/dmarc/subdomain_fail_reject.eml
Expect Symbol DMARC_POLICY_REJECT

DMARC SP QUARANTINE FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/subdomain_fail_quarantine.eml
Check Rspamc ${result} DMARC_POLICY_QUARANTINE
Scan File ${TESTDIR}/messages/dmarc/subdomain_fail_quarantine.eml
Expect Symbol DMARC_POLICY_QUARANTINE

DMARC SUBDOMAIN FAIL DKIM STRICT ALIGNMENT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/onsubdomain_fail_alignment.eml
Check Rspamc ${result} DMARC_POLICY_REJECT
Scan File ${TESTDIR}/messages/dmarc/onsubdomain_fail_alignment.eml
Expect Symbol DMARC_POLICY_REJECT

DMARC SUBDOMAIN PASS DKIM RELAXED ALIGNMENT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/onsubdomain_pass_relaxed.eml
Check Rspamc ${result} DMARC_POLICY_ALLOW
Scan File ${TESTDIR}/messages/dmarc/onsubdomain_pass_relaxed.eml
Expect Symbol DMARC_POLICY_ALLOW

DMARC SUBDOMAIN PASS SPF STRICT ALIGNMENT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/onsubdomain_fail_alignment.eml
... -i 37.48.67.26 --from foo@yo.mom.za.org
Check Rspamc ${result} DMARC_POLICY_ALLOW
Scan File ${TESTDIR}/messages/dmarc/onsubdomain_fail_alignment.eml
... IP=37.48.67.26 From=foo@yo.mom.za.org
Expect Symbol DMARC_POLICY_ALLOW

DMARC SUBDOMAIN FAIL SPF STRICT ALIGNMENT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/onsubdomain_fail_alignment.eml
... -i 37.48.67.26 --from foo@mom.za.org
Check Rspamc ${result} DMARC_POLICY_REJECT
Scan File ${TESTDIR}/messages/dmarc/onsubdomain_fail_alignment.eml
... IP=37.48.67.26 From=foo@mom.za.org
Expect Symbol DMARC_POLICY_REJECT

DMARC SUBDOMAIN PASS SPF RELAXED ALIGNMENT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/onsubdomain_fail.eml
... -i 37.48.67.26 --from foo@mom.za.org
Check Rspamc ${result} DMARC_POLICY_ALLOW
Scan File ${TESTDIR}/messages/dmarc/onsubdomain_fail.eml
... IP=37.48.67.26 From=foo@mom.za.org
Expect Symbol DMARC_POLICY_ALLOW

DMARC DNSFAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/dmarc_tmpfail.eml
... -i 37.48.67.26 --from foo@mom.za.org
Check Rspamc ${result} DMARC_DNSFAIL
Scan File ${TESTDIR}/messages/dmarc/dmarc_tmpfail.eml
... IP=37.48.67.26 From=foo@mom.za.org
Expect Symbol DMARC_DNSFAIL

DMARC NA NXDOMAIN
${result} = Scan Message With Rspamc ${TESTDIR}/messages/utf.eml
... -i 37.48.67.26 --from foo@mom.za.org
Check Rspamc ${result} DMARC_NA
Scan File ${TESTDIR}/messages/utf.eml
... IP=37.48.67.26 From=foo@mom.za.org
Expect Symbol DMARC_NA

DMARC PCT ZERO REJECT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/pct_none.eml
... -i 37.48.67.26 --from foo@mom.za.org
Check Rspamc ${result} DMARC_POLICY_QUARANTINE
Scan File ${TESTDIR}/messages/dmarc/pct_none.eml
... IP=37.48.67.26 From=foo@mom.za.org
Expect Symbol DMARC_POLICY_QUARANTINE

DMARC PCT ZERO SP QUARANTINE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/pct_none1.eml
... -i 37.48.67.26 --from foo@mom.za.org
Check Rspamc ${result} DMARC_POLICY_SOFTFAIL
Scan File ${TESTDIR}/messages/dmarc/pct_none1.eml
... IP=37.48.67.26 From=foo@mom.za.org
Expect Symbol DMARC_POLICY_SOFTFAIL

*** Keywords ***
DMARC Setup

+ 18
- 18
test/functional/cases/116_dkim.robot View File

@@ -12,24 +12,24 @@ ${URL_TLD} ${TESTDIR}/../../contrib/publicsuffix/effective_tld_names.dat

*** Test Cases ***
DKIM PERMFAIL NXDOMAIN
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim2.eml
... -i 37.48.67.26
Check Rspamc ${result} R_DKIM_PERMFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim2.eml
... IP=37.48.67.26
Expect Symbol R_DKIM_PERMFAIL

DKIM PERMFAIL BAD RECORD
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 37.48.67.26
Check Rspamc ${result} R_DKIM_PERMFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=37.48.67.26
Expect Symbol R_DKIM_PERMFAIL

DKIM TEMPFAIL SERVFAIL UNALIGNED
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim3.eml
... -i 37.48.67.26
Check Rspamc ${result} R_DKIM_TEMPFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim3.eml
... IP=37.48.67.26
Expect Symbol R_DKIM_TEMPFAIL

DKIM NA NOSIG
${result} = Scan Message With Rspamc ${TESTDIR}/messages/utf.eml
... -i 37.48.67.26
Check Rspamc ${result} R_DKIM_NA
Scan File ${TESTDIR}/messages/utf.eml
... IP=37.48.67.26
Expect Symbol R_DKIM_NA

DKIM Sign
Set Suite Variable ${RAN_SIGNTEST} 0
@@ -41,16 +41,16 @@ DKIM Sign

DKIM Self Verify
Run Keyword If ${RAN_SIGNTEST} == 0 Fail "Sign test was not run"
${result} = Scan Message With Rspamc ${SIGNED_MESSAGE}
Check Rspamc ${result} R_DKIM_ALLOW
Scan File ${SIGNED_MESSAGE}
Expect Symbol R_DKIM_ALLOW

DKIM Verify ED25519 PASS
${result} = Scan Message With Rspamc ${TESTDIR}/messages/ed25519.eml
Check Rspamc ${result} R_DKIM_ALLOW
Scan File ${TESTDIR}/messages/ed25519.eml
Expect Symbol R_DKIM_ALLOW

DKIM Verify ED25519 REJECT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/ed25519-broken.eml
Check Rspamc ${result} R_DKIM_REJECT
Scan File ${TESTDIR}/messages/ed25519-broken.eml
Expect Symbol R_DKIM_REJECT

*** Keywords ***
DKIM Setup

+ 81
- 81
test/functional/cases/117_spf.robot View File

@@ -12,129 +12,129 @@ ${URL_TLD} ${TESTDIR}/../../contrib/publicsuffix/effective_tld_names.dat

*** Test Cases ***
SPF FAIL UNRESOLVEABLE INCLUDE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 37.48.67.26 -F x@fail3.org.org.za
Check Rspamc ${result} R_SPF_FAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=37.48.67.26 From=x@fail3.org.org.za
Expect Symbol R_SPF_FAIL

SPF DNSFAIL FAILED INCLUDE UNALIGNED
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail2.org.org.za
Check Rspamc ${result} R_SPF_DNSFAIL
Should Contain ${result.stdout} DMARC_POLICY_SOFTFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail2.org.org.za
Expect Symbol R_SPF_DNSFAIL
Expect Symbol DMARC_POLICY_SOFTFAIL

SPF ALLOW UNRESOLVEABLE INCLUDE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail3.org.org.za
Check Rspamc ${result} R_SPF_ALLOW
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail3.org.org.za
Expect Symbol R_SPF_ALLOW

SPF ALLOW FAILED INCLUDE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.4.4 -F x@fail2.org.org.za
Check Rspamc ${result} R_SPF_ALLOW
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.4.4 From=x@fail2.org.org.za
Expect Symbol R_SPF_ALLOW

SPF NA NA
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@za
Check Rspamc ${result} R_SPF_NA
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@za
Expect Symbol R_SPF_NA

SPF NA NOREC
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@co.za
Check Rspamc ${result} R_SPF_NA
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@co.za
Expect Symbol R_SPF_NA

SPF NA NXDOMAIN
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@zzzzaaaa
Check Rspamc ${result} R_SPF_NA
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@zzzzaaaa
Expect Symbol R_SPF_NA

SPF PERMFAIL UNRESOLVEABLE REDIRECT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail4.org.org.za
Check Rspamc ${result} R_SPF_PERMFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail4.org.org.za
Expect Symbol R_SPF_PERMFAIL

SPF REDIRECT NO USEABLE ELEMENTS
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail10.org.org.za
Check Rspamc ${result} R_SPF_PERMFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail10.org.org.za
Expect Symbol R_SPF_PERMFAIL

SPF DNSFAIL FAILED REDIRECT
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail1.org.org.za
Check Rspamc ${result} R_SPF_DNSFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail1.org.org.za
Expect Symbol R_SPF_DNSFAIL

SPF PERMFAIL NO USEABLE ELEMENTS
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail5.org.org.za
Check Rspamc ${result} R_SPF_PERMFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail5.org.org.za
Expect Symbol R_SPF_PERMFAIL

SPF FAIL
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@example.net
Check Rspamc ${result} R_SPF_FAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@example.net
Expect Symbol R_SPF_FAIL

SPF FAIL UNRESOLVEABLE MX
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 1.2.3.4 -F x@fail6.org.org.za
Check Rspamc ${result} R_SPF_FAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=1.2.3.4 From=x@fail6.org.org.za
Expect Symbol R_SPF_FAIL

SPF FAIL UNRESOLVEABLE A
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 1.2.3.4 -F x@fail7.org.org.za
Check Rspamc ${result} R_SPF_FAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=1.2.3.4 From=x@fail7.org.org.za
Expect Symbol R_SPF_FAIL

SPF DNSFAIL FAILED A
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 1.2.3.4 -F x@fail8.org.org.za
Check Rspamc ${result} R_SPF_DNSFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=1.2.3.4 From=x@fail8.org.org.za
Expect Symbol R_SPF_DNSFAIL

SPF DNSFAIL FAILED MX
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 1.2.3.4 -F x@fail9.org.org.za
Check Rspamc ${result} R_SPF_DNSFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=1.2.3.4 From=x@fail9.org.org.za
Expect Symbol R_SPF_DNSFAIL

SPF DNSFAIL FAILED RECORD
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 1.2.3.4 -F x@www.dnssec-failed.org
Check Rspamc ${result} R_SPF_DNSFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=1.2.3.4 From=x@www.dnssec-failed.org
Expect Symbol R_SPF_DNSFAIL

SPF PASS INCLUDE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@pass1.org.org.za
Check Rspamc ${result} R_SPF_ALLOW
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@pass1.org.org.za
Expect Symbol R_SPF_ALLOW

SPF PTRS
${result} = Scan Message With Rspamc /dev/null
... -i 88.99.142.95 -F foo@crazyspf.cacophony.za.org
Check Rspamc ${result} R_SPF_ALLOW
${result} = Scan Message With Rspamc /dev/null
... -i 128.66.0.1 -F foo@crazyspf.cacophony.za.org
Check Rspamc ${result} R_SPF_FAIL
${result} = Scan Message With Rspamc /dev/null
... -i 209.85.216.182 -F foo@crazyspf.cacophony.za.org
Check Rspamc ${result} R_SPF_FAIL
#${result} = Scan Message With Rspamc /dev/null
#... -i 98.138.91.166 -F foo@crazyspf.cacophony.za.org
#Check Rspamc ${result} R_SPF_ALLOW
#${result} = Scan Message With Rspamc /dev/null
#... -i 98.138.91.167 -F foo@crazyspf.cacophony.za.org
#Check Rspamc ${result} R_SPF_ALLOW
#${result} = Scan Message With Rspamc /dev/null
#... -i 98.138.91.168 -F foo@crazyspf.cacophony.za.org
#Check Rspamc ${result} R_SPF_ALLOW
Scan File /dev/null
... IP=88.99.142.95 From=foo@crazyspf.cacophony.za.org
Expect Symbol R_SPF_ALLOW
Scan File /dev/null
... IP=128.66.0.1 From=foo@crazyspf.cacophony.za.org
Expect Symbol R_SPF_FAIL
Scan File /dev/null
... IP=209.85.216.182 From=foo@crazyspf.cacophony.za.org
Expect Symbol R_SPF_FAIL
#Scan File /dev/null
#... IP=98.138.91.166 From=foo@crazyspf.cacophony.za.org
#Expect Symbol R_SPF_ALLOW
#Scan File /dev/null
#... IP=98.138.91.167 From=foo@crazyspf.cacophony.za.org
#Expect Symbol R_SPF_ALLOW
#Scan File /dev/null
#... IP=98.138.91.168 From=foo@crazyspf.cacophony.za.org
#Expect Symbol R_SPF_ALLOW

SPF PERMFAIL REDIRECT WITHOUT SPF
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim4.eml
... -i 192.0.2.1 -F a@fail1.org.org.za
Check Rspamc ${result} R_SPF_DNSFAIL
Scan File ${TESTDIR}/messages/dmarc/bad_dkim4.eml
... IP=192.0.2.1 From=a@fail1.org.org.za
Expect Symbol R_SPF_DNSFAIL

SPF EXTERNAL RELAY
${result} = Scan Message With Rspamc ${TESTDIR}/messages/external_relay.eml
Should contain ${result.stdout} R_SPF_ALLOW (1.00)[+ip4:37.48.67.26]
Scan File ${TESTDIR}/messages/external_relay.eml
Expect Symbol With Score And Exact Options R_SPF_ALLOW 1.0 +ip4:37.48.67.26

SPF UPPERCASE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... -i 8.8.8.8 -F x@fail11.org.org.za
Check Rspamc ${result} R_SPF_ALLOW
Scan File ${TESTDIR}/messages/dmarc/bad_dkim1.eml
... IP=8.8.8.8 From=x@fail11.org.org.za
Expect Symbol R_SPF_ALLOW

*** Keywords ***
SPF Setup

+ 15
- 17
test/functional/cases/120_fuzzy/lib.robot View File

@@ -27,13 +27,13 @@ Fuzzy Skip Add Test Base
... ${FLAG1_NUMBER} fuzzy_add ${message}
Check Rspamc ${result}
Sync Fuzzy Storage
${result} = Scan Message With Rspamc ${message}
Scan File ${message}
Create File ${TMPDIR}/test.map
Should Contain ${result.stdout} R_TEST_FUZZY_DENIED
Expect Symbol R_TEST_FUZZY_DENIED
Append To File ${TMPDIR}/skip_hash.map.tmp 670cfcba72a87bab689958a8af5c22593dc17c907836c7c26a74d1bb49add25adfa45a5f172e3af82c9c638e8eb5fc860c22c7e966e61a459165ef0b9e1acc89
Hard Link ${TMPDIR}/skip_hash.map.tmp ${TMPDIR}/skip_hash.map
${result} = Scan Message With Rspamc ${message}
Check Rspamc ${result} R_TEST_FUZZY_DENIED inverse=1
Scan File ${message}
Do Not Expect Symbol R_TEST_FUZZY_DENIED

Fuzzy Add Test
[Arguments] ${message}
@@ -42,8 +42,8 @@ Fuzzy Add Test
... ${FLAG1_NUMBER} fuzzy_add ${message}
Check Rspamc ${result}
Sync Fuzzy Storage
${result} = Scan Message With Rspamc ${message}
Check Rspamc ${result} ${FLAG1_SYMBOL}
Scan File ${message}
Expect Symbol ${FLAG1_SYMBOL}
Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 1

Fuzzy Delete Test
@@ -53,9 +53,8 @@ Fuzzy Delete Test
... ${message}
Check Rspamc ${result}
Sync Fuzzy Storage
${result} = Scan Message With Rspamc ${message}
Should Not Contain ${result.stdout} ${FLAG1_SYMBOL}
Should Be Equal As Integers ${result.rc} 0
Scan File ${message}
Do Not Expect Symbol ${FLAG1_SYMBOL}

Fuzzy Fuzzy Test
[Arguments] ${message}
@@ -63,14 +62,14 @@ Fuzzy Fuzzy Test
@{path_info} = Path Splitter ${message}
@{fuzzy_files} = List Files In Directory ${pathinfo}[0] pattern=${pathinfo}[1].fuzzy* absolute=1
FOR ${i} IN @{fuzzy_files}
${result} = Scan Message With Rspamc ${i}
Check Rspamc ${result} ${FLAG1_SYMBOL}
Scan File ${i}
Expect Symbol ${FLAG1_SYMBOL}
END

Fuzzy Miss Test
[Arguments] ${message}
${result} = Scan Message With Rspamc ${message}
Check Rspamc ${result} ${FLAG1_SYMBOL} inverse=1
Scan File ${message}
Do Not Expect Symbol ${FLAG1_SYMBOL}

Fuzzy Overwrite Test
[Arguments] ${message}
@@ -81,10 +80,9 @@ Fuzzy Overwrite Test
Check Rspamc ${result}
END
Sync Fuzzy Storage
${result} = Scan Message With Rspamc ${message}
Should Not Contain ${result.stdout} ${FLAG1_SYMBOL}
Should Contain ${result.stdout} ${FLAG2_SYMBOL}
Should Be Equal As Integers ${result.rc} 0
Scan File ${message}
Do Not Expect Symbol ${FLAG1_SYMBOL}
Expect Symbol ${FLAG2_SYMBOL}

Fuzzy Setup Encrypted
[Arguments] ${algorithm}

+ 48
- 54
test/functional/cases/123_whitelist.robot View File

@@ -20,68 +20,62 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
WHITELISTS
${result} = Scan Message With Rspamc ${M_DMARC_OK} -i 8.8.4.4 -F foo@spf.cacophony.za.org
Check Rspamc ${result} WHITELIST_DKIM (-
Should Contain ${result.stdout} STRICT_DMARC (-
Should Contain ${result.stdout} WHITELIST_SPF_DKIM (-
Should Contain ${result.stdout} WHITELIST_DDS (-
Should Contain ${result.stdout} WHITELIST_DMARC (-
Should Contain ${result.stdout} WHITELIST_DMARC_DKIM (-
Should Contain ${result.stdout} WHITELIST_SPF (-
Should Not Contain ${result.stdout} BLACKLIST_SPF (
Should Not Contain ${result.stdout} BLACKLIST_DKIM (
Should Not Contain ${result.stdout} BLACKLIST_DMARC (
Scan File ${M_DMARC_OK} IP=8.8.4.4 From=foo@spf.cacophony.za.org
Expect Symbol With Score WHITELIST_DKIM -1
Expect Symbol With Score STRICT_DMARC -3
Expect Symbol With Score WHITELIST_SPF_DKIM -3
Expect Symbol With Score WHITELIST_DDS -3
Expect Symbol With Score WHITELIST_DMARC -2
Expect Symbol With Score WHITELIST_DMARC_DKIM -2
Expect Symbol With Score WHITELIST_SPF -1
Do Not Expect Symbol BLACKLIST_SPF
Do Not Expect Symbol BLACKLIST_DKIM
Do Not Expect Symbol BLACKLIST_DMARC

BLACKLIST SHOULD FIRE IF ANY CONSTRAINT FAILED
${result} = Scan Message With Rspamc ${M_DMARC_OK} -i 9.8.4.4 -F foo@spf.cacophony.za.org
Check Rspamc ${result} BLACKLIST_DDS (3
Should Not Contain ${result.stdout} WHITELIST_DDS (
Should Not Contain ${result.stdout} WHITELIST_SPF (
Scan File ${M_DMARC_OK} IP=9.8.4.4 From=foo@spf.cacophony.za.org
Expect Symbol With Score BLACKLIST_DDS 3
Do Not Expect Symbol WHITELIST_DDS
Do Not Expect Symbol WHITELIST_SPF

BLACKLISTS
${result} = Scan Message With Rspamc ${M_DMARC_BAD} -i 9.8.4.4 -F foo@cacophony.za.org
Check Rspamc ${result} BLACKLIST_SPF (3
Should Contain ${result.stdout} BLACKLIST_SPF (3
Should Contain ${result.stdout} STRICT_DMARC (3
Should Contain ${result.stdout} BLACKLIST_DDS (3
Should Contain ${result.stdout} BLACKLIST_DMARC (2
Should Not Contain ${result.stdout} WHITELIST_DDS (
Should Not Contain ${result.stdout} WHITELIST_SPF (
Should Not Contain ${result.stdout} WHITELIST_DKIM (
Should Not Contain ${result.stdout} WHITELIST_DMARC (
Should Not Contain ${result.stdout} WHITELIST_DMARC_DKIM (
Scan File ${M_DMARC_BAD} IP=9.8.4.4 From=foo@cacophony.za.org
Expect Symbol With Score BLACKLIST_SPF 3
Expect Symbol With Score BLACKLIST_SPF 3
Expect Symbol With Score STRICT_DMARC 3
Expect Symbol With Score BLACKLIST_DDS 3
Expect Symbol With Score BLACKLIST_DMARC 2
Do Not Expect Symbol WHITELIST_DDS
Do Not Expect Symbol WHITELIST_SPF
Do Not Expect Symbol WHITELIST_DKIM
Do Not Expect Symbol WHITELIST_DMARC
Do Not Expect Symbol WHITELIST_DMARC_DKIM

WHITELIST_WL_ONLY
${result} = Scan Message With Rspamc ${M_DKIM_RSPAMD_OK}
Check Rspamc ${result} WHITELIST_DKIM (-2
Should Not Contain ${result.stdout} BLACKLIST_DKIM (
WHITELIST_WL_ONLY - VALID SPF AND VALID DKIM
Scan File ${M_DKIM_RSPAMD_OK}
Expect Symbol With Score WHITELIST_DKIM -2
Do Not Expect Symbol BLACKLIST_DKIM
Expect Symbol With Score R_SPF_ALLOW 1
Expect Symbol With Score R_DKIM_ALLOW 1
Expect Symbol With Score WHITELIST_SPF_DKIM -6

BLACKLISTS_WL_ONLY
${result} = Scan Message With Rspamc ${M_DKIM_RSPAMD_BAD}
Check Rspamc ${result} DKIM_REJECT (
Should Not Contain ${result.stdout} WHITELIST_DKIM (
Should Not Contain ${result.stdout} BLACKLIST_DKIM (

VALID SPF and VALID DKIM
${result} = Scan Message With Rspamc ${M_DKIM_RSPAMD_OK}
Should Contain ${result.stdout} R_SPF_ALLOW (
Should Contain ${result.stdout} R_DKIM_ALLOW (
Should Contain ${result.stdout} WHITELIST_SPF_DKIM (

VALID SPF and NOT VALID DKIM
${result} = Scan Message With Rspamc ${M_DKIM_RSPAMD_BAD}
Should Contain ${result.stdout} R_SPF_ALLOW (
Should Contain ${result.stdout} R_DKIM_REJECT (
Should Not Contain ${result.stdout} WHITELIST_SPF_DKIM (
Should Not Contain ${result.stdout} R_DKIM_ALLOW (
BLACKLISTS_WL_ONLY - VALID SPF AND INVALID DKIM
Scan File ${M_DKIM_RSPAMD_BAD}
Expect Symbol With Score R_DKIM_REJECT 1
Do Not Expect Symbol WHITELIST_DKIM
Do Not Expect Symbol BLACKLIST_DKIM
Expect Symbol With Score R_SPF_ALLOW 1
Expect Symbol With Score R_DKIM_REJECT 1
Do Not Expect Symbol WHITELIST_SPF_DKIM
Do Not Expect Symbol R_DKIM_ALLOW

VALID SPF and NO DKIM
${result} = Scan Message With Rspamc ${M_NO_DKIM_VALID_SPF}
Should Contain ${result.stdout} R_SPF_ALLOW (
Should Contain ${result.stdout} R_DKIM_NA (
Should Not Contain ${result.stdout} R_DKIM_REJECT (
Should Not Contain ${result.stdout} WHITELIST_SPF_DKIM (
Should Not Contain ${result.stdout} R_DKIM_ALLOW (
Scan File ${M_NO_DKIM_VALID_SPF}
Expect Symbol With Score R_SPF_ALLOW 1
Expect Symbol With Score R_DKIM_NA 1
Do Not Expect Symbol R_DKIM_REJECT
Do Not Expect Symbol WHITELIST_SPF_DKIM
Do Not Expect Symbol R_DKIM_ALLOW

*** Keywords ***
Whitelist Setup

+ 4
- 4
test/functional/cases/125_map_reload.robot View File

@@ -14,8 +14,8 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
CHECK HIT AND MISS
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} MAP_SET_HIT_AND_MISS (1.00)[example.com]
Scan File ${MESSAGE}
Expect Symbol With Score And Exact Options MAP_SET_HIT_AND_MISS 1 example.com

WRITE NEW MAP
${TMP_FILE} = Make Temporary File
@@ -24,8 +24,8 @@ WRITE NEW MAP

CHECK HIT AND MISS AFTER RELOAD
Sleep 1s Wait for map reload
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} MAP_SET_HIT_AND_MISS (1.00)[rspamd.com]
Scan File ${MESSAGE}
Expect Symbol With Score And Exact Options MAP_SET_HIT_AND_MISS 1 rspamd.com

*** Keywords ***
Map Reload Setup

+ 21
- 45
test/functional/cases/135_spamassassin.robot View File

@@ -11,51 +11,27 @@ ${RSPAMD_SCOPE} Suite
${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
Freemail Scan
${FREEMAIL_RESULT} = Scan Message With Rspamc ${TESTDIR}/messages/freemail.eml
... --from faked.asdfjisiwosp372@outlook.com
Set Suite Variable ${FREEMAIL_RESULT} ${FREEMAIL_RESULT}
Check Rspamc ${FREEMAIL_RESULT} ${EMPTY}

Freemail From
Should Contain ${FREEMAIL_RESULT.stdout} FREEMAIL_FROM

Freemail From Enddigit
Should Contain ${FREEMAIL_RESULT.stdout} FREEMAIL_ENVFROM_END_DIGIT

Freemail Subject
Should Contain ${FREEMAIL_RESULT.stdout} FREEMAIL_SUBJECT

Metas
Should Contain ${FREEMAIL_RESULT.stdout} TEST_META4

WLBL From Whitelist
${BAD_MESSAGE_RESULT} = Scan Message With Rspamc ${TESTDIR}/messages/bad_message.eml
Set Suite Variable ${BAD_MESSAGE_RESULT} ${BAD_MESSAGE_RESULT}
Check Rspamc ${BAD_MESSAGE_RESULT} USER_IN_WHITELIST (

WLBL To Whitelist
Should Contain ${BAD_MESSAGE_RESULT.stdout} USER_IN_WHITELIST_TO

WLBL To Blacklist Miss
Should Not Contain ${BAD_MESSAGE_RESULT.stdout} USER_IN_BLACKLIST_TO

WLBL From Blacklist Miss
Should Not Contain ${BAD_MESSAGE_RESULT.stdout} USER_IN_BLACKLIST (

WLBL From Blacklist
${UTF_RESULT} = Scan Message With Rspamc ${TESTDIR}/messages/utf.eml
Set Suite Variable ${UTF_RESULT} ${UTF_RESULT}
Check Rspamc ${UTF_RESULT} USER_IN_BLACKLIST (

WLBL To Blacklist
Should Contain ${UTF_RESULT.stdout} USER_IN_BLACKLIST_TO

WLBL To Whitelist Miss
Should Not Contain ${UTF_RESULT.stdout} USER_IN_WHITELIST_TO

WLBL From Whitelist Miss
Should Not Contain ${UTF_RESULT.stdout} USER_IN_WHITELIST (
FREEMAIL
Scan File ${TESTDIR}/messages/freemail.eml
... From=faked.asdfjisiwosp372@outlook.com
Expect Symbol FREEMAIL_FROM
Expect Symbol FREEMAIL_ENVFROM_END_DIGIT
Expect Symbol FREEMAIL_SUBJECT
Expect Symbol TEST_META4

WLBL WHITELIST
Scan File ${TESTDIR}/messages/bad_message.eml
Expect Symbol USER_IN_WHITELIST
Expect Symbol USER_IN_WHITELIST_TO
Do Not Expect Symbol USER_IN_BLACKLIST_TO
Do Not Expect Symbol USER_IN_BLACKLIST

WLBL BLACKLIST
Scan File ${TESTDIR}/messages/utf.eml
Expect Symbol USER_IN_BLACKLIST
Expect Symbol USER_IN_BLACKLIST_TO
Do Not Expect Symbol USER_IN_WHITELIST_TO
Do Not Expect Symbol USER_IN_WHITELIST

*** Keywords ***
SpamAssassin Setup

+ 4
- 5
test/functional/cases/140_proxy.robot View File

@@ -11,11 +11,10 @@ ${MESSAGE} ${TESTDIR}/messages/spam_message.eml
${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
Rspamc Client
${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_PROXY} -p ${MESSAGE}
Run Keyword If ${result.rc} != 0 Log ${result.stderr}
Should Contain ${result.stdout} SIMPLE_TEST
Should Be Equal As Integers ${result.rc} 0
HTTP PROTOCOL
Set Test Variable ${PORT_NORMAL} ${PORT_PROXY}
Scan File ${MESSAGE}
Expect Symbol SIMPLE_TEST

SPAMC
${result} = Spamc ${LOCAL_ADDR} ${PORT_PROXY} ${MESSAGE}

+ 38
- 38
test/functional/cases/160_antivirus.robot View File

@@ -17,81 +17,81 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat
*** Test Cases ***
CLAMAV MISS
Run Dummy Clam ${PORT_CLAM}
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} CLAM_VIRUS inverse=1
Scan File ${MESSAGE}
Do Not Expect Symbol CLAM_VIRUS
Shutdown clamav

CLAMAV HIT
Run Dummy Clam ${PORT_CLAM} 1
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} CLAM_VIRUS
Should Not Contain ${result.stdout} CLAMAV_VIRUS_FAIL
Scan File ${MESSAGE2}
Expect Symbol CLAM_VIRUS
Do Not Expect Symbol CLAMAV_VIRUS_FAIL
Shutdown clamav

CLAMAV CACHE HIT
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} CLAM_VIRUS
Should Not Contain ${result.stdout} CLAMAV_VIRUS_FAIL
Scan File ${MESSAGE2}
Expect Symbol CLAM_VIRUS
Do Not Expect Symbol CLAMAV_VIRUS_FAIL

CLAMAV CACHE MISS
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} CLAM_VIRUS inverse=1
Should Not Contain ${result.stdout} CLAMAV_VIRUS_FAIL
Scan File ${MESSAGE}
Do Not Expect Symbol CLAM_VIRUS
Do Not Expect Symbol CLAMAV_VIRUS_FAIL

FPROT MISS
Run Dummy Fprot ${PORT_FPROT}
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} FPROT_VIRUS inverse=1
Should Not Contain ${result.stdout} FPROT_EICAR
Scan File ${MESSAGE2}
Do Not Expect Symbol FPROT_VIRUS
Do Not Expect Symbol FPROT_EICAR
Shutdown fport

FPROT HIT - PATTERN
Run Dummy Fprot ${PORT_FPROT} 1
Run Dummy Fprot ${PORT_FPROT2_DUPLICATE} 1 /tmp/dummy_fprot_dupe.pid
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} FPROT_EICAR
Should Not Contain ${result.stdout} CLAMAV_VIRUS
Scan File ${MESSAGE}
Expect Symbol FPROT_EICAR
Do Not Expect Symbol CLAMAV_VIRUS
# Also check ordered pattern match
Should Contain ${result.stdout} FPROT2_VIRUS_DUPLICATE_PATTERN
Should Not Contain ${result.stdout} FPROT2_VIRUS_DUPLICATE_DEFAULT
Should Not Contain ${result.stdout} FPROT2_VIRUS_DUPLICATE_NOPE
Expect Symbol FPROT2_VIRUS_DUPLICATE_PATTERN
Do Not Expect Symbol FPROT2_VIRUS_DUPLICATE_DEFAULT
Do Not Expect Symbol FPROT2_VIRUS_DUPLICATE_NOPE
Shutdown fport
Shutdown fport duplicate

FPROT CACHE HIT
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} FPROT_EICAR
Should Not Contain ${result.stdout} CLAMAV_VIRUS
Scan File ${MESSAGE}
Expect Symbol FPROT_EICAR
Do Not Expect Symbol CLAMAV_VIRUS
# Also check ordered pattern match
Should Contain ${result.stdout} FPROT2_VIRUS_DUPLICATE_PATTERN
Should Not Contain ${result.stdout} FPROT2_VIRUS_DUPLICATE_DEFAULT
Expect Symbol FPROT2_VIRUS_DUPLICATE_PATTERN
Do Not Expect Symbol FPROT2_VIRUS_DUPLICATE_DEFAULT

FPROT CACHE MISS
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} FPROT_VIRUS inverse=1
Scan File ${MESSAGE2}
Do Not Expect Symbol FPROT_VIRUS

AVAST MISS
Run Dummy Avast ${PORT_AVAST}
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} AVAST_VIRUS inverse=1
Scan File ${MESSAGE}
Do Not Expect Symbol AVAST_VIRUS
Shutdown avast

AVAST HIT
Run Dummy Avast ${PORT_AVAST} 1
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} AVAST_VIRUS
Should Not Contain ${result.stdout} AVAST_VIRUS_FAIL
Scan File ${MESSAGE2}
Expect Symbol AVAST_VIRUS
Do Not Expect Symbol AVAST_VIRUS_FAIL
Shutdown avast

AVAST CACHE HIT
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} AVAST_VIRUS
Should Not Contain ${result.stdout} AVAST_VIRUS_FAIL
Scan File ${MESSAGE2}
Expect Symbol AVAST_VIRUS
Do Not Expect Symbol AVAST_VIRUS_FAIL

AVAST CACHE MISS
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} AVAST_VIRUS inverse=1
Should Not Contain ${result.stdout} AVAST_VIRUS_FAIL
Scan File ${MESSAGE}
Do Not Expect Symbol AVAST_VIRUS
Do Not Expect Symbol AVAST_VIRUS_FAIL

*** Keywords ***
Antivirus Setup

+ 30
- 39
test/functional/cases/161_p0f.robot View File

@@ -17,74 +17,65 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat
*** Test Cases ***
p0f MISS
Run Dummy p0f
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.1
Check Rspamc ${result} P0F
Check Rspamc ${result} Linux 3.11 and newer
Check Rspamc ${result} Ethernet or modem
Check Rspamc ${result} WINDOWS inverse=1
Check Rspamc ${result} P0F_FAIL inverse=1
Scan File ${MESSAGE} IP=1.1.1.1
Do Not Expect Symbol P0F_FAIL
Do Not Expect Symbol WINDOWS
Expect Symbol With Exact Options P0F Linux 3.11 and newer link=Ethernet or modem distance=10
Shutdown p0f

p0f HIT
Run Dummy p0f ${P0F_SOCKET} windows
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.2
Check Rspamc ${result} P0F
Check Rspamc ${result} P0F_FAIL inverse=1
Check Rspamc ${result} Ethernet or modem
Check Rspamc ${result} WINDOWS
Check Rspamc ${result} Linux 3.11 and newer inverse=1
Scan File ${MESSAGE} IP=1.1.1.2
Do Not Expect Symbol P0F_FAIL
Expect Symbol With Exact Options P0F link=Ethernet or modem distance=10
Expect Symbol WINDOWS
Shutdown p0f

p0f MISS CACHE
Run Dummy p0f
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.3
Check Rspamc ${result} WINDOWS inverse=1
Scan File ${MESSAGE} IP=1.1.1.3
Do Not Expect Symbol WINDOWS
Shutdown p0f
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.3
Check Rspamc ${result} WINDOWS inverse=1
Check Rspamc ${result} P0F_FAIL inverse=1
Scan File ${MESSAGE} IP=1.1.1.3
Do Not Expect Symbol WINDOWS
Do Not Expect Symbol P0F_FAIL

p0f HIT CACHE
Run Dummy p0f ${P0F_SOCKET} windows
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.4
Check Rspamc ${result} WINDOWS
Scan File ${MESSAGE} IP=1.1.1.4
Expect Symbol WINDOWS
Shutdown p0f
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.4
Check Rspamc ${result} WINDOWS
Check Rspamc ${result} P0F_FAIL inverse=1
Scan File ${MESSAGE} IP=1.1.1.4
Expect Symbol WINDOWS
Do Not Expect Symbol P0F_FAIL

p0f NO REDIS
Shutdown Process With Children ${REDIS_PID}
Run Dummy p0f
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.5
Check Rspamc ${result} P0F
Check Rspamc ${result} Linux 3.11 and newer
Check Rspamc ${result} Ethernet or modem
Check Rspamc ${result} P0F_FAIL inverse=1
Should Contain ${result.stdout} distance=10
Scan File ${MESSAGE} IP=1.1.1.5
Expect Symbol With Exact Options P0F Linux 3.11 and newer link=Ethernet or modem distance=10
Do Not Expect Symbol P0F_FAIL
Shutdown p0f

p0f NO MATCH
Run Dummy p0f ${P0F_SOCKET} windows no_match
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.6
Check Rspamc ${result} P0F inverse=1
Check Rspamc ${result} WINDOWS inverse=1
Scan File ${MESSAGE} IP=1.1.1.6
Do Not Expect Symbol P0F
Do Not Expect Symbol WINDOWS
Shutdown p0f

p0f BAD QUERY
Run Dummy p0f ${P0F_SOCKET} windows bad_query
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.7
Check Rspamc ${result} P0F_FAIL
Check Rspamc ${result} Malformed Query
Check Rspamc ${result} WINDOWS inverse=1
Scan File ${MESSAGE} IP=1.1.1.7
Expect Symbol With Exact Options P0F_FAIL Malformed Query: /tmp/p0f.sock
Do Not Expect Symbol WINDOWS
Shutdown p0f

p0f BAD RESPONSE
Run Dummy p0f ${P0F_SOCKET} windows bad_response
${result} = Scan Message With Rspamc ${MESSAGE} --ip 1.1.1.8
Check Rspamc ${result} P0F_FAIL
Check Rspamc ${result} Error getting result: IO read error: connection terminated
Check Rspamc ${result} WINDOWS inverse=1
Scan File ${MESSAGE} IP=1.1.1.8
Expect Symbol With Exact Options P0F_FAIL Error getting result: IO read error: connection terminated
Do Not Expect Symbol WINDOWS
Shutdown p0f

*** Keywords ***

+ 2
- 2
test/functional/cases/220_http.robot View File

@@ -36,8 +36,8 @@ HTTP empty response
Check url /empty post HTTP_DNS_ERROR HTTP_ERROR HTTP_CORO_DNS_ERROR HTTP_CORO_ERROR method_post IO read error: unexpected EOF

SSL Large HTTP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} HTTP_SSL_LARGE
Scan File ${MESSAGE}
Expect Symbol HTTP_SSL_LARGE

*** Keywords ***
Lua Setup

+ 20
- 23
test/functional/cases/230_tcp.robot View File

@@ -15,34 +15,33 @@ ${RSPAMD_SCOPE} Suite

*** Test Cases ***
Simple TCP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} HTTP_ASYNC_RESPONSE
Check Rspamc ${result} HTTP_ASYNC_RESPONSE_2
Scan File ${MESSAGE}
Expect Symbol HTTP_ASYNC_RESPONSE
Expect Symbol HTTP_ASYNC_RESPONSE_2

SSL TCP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} TCP_SSL_RESPONSE (0.00)[hello]
Check Rspamc ${result} TCP_SSL_RESPONSE_2 (0.00)[hello]
Scan File ${MESSAGE}
Expect Symbol With Exact Options TCP_SSL_RESPONSE hello
Expect Symbol With Exact Options TCP_SSL_RESPONSE_2 hello

SSL Large TCP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} TCP_SSL_LARGE (0.00)
Check Rspamc ${result} TCP_SSL_LARGE_2 (0.00)
Scan File ${MESSAGE}
Expect Symbol TCP_SSL_LARGE
Expect Symbol TCP_SSL_LARGE_2

Sync API TCP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} HTTP_SYNC_RESPONSE
Check Rspamc ${result} HTTP_SYNC_RESPONSE_2
Check Rspamc ${result} hello world
Check Rspamc ${result} hello post
Scan File ${MESSAGE}
Expect Symbol HTTP_SYNC_RESPONSE
Should Contain ${SCAN_RESULT}[symbols][HTTP_SYNC_RESPONSE][options][0] hello world
Should Contain ${SCAN_RESULT}[symbols][HTTP_SYNC_RESPONSE_2][options][0] hello post

Sync API TCP get request
Check url /request get HTTP_SYNC_EOF_get (0.00)[hello world]
Check url /content-length get HTTP_SYNC_CONTENT_get (0.00)[hello world]
Check url /request get HTTP_SYNC_EOF_get hello world
Check url /content-length get HTTP_SYNC_CONTENT_get hello world

Sync API TCP post request
Check url /request post HTTP_SYNC_EOF_post (0.00)[hello post]
Check url /content-length post HTTP_SYNC_CONTENT_post (0.00)[hello post]
Check url /request post HTTP_SYNC_EOF_post hello post
Check url /content-length post HTTP_SYNC_CONTENT_post hello post

*** Keywords ***
Lua Setup
@@ -73,8 +72,6 @@ Run Dummy Ssl
Wait Until Created /tmp/dummy_ssl.pid timeout=2 second

Check url
[Arguments] ${url} ${method} @{expect_results}
${result} = Scan Message With Rspamc --header=url:${url} --header=method:${method} ${MESSAGE}
FOR ${expect} IN @{expect_results}
Check Rspamc ${result} ${expect}
END
[Arguments] ${url} ${method} ${expect_symbol} @{expect_options}
Scan File ${MESSAGE} URL=${url} Method=${method}
Expect Symbol With Exact Options ${expect_symbol} @{expect_options}

+ 4
- 4
test/functional/cases/240_redis.robot View File

@@ -19,10 +19,10 @@ ${MESSAGE} ${TESTDIR}/messages/spam_message.eml
*** Test Cases ***
Redis client
Redis SET test_key test value
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} REDIS (0.00)[hello from lua on redis]
Check Rspamc ${result} REDIS_ASYNC (0.00)[test value]
Check Rspamc ${result} REDIS_ASYNC201809 (0.00)[test value]
Scan File ${MESSAGE}
Expect Symbol With Exact Options REDIS hello from lua on redis
Expect Symbol With Exact Options REDIS_ASYNC test value
Expect Symbol With Exact Options REDIS_ASYNC201809 test value

*** Keywords ***
Lua Setup

+ 4
- 4
test/functional/cases/241_redis_is_dead.robot View File

@@ -20,10 +20,10 @@ ${MESSAGE} ${TESTDIR}/messages/spam_message.eml

*** Test Cases ***
Dead Redis client
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} REDIS_ERROR_3 (0.00)[Connection refused]
Check Rspamc ${result} REDIS_ASYNC201809_ERROR (0.00)[Connection refused]
Check Rspamc ${result} REDIS_ASYNC_ERROR (0.00)[Connection refused]
Scan File ${MESSAGE}
Expect Symbol With Exact Options REDIS_ERROR_3 Connection refused
Expect Symbol With Exact Options REDIS_ASYNC201809_ERROR Connection refused
Expect Symbol With Exact Options REDIS_ASYNC_ERROR Connection refused

*** Keywords ***
Lua Setup

+ 6
- 6
test/functional/cases/250_dns.robot View File

@@ -14,14 +14,14 @@ ${RSPAMD_SCOPE} Test

*** Test Cases ***
Simple DNS request
${result} = Scan Message With Rspamc --header=to-resolve:example.com ${MESSAGE}
Check Rspamc ${result} DNS_SYNC (0.00)[93.184.216.34]
Check Rspamc ${result} DNS (0.00)[93.184.216.34]
Scan File ${MESSAGE} To-Resolve=example.com
Expect Symbol With Exact Options DNS_SYNC 93.184.216.34
Expect Symbol With Exact Options DNS 93.184.216.34

Faulty DNS request
${result} = Scan Message With Rspamc --header=to-resolve:not-resolvable.com ${MESSAGE}
Check Rspamc ${result} DNS_SYNC_ERROR (0.00)[requested record is not found]
Check Rspamc ${result} DNS_ERROR (0.00)[requested record is not found]
Scan File ${MESSAGE} To-Resolve=not-resolvable.com
Expect Symbol With Exact Options DNS_SYNC_ERROR requested record is not found
Expect Symbol With Exact Options DNS_ERROR requested record is not found

*** Keywords ***
Lua Setup

+ 11
- 11
test/functional/cases/260_regex.robot View File

@@ -15,17 +15,17 @@ ${RSPAMD_SCOPE} Test

*** Test Cases ***
Newlines
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} SA_BODY_WORD
Check Rspamc ${result} SA_BODY_WORD_WITH_SPACE
Check Rspamc ${result} SA_BODY_WORD_WITH_NEWLINE inverse=true
Check Rspamc ${result} SA_BODY_WORD_WITH_SPACE_BOUNDARIES
Check Rspamc ${result} SA_BODY_WORD_WITH_SPACE_BOUNDARIES_2
Check Rspamc ${result} SA_BODY_WORD_WITH_SPACE_BOUNDARIES_3
Check Rspamc ${result} SA_BODY_WORD_WITH_SPACE_AND_DOT
Check Rspamc ${result} https://google.com/maps/
Check Rspamc ${result} https://www.google.com/search?q\=hello world&oq\=hello world&aqs\=chrome..69i57j0l5.3045j0j7&sourceid\=chrome&ie\=UTF-8
Check Rspamc ${result} https://github.com/google/sanitizers/wiki/AddressSanitizer
Scan File ${MESSAGE}
Expect Symbol SA_BODY_WORD
Expect Symbol SA_BODY_WORD_WITH_SPACE
Do Not Expect Symbol SA_BODY_WORD_WITH_NEWLINE
Expect Symbol SA_BODY_WORD_WITH_SPACE_BOUNDARIES
Expect Symbol SA_BODY_WORD_WITH_SPACE_BOUNDARIES_2
Expect Symbol SA_BODY_WORD_WITH_SPACE_BOUNDARIES_3
Expect Symbol SA_BODY_WORD_WITH_SPACE_AND_DOT
Expect Symbol With Option FOUND_URL https://google.com/maps/
Expect Symbol With Option FOUND_URL https://www.google.com/search?q\=hello world&oq\=hello world&aqs\=chrome..69i57j0l5.3045j0j7&sourceid\=chrome&ie\=UTF-8
Expect Symbol With Option FOUND_URL https://github.com/google/sanitizers/wiki/AddressSanitizer


*** Keywords ***

+ 3
- 3
test/functional/cases/270_selector.robot View File

@@ -15,9 +15,9 @@ ${RSPAMD_SCOPE} Test

*** Test Cases ***
Newlines
${result} = Scan Message With Rspamc ${MESSAGE} --user test@user.com
Check Rspamc ${result} CONFIG_SELECTOR_RE_RCPT_SUBJECT
Check Rspamc ${result} LUA_SELECTOR_RE
Scan File ${MESSAGE} User=test@user.com Pass=all
Expect Symbol CONFIG_SELECTOR_RE_RCPT_SUBJECT
Expect Symbol LUA_SELECTOR_RE


*** Keywords ***

+ 47
- 47
test/functional/cases/280_rules.robot View File

@@ -22,93 +22,93 @@ ${RSPAMD_SCOPE} Suite

*** Test Cases ***
Broken MIME
${result} = Scan Message With Rspamc ${MESSAGE3}
Check Rspamc ${result} MISSING_SUBJECT
Scan File ${MESSAGE3}
Expect Symbol MISSING_SUBJECT

Issue 2584
${result} = Scan Message With Rspamc ${MESSAGE1}
Check Rspamc ${result} BROKEN_CONTENT_TYPE inverse=1
Should Not Contain ${result.stdout} MISSING_SUBJECT
Should Not Contain ${result.stdout} R_MISSING_CHARSET
Scan File ${MESSAGE1}
Do Not Expect Symbol BROKEN_CONTENT_TYPE
Do Not Expect Symbol MISSING_SUBJECT
Do Not Expect Symbol R_MISSING_CHARSET

Issue 2349
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} MULTIPLE_UNIQUE_HEADERS inverse=1
Scan File ${MESSAGE2}
Do Not Expect Symbol MULTIPLE_UNIQUE_HEADERS

Broken Rich Text
${result} = Scan Message With Rspamc ${MESSAGE4}
Check Rspamc ${result} BROKEN_CONTENT_TYPE
Scan File ${MESSAGE4}
Expect Symbol BROKEN_CONTENT_TYPE

Dynamic Config
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} SA_BODY_WORD (10
Check Rspamc ${result} \/ 20
Scan File ${MESSAGE}
Expect Symbol With Score SA_BODY_WORD 10
Expect Required Score 20

Broken boundary
${result} = Scan Message With Rspamc ${MESSAGE4}
Check Rspamc ${result} BROKEN_CONTENT_TYPE
Scan File ${MESSAGE4}
Expect Symbol BROKEN_CONTENT_TYPE

PDF encrypted
${result} = Scan Message With Rspamc ${MESSAGE6}
Check Rspamc ${result} PDF_ENCRYPTED
Scan File ${MESSAGE6}
Expect Symbol PDF_ENCRYPTED

PDF javascript
${result} = Scan Message With Rspamc ${MESSAGE7}
Check Rspamc ${result} PDF_JAVASCRIPT
Scan File ${MESSAGE7}
Expect Symbol PDF_JAVASCRIPT

BITCOIN ADDR
${result} = Scan Message With Rspamc ${TESTDIR}/messages/btc.eml
Should Contain ${result.stdout} BITCOIN_ADDR
Scan File ${TESTDIR}/messages/btc.eml
Expect Symbol BITCOIN_ADDR

BITCOIN ADDR 2
${result} = Scan Message With Rspamc ${TESTDIR}/messages/btc2.eml
Should Contain ${result.stdout} BITCOIN_ADDR
Scan File ${TESTDIR}/messages/btc2.eml
Expect Symbol BITCOIN_ADDR

BITCOIN ADDR 3
${result} = Scan Message With Rspamc ${TESTDIR}/messages/btc3.eml
Should Contain ${result.stdout} BITCOIN_ADDR
Scan File ${TESTDIR}/messages/btc3.eml
Expect Symbol BITCOIN_ADDR

RCVD_COUNT_ONE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/btc.eml
Should Contain ${result.stdout} RCVD_COUNT_ONE
Scan File ${TESTDIR}/messages/btc.eml
Expect Symbol RCVD_COUNT_ONE

RCVD_COUNT_FIVE
${result} = Scan Message With Rspamc ${TESTDIR}/messages/yand_forward.eml
Should Contain ${result.stdout} RCVD_COUNT_FIVE
Scan File ${TESTDIR}/messages/yand_forward.eml
Expect Symbol RCVD_COUNT_FIVE

RCVD_COUNT_SEVEN
${result} = Scan Message With Rspamc ${TESTDIR}/messages/rcvd7.eml
Should Contain ${result.stdout} RCVD_COUNT_SEVEN
Scan File ${TESTDIR}/messages/rcvd7.eml
Expect Symbol RCVD_COUNT_SEVEN

FROM_NEQ_ENVFROM
${result} = Scan Message With Rspamc ${MESSAGE8} --from test@test.net
Check Rspamc ${result} FROM_NEQ_ENVFROM
Scan File ${MESSAGE8} From=test@test.net
Expect Symbol FROM_NEQ_ENVFROM

PHISH_SENDER_A
${result} = Scan Message With Rspamc ${TESTDIR}/messages/phish_sender.eml
Should Contain ${result.stdout} MULTIPLE_FROM (9.00)[any@attack.com,admin@legitimate.com]
Should Contain ${result.stdout} MULTIPLE_UNIQUE_HEADERS (7.00)[From]
Scan File ${TESTDIR}/messages/phish_sender.eml
Expect Symbol With Score And Exact Options MULTIPLE_FROM 9.0 any@attack.com,admin@legitimate.com
Expect Symbol With Score And Exact Options MULTIPLE_UNIQUE_HEADERS 7.0 From

PHISH_SENDER_B
${result} = Scan Message With Rspamc ${TESTDIR}/messages/phish_sender2.eml
Should Contain ${result.stdout} BROKEN_HEADERS
Scan File ${TESTDIR}/messages/phish_sender2.eml
Expect Symbol BROKEN_HEADERS

PHISH_SENDER_C
${result} = Scan Message With Rspamc ${TESTDIR}/messages/phish_sender3.eml
Should Contain ${result.stdout} BROKEN_HEADERS
Scan File ${TESTDIR}/messages/phish_sender3.eml
Expect Symbol BROKEN_HEADERS

PHISH_SENDER_D
${result} = Scan Message With Rspamc ${TESTDIR}/messages/phish_sender4.eml
Should Contain ${result.stdout} BROKEN_HEADERS
Scan File ${TESTDIR}/messages/phish_sender4.eml
Expect Symbol BROKEN_HEADERS

PHISH_SENDER_E
${result} = Scan Message With Rspamc ${TESTDIR}/messages/phish_sender5.eml
Should Contain ${result.stdout} MULTIPLE_FROM
Should Contain ${result.stdout} DMARC_NA (0.00)[Duplicate From header]
Scan File ${TESTDIR}/messages/phish_sender5.eml
Expect Symbol MULTIPLE_FROM
Expect Symbol With Exact Options DMARC_NA Duplicate From header

PHISH_SENDER_ROUTING_PART
${result} = Scan Message With Rspamc ${TESTDIR}/messages/phish_sender6.eml
Should Contain ${result.stdout} FROM_INVALID
Scan File ${TESTDIR}/messages/phish_sender6.eml
Expect Symbol FROM_INVALID


*** Keywords ***

+ 4
- 4
test/functional/cases/281_fnames.robot View File

@@ -14,9 +14,9 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
FILE NAMES
${result} = Scan Message With Rspamc ${TESTDIR}/messages/fname.eml
Should Contain ${result.stdout} TEST_FNAME
Should Contain ${result.stdout} [삼성생명]2020.08.14 데일리 경제뉴스.pdf, 01029_402110_10620_RGT06902_PRT180ML_20200803_101820.pdf
Scan File ${TESTDIR}/messages/fname.eml
Expect Symbol With Option TEST_FNAME [삼성생명]2020.08.14 데일리 경제뉴스.pdf
Expect Symbol With Option TEST_FNAME 01029_402110_10620_RGT06902_PRT180ML_20200803_101820.pdf


*** Keywords ***
@@ -27,4 +27,4 @@ Fnames Setup

Fnames Teardown
Normal Teardown
Terminate All Processes kill=True
Terminate All Processes kill=True

+ 7
- 7
test/functional/cases/290_greylist.robot View File

@@ -14,17 +14,17 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
GREYLIST NEW
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} GREYLIST (0.00)[greylisted
Scan File ${MESSAGE}
Expect Symbol With Option GREYLIST greylisted

GREYLIST EARLY
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} GREYLIST (0.00)[greylisted
Scan File ${MESSAGE}
Expect Symbol With Option GREYLIST greylisted

GREYLIST PASS
Sleep 4s Wait greylisting timeout
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} GREYLIST (0.00)[pass
Scan File ${MESSAGE}
Expect Symbol With Option GREYLIST pass

*** Keywords ***
Greylist Setup
@@ -36,4 +36,4 @@ Greylist Setup
Greylist Teardown
Normal Teardown
Shutdown Process With Children ${REDIS_PID}
Terminate All Processes kill=True
Terminate All Processes kill=True

+ 21
- 20
test/functional/cases/300_rbl.robot View File

@@ -13,41 +13,42 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
RBL FROM MISS
${result} = Scan Message With Rspamc ${MESSAGE} -i 1.2.3.4
Check Rspamc ${result} FAKE_RBL_CODE_2 inverse=True
Scan File ${MESSAGE} IP=1.2.3.4
Do Not Expect Symbol FAKE_RBL_CODE_2

RBL FROM HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 4.3.2.1
Check Rspamc ${result} FAKE_RBL_CODE_2
Scan File ${MESSAGE} IP=4.3.2.1
Expect Symbol FAKE_RBL_CODE_2

RBL FROM MULTIPLE HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 4.3.2.3
Check Rspamc ${result} FAKE_RBL_CODE_2 FAKE_RBL_CODE_3
Scan File ${MESSAGE} IP=4.3.2.3
Expect Symbol FAKE_RBL_CODE_2
Expect Symbol FAKE_RBL_CODE_3

RBL FROM UNKNOWN HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 4.3.2.2
Check Rspamc ${result} FAKE_RBL_UNKNOWN
Scan File ${MESSAGE} IP=4.3.2.2
Expect Symbol FAKE_RBL_FAKE_RBL_UNKNOWN

RBL RECEIVED HIT
${result} = Scan Message With Rspamc ${MESSAGE} -i 8.8.8.8
Check Rspamc ${result} FAKE_RECEIVED_RBL_CODE_3
Scan File ${MESSAGE} IP=8.8.8.8
Expect Symbol FAKE_RECEIVED_RBL_CODE_3

RBL FROM HIT WL
${result} = Scan Message With Rspamc ${MESSAGE} -i 4.3.2.4
Check Rspamc ${result} FAKE_RBL_CODE_2 inverse=True
Should Contain ${result.stdout} FAKE_WL_RBL_CODE_2 (0.00)[4.3.2.4:from]
Scan File ${MESSAGE} IP=4.3.2.4
Do Not Expect Symbol FAKE_RBL_CODE_2
Expect Symbol With Exact Options FAKE_WL_RBL_CODE_2 4.3.2.4:from

EMAILBL Compose Map 1
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url14.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL (0.00)[dirty.sanchez.com:email]
Scan File ${TESTDIR}/messages/url14.eml
Expect Symbol With Exact Options RSPAMD_EMAILBL dirty.sanchez.com:email

EMAILBL Compose Map 2
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url15.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL (0.00)[very.dirty.sanchez.com:email]
Scan File ${TESTDIR}/messages/url15.eml
Expect Symbol With Exact Options RSPAMD_EMAILBL very.dirty.sanchez.com:email

EMAILBL Compose Map 3
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url16.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL (0.00)[41.black.sanchez.com:email]
Scan File ${TESTDIR}/messages/url16.eml
Expect Symbol With Exact Options RSPAMD_EMAILBL 41.black.sanchez.com:email


*** Keywords ***
@@ -58,4 +59,4 @@ Rbl Setup

Rbl Teardown
Normal Teardown
Terminate All Processes kill=True
Terminate All Processes kill=True

+ 6
- 6
test/functional/cases/310_udp.robot View File

@@ -14,16 +14,16 @@ ${RSPAMD_SCOPE} Test

*** Test Cases ***
Simple UDP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} UDP_SUCCESS (0.00)[helloworld]
Scan File ${MESSAGE}
Expect Symbol With Exact Options UDP_SUCCESS helloworld

Sendonly UDP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} UDP_SENDTO
Scan File ${MESSAGE}
Expect Symbol UDP_SENDTO

Errored UDP request
${result} = Scan Message With Rspamc ${MESSAGE}
Check Rspamc ${result} UDP_FAIL (0.00)[read timeout]
Scan File ${MESSAGE}
Expect Symbol With Exact Options UDP_FAIL read timeout

*** Keywords ***
Lua Setup

+ 28
- 28
test/functional/cases/330_neural.robot View File

@@ -17,50 +17,50 @@ ${RSPAMD_SCOPE} Suite
Train
Sleep 2s Wait for redis mess
FOR ${INDEX} IN RANGE 0 10
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["SPAM_SYMBOL"]}
Check Rspamc ${result} SPAM_SYMBOL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["HAM_SYMBOL"]}
Check Rspamc ${result} HAM_SYMBOL
Scan File ${MESSAGE} Settings={symbols_enabled = ["SPAM_SYMBOL"]}
Expect Symbol SPAM_SYMBOL
Scan File ${MESSAGE} Settings={symbols_enabled = ["HAM_SYMBOL"]}
Expect Symbol HAM_SYMBOL
END

Check Neural HAM
Sleep 2s Wait for neural to be loaded
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["HAM_SYMBOL"];groups_enabled=["neural"];symbols_disabled = ["NEURAL_LEARN"]}
Check Rspamc ${result} NEURAL_HAM_SHORT (
Check Rspamc ${result} NEURAL_SPAM_SHORT ( inverse=1
Check Rspamc ${result} NEURAL_HAM_SHORT_PCA (
Check Rspamc ${result} NEURAL_SPAM_SHORT_PCA ( inverse=1
Scan File ${MESSAGE} Settings={symbols_enabled = ["HAM_SYMBOL"];groups_enabled=["neural"];symbols_disabled = ["NEURAL_LEARN"]}
Expect Symbol NEURAL_HAM_SHORT
Do Not Expect Symbol NEURAL_SPAM_SHORT
Expect Symbol NEURAL_HAM_SHORT_PCA
Do Not Expect Symbol NEURAL_SPAM_SHORT_PCA

Check Neural SPAM
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["SPAM_SYMBOL"];groups_enabled=["neural"];symbols_disabled = ["NEURAL_LEARN"]}
Check Rspamc ${result} NEURAL_SPAM_SHORT (
Check Rspamc ${result} NEURAL_HAM_SHORT ( inverse=1
Check Rspamc ${result} NEURAL_SPAM_SHORT_PCA (
Check Rspamc ${result} NEURAL_HAM_SHORT_PCA ( inverse=1
Scan File ${MESSAGE} Settings={symbols_enabled = ["SPAM_SYMBOL"];groups_enabled=["neural"];symbols_disabled = ["NEURAL_LEARN"]}
Expect Symbol NEURAL_SPAM_SHORT
Do Not Expect Symbol NEURAL_HAM_SHORT
Expect Symbol NEURAL_SPAM_SHORT_PCA
Do Not Expect Symbol NEURAL_HAM_SHORT_PCA


Train INVERSE
FOR ${INDEX} IN RANGE 0 10
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["SPAM_SYMBOL"]; SPAM_SYMBOL = -5;}
Check Rspamc ${result} SPAM_SYMBOL
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["HAM_SYMBOL"]; HAM_SYMBOL = 5;}
Check Rspamc ${result} HAM_SYMBOL
Scan File ${MESSAGE} Settings={symbols_enabled = ["SPAM_SYMBOL"]; SPAM_SYMBOL = -5;}
Expect Symbol SPAM_SYMBOL
Scan File ${MESSAGE} Settings={symbols_enabled = ["HAM_SYMBOL"]; HAM_SYMBOL = 5;}
Expect Symbol HAM_SYMBOL
END

Check Neural HAM INVERSE
Sleep 2s Wait for neural to be loaded
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["HAM_SYMBOL"];groups_enabled=["neural"]}
Check Rspamc ${result} NEURAL_SPAM_SHORT (
Check Rspamc ${result} NEURAL_SPAM_SHORT_PCA (
Check Rspamc ${result} NEURAL_HAM_SHORT ( inverse=1
Check Rspamc ${result} NEURAL_HAM_SHORT_PCA ( inverse=1
Scan File ${MESSAGE} Settings={symbols_enabled = ["HAM_SYMBOL"];groups_enabled=["neural"]}
Expect Symbol NEURAL_SPAM_SHORT
Expect Symbol NEURAL_SPAM_SHORT_PCA
Do Not Expect Symbol NEURAL_HAM_SHORT
Do Not Expect Symbol NEURAL_HAM_SHORT_PCA

Check Neural SPAM INVERSE
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings={symbols_enabled = ["SPAM_SYMBOL"];groups_enabled=["neural"]}
Check Rspamc ${result} NEURAL_HAM_SHORT (
Check Rspamc ${result} NEURAL_HAM_SHORT_PCA (
Check Rspamc ${result} NEURAL_SPAM_SHORT ( inverse=1
Check Rspamc ${result} NEURAL_SPAM_SHORT_PCA ( inverse=1
Scan File ${MESSAGE} Settings={symbols_enabled = ["SPAM_SYMBOL"];groups_enabled=["neural"]}
Expect Symbol NEURAL_HAM_SHORT
Expect Symbol NEURAL_HAM_SHORT_PCA
Do Not Expect Symbol NEURAL_SPAM_SHORT
Do Not Expect Symbol NEURAL_SPAM_SHORT_PCA

*** Keywords ***
Neural Setup

+ 103
- 105
test/functional/cases/340_surbl.robot View File

@@ -12,156 +12,154 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
SURBL resolve ip
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url7.eml
Should Contain ${result.stdout} URIBL_SBL_CSS (0.00)[8.8.8.9:example.ru
Should Contain ${result.stdout} URIBL_XBL (0.00)[8.8.8.8:example.ru
Should Contain ${result.stdout} URIBL_PBL (0.00)[8.8.8.8:example.ru
Scan File ${TESTDIR}/messages/url7.eml
Expect Symbol With Exact Options URIBL_SBL_CSS 8.8.8.9:example.ru:url
Expect Symbol With Exact Options URIBL_XBL 8.8.8.8:example.ru:url
Expect Symbol With Exact Options URIBL_PBL 8.8.8.8:example.ru:url

SURBL Example.com domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url4.eml
Should Contain ${result.stdout} RSPAMD_URIBL
Should Contain ${result.stdout} DBL_SPAM
Should Not Contain ${result.stdout} DBL_PHISH
Should Not Contain ${result.stdout} URIBL_BLACK
Scan File ${TESTDIR}/messages/url4.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol DBL_SPAM
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL Example.net domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url5.eml
Should Contain ${result.stdout} DBL_PHISH
Should Not Contain ${result.stdout} DBL_SPAM
Should Not Contain ${result.stdout} RSPAMD_URIBL
Should Not Contain ${result.stdout} URIBL_BLACK
Scan File ${TESTDIR}/messages/url5.eml
Expect Symbol DBL_PHISH
Do Not Expect Symbol DBL_SPAM
Do Not Expect Symbol RSPAMD_URIBL
Do Not Expect Symbol URIBL_BLACK

SURBL Example.org domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url6.eml
Should Contain ${result.stdout} URIBL_BLACK
Should Not Contain ${result.stdout} DBL_SPAM
Should Not Contain ${result.stdout} RSPAMD_URIBL
Should Not Contain ${result.stdout} DBL_PHISH
Scan File ${TESTDIR}/messages/url6.eml
Expect Symbol URIBL_BLACK
Do Not Expect Symbol DBL_SPAM
Do Not Expect Symbol RSPAMD_URIBL
Do Not Expect Symbol DBL_PHISH

SURBL Example.ru domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url7.eml
Should Contain ${result.stdout} URIBL_GREY
Should Contain ${result.stdout} URIBL_RED
Should Not Contain ${result.stdout} DBL_SPAM
Should Not Contain ${result.stdout} RSPAMD_URIBL
Should Not Contain ${result.stdout} DBL_PHISH
Should Not Contain ${result.stdout} URIBL_BLACK
Scan File ${TESTDIR}/messages/url7.eml
Expect Symbol URIBL_GREY
Expect Symbol URIBL_RED
Do Not Expect Symbol DBL_SPAM
Do Not Expect Symbol RSPAMD_URIBL
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL Example.ru ZEN domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url7.eml
Should Contain ${result.stdout} URIBL_SBL_CSS (
Should Contain ${result.stdout} URIBL_XBL (
Should Contain ${result.stdout} URIBL_PBL (
Should Not Contain ${result.stdout} URIBL_SBL (
Should Not Contain ${result.stdout} DBL_SPAM (
Should Not Contain ${result.stdout} RSPAMD_URIBL (
Should Not Contain ${result.stdout} DBL_PHISH (
Should Not Contain ${result.stdout} URIBL_BLACK (
Scan File ${TESTDIR}/messages/url7.eml
Expect Symbol URIBL_SBL_CSS
Expect Symbol URIBL_XBL
Expect Symbol URIBL_PBL
Do Not Expect Symbol URIBL_SBL
Do Not Expect Symbol DBL_SPAM
Do Not Expect Symbol RSPAMD_URIBL
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL Example.com domain image false
${result} = Scan Message With Rspamc ${TESTDIR}/messages/urlimage.eml
Should Contain ${result.stdout} RSPAMD_URIBL_IMAGES
Should Not Contain ${result.stdout} DBL_SPAM (
Should Not Contain ${result.stdout} RSPAMD_URIBL (
Should Not Contain ${result.stdout} DBL_PHISH (
Should Not Contain ${result.stdout} URIBL_BLACK (
Scan File ${TESTDIR}/messages/urlimage.eml
Expect Symbol RSPAMD_URIBL_IMAGES
Do Not Expect Symbol DBL_SPAM
Do Not Expect Symbol RSPAMD_URIBL
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL @example.com mail html
${result} = Scan Message With Rspamc ${TESTDIR}/messages/mailadr.eml
Should Contain ${result.stdout} RSPAMD_URIBL (
Should Contain ${result.stdout} DBL_SPAM (
Should Contain ${result.stdout} example.com:email
Should Not Contain ${result.stdout} RSPAMD_URIBL_IMAGES (
Should Not Contain ${result.stdout} DBL_PHISH (
Should Not Contain ${result.stdout} URIBL_BLACK (
Scan File ${TESTDIR}/messages/mailadr.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol With Exact Options DBL_SPAM example.com:email
Do Not Expect Symbol RSPAMD_URIBL_IMAGES
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL @example.com mail text
${result} = Scan Message With Rspamc ${TESTDIR}/messages/mailadr2.eml
Should Contain ${result.stdout} RSPAMD_URIBL (
Should Contain ${result.stdout} DBL_SPAM (
Should Contain ${result.stdout} example.com:email
Should Not Contain ${result.stdout} RSPAMD_URIBL_IMAGES (
Should Not Contain ${result.stdout} DBL_PHISH (
Should Not Contain ${result.stdout} URIBL_BLACK (
Scan File ${TESTDIR}/messages/mailadr2.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol With Exact Options DBL_SPAM example.com:email
Do Not Expect Symbol RSPAMD_URIBL_IMAGES
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL example.com not encoded url in subject
${result} = Scan Message With Rspamc ${TESTDIR}/messages/urlinsubject.eml
Should Contain ${result.stdout} RSPAMD_URIBL (
Should Contain ${result.stdout} DBL_SPAM (
Should Not Contain ${result.stdout} DBL_PHISH (
Should Not Contain ${result.stdout} URIBL_BLACK (
Scan File ${TESTDIR}/messages/urlinsubject.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol DBL_SPAM
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL example.com encoded url in subject
${result} = Scan Message With Rspamc ${TESTDIR}/messages/urlinsubjectencoded.eml
Should Contain ${result.stdout} RSPAMD_URIBL (
Should Contain ${result.stdout} DBL_SPAM (
Should Not Contain ${result.stdout} DBL_PHISH (
Should Not Contain ${result.stdout} URIBL_BLACK (
Scan File ${TESTDIR}/messages/urlinsubjectencoded.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol DBL_SPAM
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

WHITELIST
${result} = Scan Message With Rspamc ${TESTDIR}/messages/whitelist.eml
Should Not Contain ${result.stdout} RSPAMD_URIBL (
Should Not Contain ${result.stdout} DBL_SPAM (
Should Not Contain ${result.stdout} RSPAMD_URIBL_IMAGES (
Scan File ${TESTDIR}/messages/whitelist.eml
Do Not Expect Symbol RSPAMD_URIBL
Do Not Expect Symbol DBL_SPAM
Do Not Expect Symbol RSPAMD_URIBL_IMAGES

EMAILBL full address & domain only
${result} = Scan Message With Rspamc ${TESTDIR}/messages/emailbltext.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL_FULL (
Should Contain ${result.stdout} RSPAMD_EMAILBL_DOMAINONLY (
Scan File ${TESTDIR}/messages/emailbltext.eml
Expect Symbol RSPAMD_EMAILBL_FULL
Expect Symbol RSPAMD_EMAILBL_DOMAINONLY

EMAILBL full subdomain address
${result} = Scan Message With Rspamc ${TESTDIR}/messages/emailbltext2.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL_FULL (
Scan File ${TESTDIR}/messages/emailbltext2.eml
Expect Symbol RSPAMD_EMAILBL_FULL

EMAILBL full subdomain address & domain only
${result} = Scan Message With Rspamc ${TESTDIR}/messages/emailbltext3.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL_DOMAINONLY (0.00)[baddomain.com:email]
Should Contain ${result.stdout} RSPAMD_EMAILBL_FULL (0.00)[user.subdomain.baddomain.com:email]
Scan File ${TESTDIR}/messages/emailbltext3.eml
Expect Symbol With Exact Options RSPAMD_EMAILBL_DOMAINONLY baddomain.com:email
Expect Symbol With Exact Options RSPAMD_EMAILBL_FULL user.subdomain.baddomain.com:email

EMAILBL REPLY TO full address
${result} = Scan Message With Rspamc ${TESTDIR}/messages/replyto.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL_FULL (
Should Not Contain ${result.stdout} RSPAMD_EMAILBL_DOMAINONLY (
Scan File ${TESTDIR}/messages/replyto.eml
Expect Symbol RSPAMD_EMAILBL_FULL
Do Not Expect Symbol RSPAMD_EMAILBL_DOMAINONLY

EMAILBL REPLY TO domain only
${result} = Scan Message With Rspamc ${TESTDIR}/messages/replyto2.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL_DOMAINONLY (
Should Not Contain ${result.stdout} RSPAMD_EMAILBL_FULL (
Scan File ${TESTDIR}/messages/replyto2.eml
Expect Symbol RSPAMD_EMAILBL_DOMAINONLY
Do Not Expect Symbol RSPAMD_EMAILBL_FULL

EMAILBL REPLY TO full subdomain address
${result} = Scan Message With Rspamc ${TESTDIR}/messages/replytosubdomain.eml
Should Contain ${result.stdout} RSPAMD_EMAILBL_FULL (
Should Not Contain ${result.stdout} RSPAMD_EMAILBL_DOMAINONLY (
Scan File ${TESTDIR}/messages/replytosubdomain.eml
Expect Symbol RSPAMD_EMAILBL_FULL
Do Not Expect Symbol RSPAMD_EMAILBL_DOMAINONLY

SURBL IDN domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url8.eml
Should Contain ${result.stdout} RSPAMD_URIBL
Should Contain ${result.stdout} DBL_SPAM
Should Not Contain ${result.stdout} DBL_PHISH
Should Not Contain ${result.stdout} URIBL_BLACK
Scan File ${TESTDIR}/messages/url8.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol DBL_SPAM
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL IDN Punycode domain
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url9.eml
Should Contain ${result.stdout} RSPAMD_URIBL
Should Contain ${result.stdout} DBL_SPAM
Should Not Contain ${result.stdout} DBL_PHISH
Should Not Contain ${result.stdout} URIBL_BLACK
Scan File ${TESTDIR}/messages/url9.eml
Expect Symbol RSPAMD_URIBL
Expect Symbol DBL_SPAM
Do Not Expect Symbol DBL_PHISH
Do Not Expect Symbol URIBL_BLACK

SURBL html entity&shy
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url10.eml
Should Contain ${result.stdout} RSPAMD_URIBL
Scan File ${TESTDIR}/messages/url10.eml
Expect Symbol RSPAMD_URIBL

SURBL url compose map 1
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url11.eml
Should Contain ${result.stdout} BAD_SUBDOMAIN (0.00)[clean.dirty.sanchez.com:url]
Scan File ${TESTDIR}/messages/url11.eml
Expect Symbol With Exact Options BAD_SUBDOMAIN clean.dirty.sanchez.com:url

SURBL url compose map 2
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url12.eml
Should Contain ${result.stdout} BAD_SUBDOMAIN (0.00)[4.very.dirty.sanchez.com:url]
Scan File ${TESTDIR}/messages/url12.eml
Expect Symbol With Exact Options BAD_SUBDOMAIN 4.very.dirty.sanchez.com:url

SURBL url compose map 3
${result} = Scan Message With Rspamc ${TESTDIR}/messages/url13.eml
Should Contain ${result.stdout} BAD_SUBDOMAIN (0.00)[41.black.sanchez.com:url]
Scan File ${TESTDIR}/messages/url13.eml
Expect Symbol With Exact Options BAD_SUBDOMAIN 41.black.sanchez.com:url

*** Keywords ***
Surbl Setup
@@ -171,4 +169,4 @@ Surbl Setup

Surbl Teardown
Normal Teardown
Terminate All Processes kill=True
Terminate All Processes kill=True

+ 56
- 56
test/functional/cases/350_magic.robot View File

@@ -13,60 +13,60 @@ ${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
Magic detections bundle 1
${result} = Scan Message With Rspamc ${TESTDIR}/messages/gargantua.eml
Should Contain ${result.stdout} MAGIC_SYM_ZIP_2
Should Contain ${result.stdout} MAGIC_SYM_RAR_3
Should Contain ${result.stdout} MAGIC_SYM_EXE_4
Should Contain ${result.stdout} MAGIC_SYM_ELF_5
Should Contain ${result.stdout} MAGIC_SYM_LNK_6
Should Contain ${result.stdout} MAGIC_SYM_CLASS_7
Should Contain ${result.stdout} MAGIC_SYM_RTF_8
Should Contain ${result.stdout} MAGIC_SYM_PDF_9
Should Contain ${result.stdout} MAGIC_SYM_PS_10
Should Contain ${result.stdout} MAGIC_SYM_CHM_11
Should Contain ${result.stdout} MAGIC_SYM_DJVU_12
Should Contain ${result.stdout} MAGIC_SYM_ARJ_13
Should Contain ${result.stdout} MAGIC_SYM_CAB_14
Should Contain ${result.stdout} MAGIC_SYM_ACE_15
Should Contain ${result.stdout} MAGIC_SYM_TAR_16
Should Contain ${result.stdout} MAGIC_SYM_BZ2_17
Should Contain ${result.stdout} MAGIC_SYM_XZ_18
Should Contain ${result.stdout} MAGIC_SYM_LZ4_19
Should Contain ${result.stdout} MAGIC_SYM_ZST_20
Should Contain ${result.stdout} MAGIC_SYM_DMG_21
Should Contain ${result.stdout} MAGIC_SYM_ISO_22
Should Contain ${result.stdout} MAGIC_SYM_ZOO_23
Should Contain ${result.stdout} MAGIC_SYM_EPUB_24
Should Contain ${result.stdout} MAGIC_SYM_XAR_25
Should Contain ${result.stdout} MAGIC_SYM_PSD_26
Should Contain ${result.stdout} MAGIC_SYM_PCX_27
Should Contain ${result.stdout} MAGIC_SYM_TIFF_28
Should Contain ${result.stdout} MAGIC_SYM_ICO_29
Should Contain ${result.stdout} MAGIC_SYM_SWF_30
Should Contain ${result.stdout} MAGIC_SYM_DOC_31
Should Contain ${result.stdout} MAGIC_SYM_XLS_32
Should Contain ${result.stdout} MAGIC_SYM_PPT_33
Should Contain ${result.stdout} MAGIC_SYM_MSI_34
Should Contain ${result.stdout} MAGIC_SYM_MSG_35
Should Contain ${result.stdout} MAGIC_SYM_DOCX_36
Should Contain ${result.stdout} MAGIC_SYM_XLSX_37
Should Contain ${result.stdout} MAGIC_SYM_PPTX_38
Should Contain ${result.stdout} MAGIC_SYM_ODT_39
Should Contain ${result.stdout} MAGIC_SYM_ODS_40
Should Contain ${result.stdout} MAGIC_SYM_ODP_41
Should Contain ${result.stdout} MAGIC_SYM_7Z_42
Should Contain ${result.stdout} MAGIC_SYM_VSD_43
Should Contain ${result.stdout} MAGIC_SYM_PNG_44
Should Contain ${result.stdout} MAGIC_SYM_JPG_45
Should Contain ${result.stdout} MAGIC_SYM_GIF_46
Should Contain ${result.stdout} MAGIC_SYM_BMP_47
Should Contain ${result.stdout} MAGIC_SYM_TXT_48
Should Contain ${result.stdout} MAGIC_SYM_HTML_49
Should Contain ${result.stdout} MAGIC_SYM_CSV_50
Should Contain ${result.stdout} MAGIC_SYM_DWG_51
Should Contain ${result.stdout} MAGIC_SYM_JAR_52
Should Contain ${result.stdout} MAGIC_SYM_APK_53
Should Contain ${result.stdout} MAGIC_SYM_BAT_54
Should Contain ${result.stdout} MAGIC_SYM_ICS_55
Should Contain ${result.stdout} MAGIC_SYM_VCF_56
Scan File ${TESTDIR}/messages/gargantua.eml
Expect Symbol MAGIC_SYM_ZIP_2
Expect Symbol MAGIC_SYM_RAR_3
Expect Symbol MAGIC_SYM_EXE_4
Expect Symbol MAGIC_SYM_ELF_5
Expect Symbol MAGIC_SYM_LNK_6
Expect Symbol MAGIC_SYM_CLASS_7
Expect Symbol MAGIC_SYM_RTF_8
Expect Symbol MAGIC_SYM_PDF_9
Expect Symbol MAGIC_SYM_PS_10
Expect Symbol MAGIC_SYM_CHM_11
Expect Symbol MAGIC_SYM_DJVU_12
Expect Symbol MAGIC_SYM_ARJ_13
Expect Symbol MAGIC_SYM_CAB_14
Expect Symbol MAGIC_SYM_ACE_15
Expect Symbol MAGIC_SYM_TAR_16
Expect Symbol MAGIC_SYM_BZ2_17
Expect Symbol MAGIC_SYM_XZ_18
Expect Symbol MAGIC_SYM_LZ4_19
Expect Symbol MAGIC_SYM_ZST_20
Expect Symbol MAGIC_SYM_DMG_21
Expect Symbol MAGIC_SYM_ISO_22
Expect Symbol MAGIC_SYM_ZOO_23
Expect Symbol MAGIC_SYM_EPUB_24
Expect Symbol MAGIC_SYM_XAR_25
Expect Symbol MAGIC_SYM_PSD_26
Expect Symbol MAGIC_SYM_PCX_27
Expect Symbol MAGIC_SYM_TIFF_28
Expect Symbol MAGIC_SYM_ICO_29
Expect Symbol MAGIC_SYM_SWF_30
Expect Symbol MAGIC_SYM_DOC_31
Expect Symbol MAGIC_SYM_XLS_32
Expect Symbol MAGIC_SYM_PPT_33
Expect Symbol MAGIC_SYM_MSI_34
Expect Symbol MAGIC_SYM_MSG_35
Expect Symbol MAGIC_SYM_DOCX_36
Expect Symbol MAGIC_SYM_XLSX_37
Expect Symbol MAGIC_SYM_PPTX_38
Expect Symbol MAGIC_SYM_ODT_39
Expect Symbol MAGIC_SYM_ODS_40
Expect Symbol MAGIC_SYM_ODP_41
Expect Symbol MAGIC_SYM_7Z_42
Expect Symbol MAGIC_SYM_VSD_43
Expect Symbol MAGIC_SYM_PNG_44
Expect Symbol MAGIC_SYM_JPG_45
Expect Symbol MAGIC_SYM_GIF_46
Expect Symbol MAGIC_SYM_BMP_47
Expect Symbol MAGIC_SYM_TXT_48
Expect Symbol MAGIC_SYM_HTML_49
Expect Symbol MAGIC_SYM_CSV_50
Expect Symbol MAGIC_SYM_DWG_51
Expect Symbol MAGIC_SYM_JAR_52
Expect Symbol MAGIC_SYM_APK_53
Expect Symbol MAGIC_SYM_BAT_54
Expect Symbol MAGIC_SYM_ICS_55
Expect Symbol MAGIC_SYM_VCF_56


+ 19
- 19
test/functional/cases/360_force_actions.robot View File

@@ -13,34 +13,34 @@ ${RSPAMD_SCOPE} Suite

*** Test Cases ***
FORCE ACTIONS from reject to add header
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_reject
Check Rspamc ${result} Action: add header
Should Contain ${result.stdout} FORCE_ACTION_FORCE_REJECT_TO_ADD_HEADER
Scan File ${MESSAGE} Settings-Id=id_reject
Expect Action add header
Expect Symbol FORCE_ACTION_FORCE_REJECT_TO_ADD_HEADER

FORCE ACTIONS from reject to no action
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_reject_no_action
Check Rspamc ${result} Action: no action
Should Contain ${result.stdout} FORCE_ACTION_FORCE_REJECT_TO_NO_ACTION
Scan File ${MESSAGE} Settings-Id=id_reject_no_action
Expect Action no action
Expect Symbol FORCE_ACTION_FORCE_REJECT_TO_NO_ACTION

FORCE ACTIONS from no action to reject
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_no_action
Check Rspamc ${result} Action: reject
Should Contain ${result.stdout} FORCE_ACTION_FORCE_NO_ACTION_TO_REJECT
Scan File ${MESSAGE} Settings-Id=id_no_action
Expect Action reject
Expect Symbol FORCE_ACTION_FORCE_NO_ACTION_TO_REJECT

FORCE ACTIONS from no action to add header
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_no_action_to_add_header
Check Rspamc ${result} Action: add header
Should Contain ${result.stdout} FORCE_ACTION_FORCE_NO_ACTION_TO_ADD_HEADER
Scan File ${MESSAGE} Settings-Id=id_no_action_to_add_header
Expect Action add header
Expect Symbol FORCE_ACTION_FORCE_NO_ACTION_TO_ADD_HEADER

FORCE ACTIONS from add header to no action
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_add_header
Check Rspamc ${result} Action: no action
Should Contain ${result.stdout} FORCE_ACTION_FORCE_ADD_HEADER_TO_NO_ACTION
Scan File ${MESSAGE} Settings-Id=id_add_header
Expect Action no action
Expect Symbol FORCE_ACTION_FORCE_ADD_HEADER_TO_NO_ACTION

FORCE ACTIONS from add header to reject
${result} = Scan Message With Rspamc ${MESSAGE} --header Settings-Id=id_add_header_to_reject
Check Rspamc ${result} Action: reject
Should Contain ${result.stdout} FORCE_ACTION_FORCE_ADD_HEADER_TO_REJECT
Scan File ${MESSAGE} Settings-Id=id_add_header_to_reject
Expect Action reject
Expect Symbol FORCE_ACTION_FORCE_ADD_HEADER_TO_REJECT


*** Keywords ***
@@ -51,4 +51,4 @@ Force Actions Setup

Force Actions Teardown
Normal Teardown
Terminate All Processes kill=True
Terminate All Processes kill=True

+ 12
- 2
test/functional/lib/rspamd.py View File

@@ -139,8 +139,18 @@ def rspamc(addr, port, filename):
r = s.recv(2048)
return r.decode('utf-8')

def scan_file(addr, port, filename):
return str(urlopen("http://%s:%s/symbols?file=%s" % (addr, port, filename)).read())
def Scan_File(filename, **headers):
addr = BuiltIn().get_variable_value("${LOCAL_ADDR}")
port = BuiltIn().get_variable_value("${PORT_NORMAL}")
headers["Queue-Id"] = BuiltIn().get_variable_value("${TEST_NAME}")
c = http.client.HTTPConnection("%s:%s" % (addr, port))
c.request("POST", "/checkv2", open(filename, "rb"), headers)
r = c.getresponse()
assert r.status == 200
d = demjson.decode(r.read())
c.close()
BuiltIn().set_test_variable("${SCAN_RESULT}", d)
return

def Send_SIGUSR1(pid):
pid = int(pid)

+ 63
- 0
test/functional/lib/rspamd.robot View File

@@ -44,6 +44,10 @@ Check Rspamc Match String
Run Keyword If ${inverse} == False Should Contain ${subject} ${str}
... ELSE Should Not Contain ${subject} ${str}

Do Not Expect Symbol
[Arguments] ${symbol}
Run Keyword And Expect Error * Expect Symbol ${symbol}

Generic Setup
[Arguments] @{vargs} &{kwargs}
&{d} = Run Rspamd @{vargs} &{kwargs}
@@ -54,6 +58,59 @@ Generic Setup
... ELSE Fail 'RSPAMD_SCOPE must be Test or Suite'
END

Expect Action
[Arguments] ${action}
Should Be Equal ${SCAN_RESULT}[action] ${action}

Expect Email
[Arguments] ${email}
List Should Contain Value ${SCAN_RESULT}[emails] ${email}

Expect Required Score
[Arguments] ${required_score}
Should Be Equal As Numbers ${SCAN_RESULT}[required_score] ${required_score}

Expect Required Score To Be Null
Should Be Equal ${SCAN_RESULT}[required_score] ${NONE}

Expect Score
[Arguments] ${score}
Should Be Equal As Numbers ${SCAN_RESULT}[score] ${score}

Expect Symbol
[Arguments] ${symbol}
Dictionary Should Contain Key ${SCAN_RESULT}[symbols] ${symbol}
... msg=Symbol ${symbol} wasn't found in result

Expect URL
[Arguments] ${url}
List Should Contain Value ${SCAN_RESULT}[urls] ${url}

Expect Symbol With Exact Options
[Arguments] ${symbol} @{options}
Expect Symbol ${symbol}
${have_options} = Convert To List ${SCAN_RESULT}[symbols][${symbol}][options]
Lists Should Be Equal ${have_options} ${options}
... msg="Symbol ${symbol} has options ${SCAN_RESULT}[symbols][${symbol}][options] but expected ${options}"

Expect Symbol With Option
[Arguments] ${symbol} ${option}
Expect Symbol ${symbol}
${have_options} = Convert To List ${SCAN_RESULT}[symbols][${symbol}][options]
Should Contain ${have_options} ${option}
... msg="Options for symbol ${symbol} ${SCAN_RESULT}[symbols][${symbol}][options] doesn't contain ${option}"

Expect Symbol With Score
[Arguments] ${symbol} ${score}
Expect Symbol ${symbol}
Should Be Equal As Numbers ${SCAN_RESULT}[symbols][${symbol}][score] ${score}
... msg="Symbol ${symbol} has score of ${SCAN_RESULT}[symbols][${symbol}][score] but expected ${score}"

Expect Symbol With Score And Exact Options
[Arguments] ${symbol} ${score} @{options}
Expect Symbol With Exact Options ${symbol} @{options}
Expect Symbol With Score ${symbol} ${score}

Generic Teardown
Run Keyword If '${CONTROLLER_ERRORS}' == 'True' Check Controller Errors
Shutdown Process With Children ${RSPAMD_PID}
@@ -155,6 +212,12 @@ Run Rspamd
Simple Teardown
Generic Teardown

Scan File By Reference
[Arguments] ${filename} &{headers}
Set To Dictionary ${headers} File=${filename}
${result} = Scan File /dev/null &{headers}
[Return] ${result}

Scan Message With Rspamc
[Arguments] ${msg_file} @{vargs}
${result} = Run Rspamc -p -h ${LOCAL_ADDR}:${PORT_NORMAL} @{vargs} ${msg_file}

Loading…
Cancel
Save