aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAndrew Lewis <nerf@judo.za.org>2024-07-10 14:46:34 +0200
committerAndrew Lewis <nerf@judo.za.org>2024-07-10 14:46:34 +0200
commitbf66ae7777fb8d087fe37c0052bdca1b724cb0a1 (patch)
tree1bcf2ca4a412a7eb7a9640a1284b8298d4b9e4aa /test
parent7627666d9efbac9b58d2396f281acb9879000a3c (diff)
downloadrspamd-bf66ae7777fb8d087fe37c0052bdca1b724cb0a1.tar.gz
rspamd-bf66ae7777fb8d087fe37c0052bdca1b724cb0a1.zip
[Test] Add tests for ratelimit module
Diffstat (limited to 'test')
-rw-r--r--test/functional/cases/500_ratelimit.conf44
-rw-r--r--test/functional/configs/ratelimit.conf20
2 files changed, 64 insertions, 0 deletions
diff --git a/test/functional/cases/500_ratelimit.conf b/test/functional/cases/500_ratelimit.conf
new file mode 100644
index 000000000..425df34be
--- /dev/null
+++ b/test/functional/cases/500_ratelimit.conf
@@ -0,0 +1,44 @@
+*** Settings ***
+Suite Setup Rspamd Setup
+Suite Teardown Rspamd Teardown
+Library ${RSPAMD_TESTDIR}/lib/rspamd.py
+Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot
+Variables ${RSPAMD_TESTDIR}/lib/vars.py
+
+*** Variables ***
+${CONFIG} ${RSPAMD_TESTDIR}/configs/ratelimit.conf
+${MESSAGE} ${RSPAMD_TESTDIR}/messages/ham.eml
+${RSPAMD_SCOPE} Suite
+${SETTINGS_REPLIES} {symbols_enabled = [RATELIMIT_CHECK, RATELIMIT_UPDATE]}
+
+*** Keywords ***
+Recipient Test
+ [Arguments] ${from} ${rcpt} ${howmany}
+ FOR ${index} IN RANGE ${howmany}
+ Scan File ${HAM_MESSAGE}
+ ... From=${from}
+ ... IP=1.1.1.1
+ ... Settings=${SETTINGS_RATELIMIT}
+ ... Rcpt=${rcpt}
+ Expect Action no action
+ END
+ Scan File ${HAM_MESSAGE}
+ ... From=${from}
+ ... IP=1.1.1.1
+ ... Settings=${SETTINGS_RATELIMIT}
+ ... Rcpt=${rcpt}
+ Expect Action soft reject
+ Sleep 1s
+ Scan File ${HAM_MESSAGE}
+ ... From=${from}
+ ... IP=1.1.1.1
+ ... Settings=${SETTINGS_RATELIMIT}
+ ... Rcpt=${rcpt}
+ Expect Action no action
+
+*** Test Cases ***
+CHECK BASIC
+ Recipient Test ${EMPTY} foobar@example.net 4
+
+CHECK SELECTOR
+ Recipient Test foo@example.net special@example.net 2
diff --git a/test/functional/configs/ratelimit.conf b/test/functional/configs/ratelimit.conf
new file mode 100644
index 000000000..ab0c44b42
--- /dev/null
+++ b/test/functional/configs/ratelimit.conf
@@ -0,0 +1,20 @@
+.include(duplicate=append,priority=0) "{= env.TESTDIR =}/configs/plugins.conf"
+
+lua = "{= env.LUA_SCRIPT =}";
+redis {
+ servers = "{= env.REDIS_ADDR =}:{= env.REDIS_PORT =}";
+}
+
+ratelimit {
+ bounce_to_ip {
+ bucket {
+ burst = 4;
+ rate = "1 / 1s";
+ }
+ }
+ to_selector {
+ selector = "to:in{special@example.net}";
+ burst = 2;
+ rate = "1 / 1s";
+ }
+}