aboutsummaryrefslogtreecommitdiffstats
path: root/test/functional/cases/108_settings.robot
blob: d9301e2fa06cc30430335c2ec0e99d00900237b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
*** Settings ***
Suite Setup     Settings Setup
Suite Teardown  Settings Teardown
Library         ${TESTDIR}/lib/rspamd.py
Resource        ${TESTDIR}/lib/rspamd.robot
Variables       ${TESTDIR}/lib/vars.py

*** Variables ***
${CONFIG}       ${TESTDIR}/configs/plugins.conf
${LUA_SCRIPT}   ${TESTDIR}/lua/settings.lua
${MESSAGE}      ${TESTDIR}/messages/spam_message.eml
${MESSAGE_PRIORITY}      ${TESTDIR}/messages/priority.eml
${MESSAGE_7BIT}      ${TESTDIR}/messages/utf.eml
${MESSAGE_CUSTOM_HDR}      ${TESTDIR}/messages/empty-plain-text.eml
${MESSAGE_ABSENT_MIME}      ${TESTDIR}/messages/ed25519.eml
${SPAM_MESSAGE}      ${TESTDIR}/messages/spam.eml
${HAM_MESSAGE}      ${TESTDIR}/messages/ham.eml
${RSPAMD_SCOPE}  Suite
${URL_TLD}      ${TESTDIR}/../lua/unit/test_tld.dat

*** Test Cases ***
NO SETTINGS SPAM
  ${result} =  Scan Message With Rspamc  ${SPAM_MESSAGE}
  Check Rspamc  ${result}  SIMPLE_TEST
  Should Contain  ${result.stdout}  SIMPLE_VIRTUAL
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Contain  ${result.stdout}  SIMPLE_PRE
  Should Contain  ${result.stdout}  SIMPLE_POST
  Should Contain  ${result.stdout}  BAYES_SPAM

NO SETTINGS HAM
  ${result} =  Scan Message With Rspamc  ${HAM_MESSAGE}
  Check Rspamc  ${result}  SIMPLE_TEST
  Should Contain  ${result.stdout}  SIMPLE_PRE
  Should Contain  ${result.stdout}  SIMPLE_POST
  Should Contain  ${result.stdout}  BAYES_HAM

ENABLE SYMBOL - NORMAL
  ${result} =  Scan Message With Rspamc  ${HAM_MESSAGE}  --header  Settings={symbols_enabled = ["SIMPLE_TEST"]}
  Check Rspamc  ${result}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  BAYES_HAM

ENABLE SYMBOL - POSTFILTER
  ${result} =  Scan Message With Rspamc  ${HAM_MESSAGE}  --header  Settings={symbols_enabled = ["SIMPLE_TEST", "SIMPLE_POST"]}
  Check Rspamc  ${result}  SIMPLE_TEST
  Should Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  BAYES_HAM

ENABLE SYMBOL - PREFILTER
  ${result} =  Scan Message With Rspamc  ${HAM_MESSAGE}  --header  Settings={symbols_enabled = ["SIMPLE_PRE"]}
  Check Rspamc  ${result}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  BAYES_HAM

ENABLE SYMBOL - CLASSIFIER
  ${result} =  Scan Message With Rspamc  ${HAM_MESSAGE}  --header  Settings={symbols_enabled = ["BAYES_HAM", "BAYES_SPAM"]}
  Check Rspamc  ${result}  BAYES_HAM
  Should Not Contain  ${result.stdout}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_TEST

DISABLE SYMBOL - NORMAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings={symbols_disabled = ["SIMPLE_TEST"]}
  Check Rspamc  ${result}  SIMPLE_TEST  inverse=1
  Should Contain  ${result.stdout}  SIMPLE_PRE
  Should Contain  ${result.stdout}  SIMPLE_POST

RESCORE SYMBOL - NORMAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings={SIMPLE_TEST = 3.33}
  Check Rspamc  ${result}  SIMPLE_TEST (3.33)

INJECT SYMBOL - NORMAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings={symbols = ["INJECTED_SYMBOL1", "INJECTED_SYMBOL2"]}
  Check Rspamc  ${result}  INJECTED_SYMBOL1
  Should Contain  ${result.stdout}  INJECTED_SYMBOL2

RESCORE ACTION
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings={actions { reject = 1234.5; } }
  Check Rspamc  ${result}  ${SPACE}/ 1234.50

DISABLE GROUP - NORMAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings={groups_disabled = ["b"]}
  Check Rspamc  ${result}  SIMPLE_TEST  inverse=1
  Should Contain  ${result.stdout}  SIMPLE_PRE
  Should Contain  ${result.stdout}  SIMPLE_POST

ENABLE GROUP - NORMAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings={groups_enabled = ["b"]}
  Check Rspamc  ${result}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  SIMPLE_POST

SETTINGS ID - NORMAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings-Id=id_test
  Check Rspamc  ${result}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  SIMPLE_POST

SETTINGS ID - PRE
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings-Id=id_pre
  Check Rspamc  ${result}  SIMPLE_PRE
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_POST

SETTINGS ID - VIRTUAL
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings-Id=id_virtual
  Check Rspamc  ${result}  SIMPLE_VIRTUAL
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL GROUP
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings-Id=id_virtual_group
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL FROM
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --from  test2@example.com
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL USER
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --user  test@example.com
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL HOSTNAME
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --hostname  example.com
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL SELECTOR
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --rcpt  user3@example.com
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - ANGLED RECIPIENT
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --rcpt  <user3@example.com>
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL HEADER MATCH
  ${result} =  Scan Message With Rspamc  ${MESSAGE_7BIT}
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Contain  ${result.stdout}  EXPLICIT_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL HEADER EXISTS
  ${result} =  Scan Message With Rspamc  ${MESSAGE_CUSTOM_HDR}
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL HEADER ABSENT
  ${result} =  Scan Message With Rspamc  ${MESSAGE_ABSENT_MIME}
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL REQUEST HEADER
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Test=passed
  Check Rspamc  ${result}  SIMPLE_VIRTUAL (10
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL1
  Should Not Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

SETTINGS ID - VIRTUAL DEP
  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header  Settings-Id=id_virtual1
  Check Rspamc  ${result}  EXPLICIT_VIRTUAL1
  Should Contain  ${result.stdout}  DEP_VIRTUAL
  Should Contain  ${result.stdout}  DEP_REAL
  Should Not Contain  ${result.stdout}  SIMPLE_TEST
  Should Not Contain  ${result.stdout}  SIMPLE_VIRTUAL
  Should Not Contain  ${result.stdout}  SIMPLE_POST
  Should Not Contain  ${result.stdout}  SIMPLE_PRE

PRIORITY
  ${result} =  Scan Message With Rspamc  ${MESSAGE_PRIORITY}  --header  Settings-Id=id_virtual_group  --from  user@test.com
  Should Contain  ${result.stdout}  PRIORITY_2


*** Keywords ***
Settings Setup
  Copy File  ${TESTDIR}/data/bayes.spam.sqlite3  /tmp/bayes.spam.sqlite3
  Copy File  ${TESTDIR}/data/bayes.ham.sqlite3  /tmp/bayes.ham.sqlite3
  ${PLUGIN_CONFIG} =  Get File  ${TESTDIR}/configs/settings.conf
  Set Suite Variable  ${PLUGIN_CONFIG}
  Generic Setup  PLUGIN_CONFIG

Settings Teardown
  Normal Teardown