1*** Settings *** 2Suite Teardown Antivirus Teardown 3Library Process 4Library ${RSPAMD_TESTDIR}/lib/rspamd.py 5Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot 6Variables ${RSPAMD_TESTDIR}/lib/vars.py 7 8*** Variables *** 9${MESSAGE2} ${RSPAMD_TESTDIR}/messages/freemail.eml 10${MESSAGE} ${RSPAMD_TESTDIR}/messages/spam_message.eml 11${SETTINGS_AVAST} {symbols_enabled = [AVAST_VIRUS]} 12${SETTINGS_CLAM} {symbols_enabled = [CLAM_VIRUS]} 13${SETTINGS_FPROT} {symbols_enabled = [FPROT_VIRUS, FPROT2_VIRUS_DUPLICATE_DEFAULT]} 14 15*** Test Cases *** 16CLAMAV MISS 17 Run Dummy Clam ${RSPAMD_PORT_CLAM} 18 Scan File ${MESSAGE} 19 ... Settings=${SETTINGS_CLAM} 20 Do Not Expect Symbol CLAM_VIRUS 21 Shutdown clamav 22 23CLAMAV HIT 24 Run Dummy Clam ${RSPAMD_PORT_CLAM} 1 25 Scan File ${MESSAGE2} 26 ... Settings=${SETTINGS_CLAM} 27 Expect Symbol CLAM_VIRUS 28 Do Not Expect Symbol CLAMAV_VIRUS_FAIL 29 Shutdown clamav 30 31CLAMAV CACHE HIT 32 Scan File ${MESSAGE2} 33 ... Settings=${SETTINGS_CLAM} 34 Expect Symbol CLAM_VIRUS 35 Do Not Expect Symbol CLAMAV_VIRUS_FAIL 36 37CLAMAV CACHE MISS 38 Scan File ${MESSAGE} 39 ... Settings=${SETTINGS_CLAM} 40 Do Not Expect Symbol CLAM_VIRUS 41 Do Not Expect Symbol CLAMAV_VIRUS_FAIL 42 43FPROT MISS 44 Run Dummy Fprot ${RSPAMD_PORT_FPROT} 45 Scan File ${MESSAGE2} 46 ... Settings=${SETTINGS_FPROT} 47 Do Not Expect Symbol FPROT_VIRUS 48 Do Not Expect Symbol FPROT_EICAR 49 Shutdown fport 50 51FPROT HIT - PATTERN 52 Run Dummy Fprot ${RSPAMD_PORT_FPROT} 1 53 Run Dummy Fprot ${RSPAMD_PORT_FPROT2_DUPLICATE} 1 /tmp/dummy_fprot_dupe.pid 54 Scan File ${MESSAGE} 55 ... Settings=${SETTINGS_FPROT} 56 Expect Symbol FPROT_EICAR 57 # Also check ordered pattern match 58 Expect Symbol FPROT2_VIRUS_DUPLICATE_PATTERN 59 Do Not Expect Symbol FPROT2_VIRUS_DUPLICATE_DEFAULT 60 Do Not Expect Symbol FPROT2_VIRUS_DUPLICATE_NOPE 61 Shutdown fport 62 Shutdown fport duplicate 63 64FPROT CACHE HIT 65 Scan File ${MESSAGE} 66 ... Settings=${SETTINGS_FPROT} 67 Expect Symbol FPROT_EICAR 68 Do Not Expect Symbol CLAMAV_VIRUS 69 # Also check ordered pattern match 70 Expect Symbol FPROT2_VIRUS_DUPLICATE_PATTERN 71 Do Not Expect Symbol FPROT2_VIRUS_DUPLICATE_DEFAULT 72 73FPROT CACHE MISS 74 Scan File ${MESSAGE2} 75 ... Settings=${SETTINGS_FPROT} 76 Do Not Expect Symbol FPROT_VIRUS 77 78AVAST MISS 79 Run Dummy Avast ${RSPAMD_PORT_AVAST} 80 Scan File ${MESSAGE} 81 ... Settings=${SETTINGS_AVAST} 82 Do Not Expect Symbol AVAST_VIRUS 83 Shutdown avast 84 85AVAST HIT 86 Run Dummy Avast ${RSPAMD_PORT_AVAST} 1 87 Scan File ${MESSAGE2} 88 ... Settings=${SETTINGS_AVAST} 89 Expect Symbol AVAST_VIRUS 90 Do Not Expect Symbol AVAST_VIRUS_FAIL 91 Shutdown avast 92 93AVAST CACHE HIT 94 Scan File ${MESSAGE2} 95 ... Settings=${SETTINGS_AVAST} 96 Expect Symbol AVAST_VIRUS 97 Do Not Expect Symbol AVAST_VIRUS_FAIL 98 99AVAST CACHE MISS 100 Scan File ${MESSAGE} 101 ... Settings=${SETTINGS_AVAST} 102 Do Not Expect Symbol AVAST_VIRUS 103 Do Not Expect Symbol AVAST_VIRUS_FAIL 104 105*** Keywords *** 106Antivirus Teardown 107 Shutdown clamav 108 Shutdown fport 109 Shutdown avast 110 111Shutdown clamav 112 ${clamav_pid} = Get File if exists /tmp/dummy_clamav.pid 113 Run Keyword if ${clamav_pid} Shutdown Process With Children ${clamav_pid} 114 115Shutdown fport 116 ${fport_pid} = Get File if exists /tmp/dummy_fprot.pid 117 Run Keyword if ${fport_pid} Shutdown Process With Children ${fport_pid} 118 119Shutdown fport duplicate 120 ${fport_pid} = Get File if exists /tmp/dummy_fprot_dupe.pid 121 Run Keyword if ${fport_pid} Shutdown Process With Children ${fport_pid} 122 123Shutdown avast 124 ${avast_pid} = Get File if exists /tmp/dummy_avast.pid 125 Run Keyword if ${avast_pid} Shutdown Process With Children ${avast_pid} 126 127Run Dummy 128 [Arguments] @{varargs} 129 ${process} = Start Process @{varargs} 130 ${pid} = Get From List ${varargs} -1 131 ${pass} = Run Keyword And Return Status Wait Until Created ${pid} 132 Run Keyword If ${pass} Return From Keyword 133 Wait For Process ${process} 134 ${res} = Get Process Result ${process} 135 Log To Console ${res.stdout} 136 Log To Console ${res.stderr} 137 Fail Dummy server failed to start 138 139Run Dummy Clam 140 [Arguments] ${port} ${found}= ${pid}=/tmp/dummy_clamav.pid 141 Run Dummy ${RSPAMD_TESTDIR}/util/dummy_clam.py ${port} ${found} ${pid} 142 143Run Dummy Fprot 144 [Arguments] ${port} ${found}= ${pid}=/tmp/dummy_fprot.pid 145 Run Dummy ${RSPAMD_TESTDIR}/util/dummy_fprot.py ${port} ${found} ${pid} 146 147Run Dummy Avast 148 [Arguments] ${port} ${found}= ${pid}=/tmp/dummy_avast.pid 149 Run Dummy ${RSPAMD_TESTDIR}/util/dummy_avast.py ${port} ${found} ${pid} 150