]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Add tests for ratelimit module 5048/head
authorAndrew Lewis <nerf@judo.za.org>
Wed, 10 Jul 2024 12:46:34 +0000 (14:46 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Wed, 10 Jul 2024 12:46:34 +0000 (14:46 +0200)
test/functional/cases/500_ratelimit.conf [new file with mode: 0644]
test/functional/configs/ratelimit.conf [new file with mode: 0644]

diff --git a/test/functional/cases/500_ratelimit.conf b/test/functional/cases/500_ratelimit.conf
new file mode 100644 (file)
index 0000000..425df34
--- /dev/null
@@ -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 (file)
index 0000000..ab0c44b
--- /dev/null
@@ -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";
+  }
+}