From bf66ae7777fb8d087fe37c0052bdca1b724cb0a1 Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Wed, 10 Jul 2024 14:46:34 +0200 Subject: [PATCH] [Test] Add tests for ratelimit module --- test/functional/cases/500_ratelimit.conf | 44 ++++++++++++++++++++++++ test/functional/configs/ratelimit.conf | 20 +++++++++++ 2 files changed, 64 insertions(+) create mode 100644 test/functional/cases/500_ratelimit.conf create mode 100644 test/functional/configs/ratelimit.conf 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"; + } +} -- 2.39.5