*** Settings *** | |||||
Suite Setup Generic Setup | |||||
Suite Teardown Simple Teardown | |||||
Library ${TESTDIR}/lib/rspamd.py | |||||
Resource ${TESTDIR}/lib/rspamd.robot | |||||
Variables ${TESTDIR}/lib/vars.py | |||||
*** Variables *** | |||||
${CONFIG} ${TESTDIR}/configs/composites.conf | |||||
${LUA_SCRIPT} ${TESTDIR}/lua/composites.lua | |||||
${MESSAGE} ${TESTDIR}/messages/spam_message.eml | |||||
${RSPAMD_SCOPE} Suite | |||||
*** Test Cases *** | |||||
Composites - Score | |||||
${result} = Scan Message With Rspamc ${MESSAGE} | |||||
Check Rspamc ${result} ${SPACE}46.00 / 0.00 | |||||
Composites - Expressions | |||||
${result} = Scan Message With Rspamc ${MESSAGE} | |||||
Check Rspamc ${result} EXPRESSIONS (5.00) | |||||
Should Contain ${result.stdout} EXPRESSIONS_B (0.00) | |||||
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) | |||||
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 | |||||
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) | |||||
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) | |||||
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_ | |||||
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) |
options = { | |||||
pidfile = "${TMPDIR}/rspamd.pid" | |||||
} | |||||
logging = { | |||||
type = "file", | |||||
level = "debug" | |||||
filename = "${TMPDIR}/rspamd.log" | |||||
} | |||||
worker { | |||||
type = normal | |||||
bind_socket = ${LOCAL_ADDR}:${PORT_NORMAL} | |||||
count = 1 | |||||
task_timeout = 60s; | |||||
} | |||||
worker { | |||||
type = controller | |||||
bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER} | |||||
count = 1 | |||||
secure_ip = ["127.0.0.1", "::1"]; | |||||
stats_path = "${TMPDIR}/stats.ucl" | |||||
} | |||||
lua = "${TESTDIR}/lua/test_coverage.lua"; | |||||
lua = ${LUA_SCRIPT}; | |||||
composites { | |||||
EXPRESSIONS { | |||||
expression = "(EXPRESSIONS_A | ~EXPRESSIONS_B) & !EXPRESSIONS_C"; | |||||
score = 5.0; | |||||
} | |||||
POLICY_REMOVE_WEIGHT { | |||||
expression = "POLICY_REMOVE_WEIGHT_A and ~POLICY_REMOVE_WEIGHT_B"; | |||||
score = 5.0; | |||||
} | |||||
POLICY_FORCE_REMOVE { | |||||
expression = "POLICY_FORCE_REMOVE_A & ^POLICY_FORCE_REMOVE_B"; | |||||
score = 5.0; | |||||
} | |||||
POLICY_FORCE_REMOVE_LEAVE { | |||||
expression = "-POLICY_FORCE_REMOVE_A and -POLICY_FORCE_REMOVE_B"; | |||||
score = 5.0; | |||||
} | |||||
POLICY_LEAVE { | |||||
expression = "POLICY_LEAVE_A & -POLICY_LEAVE_B"; | |||||
score = 5.0; | |||||
} | |||||
DEFAULT_POLICY_REMOVE_WEIGHT { | |||||
expression = "DEFAULT_POLICY_REMOVE_WEIGHT_A and DEFAULT_POLICY_REMOVE_WEIGHT_B"; | |||||
score = 5.0; | |||||
policy = "remove_weight"; | |||||
} | |||||
DEFAULT_POLICY_REMOVE_SYMBOL { | |||||
expression = "DEFAULT_POLICY_REMOVE_SYMBOL_A & DEFAULT_POLICY_REMOVE_SYMBOL_B"; | |||||
score = 5.0; | |||||
policy = "remove_symbol"; | |||||
} | |||||
DEFAULT_POLICY_LEAVE { | |||||
expression = "DEFAULT_POLICY_LEAVE_A & DEFAULT_POLICY_LEAVE_B"; | |||||
score = 5.0; | |||||
policy = "leave"; | |||||
} | |||||
} |
rspamd_config:register_symbol({ | |||||
name = 'EXPRESSIONS_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'POLICY_REMOVE_WEIGHT_A', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'POLICY_REMOVE_WEIGHT_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'POLICY_FORCE_REMOVE_A', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'POLICY_FORCE_REMOVE_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'POLICY_LEAVE_A', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'POLICY_LEAVE_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'DEFAULT_POLICY_REMOVE_WEIGHT_A', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'DEFAULT_POLICY_REMOVE_WEIGHT_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'DEFAULT_POLICY_REMOVE_SYMBOL_A', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'DEFAULT_POLICY_REMOVE_SYMBOL_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'DEFAULT_POLICY_LEAVE_A', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) | |||||
rspamd_config:register_symbol({ | |||||
name = 'DEFAULT_POLICY_LEAVE_B', | |||||
score = 1.0, | |||||
callback = function() | |||||
return true, 'Fires always' | |||||
end | |||||
}) |