summaryrefslogtreecommitdiffstats
path: root/test/functional/cases/120_fuzzy/lib.robot
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/cases/120_fuzzy/lib.robot')
-rw-r--r--test/functional/cases/120_fuzzy/lib.robot181
1 files changed, 181 insertions, 0 deletions
diff --git a/test/functional/cases/120_fuzzy/lib.robot b/test/functional/cases/120_fuzzy/lib.robot
new file mode 100644
index 0000000..02e0a0a
--- /dev/null
+++ b/test/functional/cases/120_fuzzy/lib.robot
@@ -0,0 +1,181 @@
+*** Settings ***
+Library OperatingSystem
+Library ${RSPAMD_TESTDIR}/lib/rspamd.py
+Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot
+Variables ${RSPAMD_TESTDIR}/lib/vars.py
+
+*** Variables ***
+${CONFIG} ${RSPAMD_TESTDIR}/configs/fuzzy.conf
+${FLAG1_SYMBOL} R_TEST_FUZZY_DENIED
+${FLAG2_SYMBOL} R_TEST_FUZZY_WHITE
+${REDIS_SCOPE} Suite
+${RSPAMD_FLAG1_NUMBER} 50
+${RSPAMD_FLAG2_NUMBER} 51
+${RSPAMD_FUZZY_BACKEND} redis
+${RSPAMD_FUZZY_ENCRYPTED_ONLY} false
+${RSPAMD_FUZZY_ENCRYPTION_KEY} null
+${RSPAMD_FUZZY_INCLUDE} ${RSPAMD_TESTDIR}/configs/empty.conf
+${RSPAMD_FUZZY_KEY} null
+${RSPAMD_FUZZY_SHINGLES_KEY} null
+${RSPAMD_SCOPE} Suite
+${SETTINGS_FUZZY_CHECK} ${EMPTY}
+${SETTINGS_FUZZY_WORKER} ${EMPTY}
+@{MESSAGES_SKIP} ${RSPAMD_TESTDIR}/messages/priority.eml
+@{MESSAGES} ${RSPAMD_TESTDIR}/messages/spam_message.eml ${RSPAMD_TESTDIR}/messages/zip.eml
+@{RANDOM_MESSAGES} ${RSPAMD_TESTDIR}/messages/bad_message.eml ${RSPAMD_TESTDIR}/messages/zip-doublebad.eml
+
+*** Keywords ***
+Fuzzy Skip Add Test Base
+ [Arguments] ${message}
+ Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 0
+ ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} -w 10 -f
+ ... ${RSPAMD_FLAG1_NUMBER} fuzzy_add ${message}
+ Check Rspamc ${result}
+ Sync Fuzzy Storage
+ Scan File ${message}
+ Expect Symbol R_TEST_FUZZY_DENIED
+ Create File ${RSPAMD_TMPDIR}/skip_hash.map.tmp 2d875d4737c59c4822fd01dadeba52a329de3933f766c6f167904c6a426bbfa7ea63a66bf807b25c5ee853baee58bfb18d3b423fcd13cfa7c3d77a840039a1ea
+ Move File ${RSPAMD_TMPDIR}/skip_hash.map.tmp ${RSPAMD_TMPDIR}/skip_hash.map
+ Sleep 1s Wait for reload
+ Scan File ${message}
+ Do Not Expect Symbol R_TEST_FUZZY_DENIED
+
+Fuzzy Add Test
+ [Arguments] ${message}
+ Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 0
+ ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} -w 10 -f
+ ... ${RSPAMD_FLAG1_NUMBER} fuzzy_add ${message}
+ Check Rspamc ${result}
+ Sync Fuzzy Storage
+ Scan File ${message}
+ Expect Symbol ${FLAG1_SYMBOL}
+ Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 1
+
+Fuzzy Delete Test
+ [Arguments] ${message}
+ IF ${RSPAMD_FUZZY_ADD_${message}} == 0
+ Fail "Fuzzy Add was not run"
+ END
+ ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} -f ${RSPAMD_FLAG1_NUMBER} fuzzy_del
+ ... ${message}
+ Check Rspamc ${result}
+ Sync Fuzzy Storage
+ Scan File ${message}
+ Do Not Expect Symbol ${FLAG1_SYMBOL}
+
+Fuzzy Fuzzy Test
+ [Arguments] ${message}
+ IF ${RSPAMD_FUZZY_ADD_${message}} != 1
+ Fail "Fuzzy Add was not run"
+ END
+ @{path_info} = Path Splitter ${message}
+ @{fuzzy_files} = List Files In Directory ${pathinfo}[0] pattern=${pathinfo}[1].fuzzy* absolute=1
+ FOR ${i} IN @{fuzzy_files}
+ Scan File ${i}
+ Expect Symbol ${FLAG1_SYMBOL}
+ END
+
+Fuzzy Miss Test
+ [Arguments] ${message}
+ Scan File ${message}
+ Do Not Expect Symbol ${FLAG1_SYMBOL}
+
+Fuzzy Overwrite Test
+ [Arguments] ${message}
+ ${flag_numbers} = Create List ${RSPAMD_FLAG1_NUMBER} ${RSPAMD_FLAG2_NUMBER}
+ FOR ${i} IN @{flag_numbers}
+ ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} -w 10
+ ... -f ${i} fuzzy_add ${message}
+ Check Rspamc ${result}
+ END
+ Sync Fuzzy Storage
+ Scan File ${message}
+ Do Not Expect Symbol ${FLAG1_SYMBOL}
+ Expect Symbol ${FLAG2_SYMBOL}
+
+Fuzzy Setup Encrypted
+ [Arguments] ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_ENCRYPTED_ONLY} true
+ Set Suite Variable ${RSPAMD_FUZZY_ENCRYPTION_KEY} ${RSPAMD_KEY_PUB1}
+ Set Suite Variable ${RSPAMD_FUZZY_INCLUDE} ${RSPAMD_TESTDIR}/configs/fuzzy-encryption-key.conf
+ Rspamd Redis Setup
+
+Fuzzy Setup Encrypted Keyed
+ [Arguments] ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_ENCRYPTED_ONLY} true
+ Set Suite Variable ${RSPAMD_FUZZY_ENCRYPTION_KEY} ${RSPAMD_KEY_PUB1}
+
+ Set Suite Variable ${RSPAMD_FUZZY_KEY} mYN888sydwLTfE32g2hN
+ Set Suite Variable ${RSPAMD_FUZZY_SHINGLES_KEY} hXUCgul9yYY3Zlk1QIT2
+ Rspamd Redis Setup
+
+Fuzzy Setup Plain
+ [Arguments] ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} ${algorithm}
+ Rspamd Redis Setup
+
+Fuzzy Setup Keyed
+ [Arguments] ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_ALGORITHM} ${algorithm}
+ Set Suite Variable ${RSPAMD_FUZZY_KEY} mYN888sydwLTfE32g2hN
+ Set Suite Variable ${RSPAMD_FUZZY_SHINGLES_KEY} hXUCgul9yYY3Zlk1QIT2
+ Rspamd Redis Setup
+
+Fuzzy Setup Plain Fasthash
+ Fuzzy Setup Plain fasthash
+
+Fuzzy Setup Plain Mumhash
+ Fuzzy Setup Plain mumhash
+
+Fuzzy Setup Plain Siphash
+ Fuzzy Setup Plain siphash
+
+Fuzzy Setup Plain Xxhash
+ Fuzzy Setup Plain xxhash
+
+Fuzzy Setup Keyed Fasthash
+ Fuzzy Setup Keyed fasthash
+
+Fuzzy Setup Keyed Mumhash
+ Fuzzy Setup Keyed mumhash
+
+Fuzzy Setup Keyed Siphash
+ Fuzzy Setup Keyed siphash
+
+Fuzzy Setup Keyed Xxhash
+ Fuzzy Setup Keyed xxhash
+
+Fuzzy Setup Encrypted Siphash
+ Fuzzy Setup Encrypted siphash
+
+Fuzzy Skip Hash Test Message
+ FOR ${i} IN @{MESSAGES_SKIP}
+ Fuzzy Skip Add Test Base ${i}
+ END
+
+Fuzzy Multimessage Add Test
+ FOR ${i} IN @{MESSAGES}
+ Fuzzy Add Test ${i}
+ END
+
+Fuzzy Multimessage Fuzzy Test
+ FOR ${i} IN @{MESSAGES}
+ Fuzzy Fuzzy Test ${i}
+ END
+
+Fuzzy Multimessage Miss Test
+ FOR ${i} IN @{RANDOM_MESSAGES}
+ Fuzzy Miss Test ${i}
+ END
+
+Fuzzy Multimessage Delete Test
+ FOR ${i} IN @{MESSAGES}
+ Fuzzy Delete Test ${i}
+ END
+
+Fuzzy Multimessage Overwrite Test
+ FOR ${i} IN @{MESSAGES}
+ Fuzzy Overwrite Test ${i}
+ END