]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Add options in composites tests
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 15 Aug 2019 14:49:58 +0000 (15:49 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 15 Aug 2019 14:49:58 +0000 (15:49 +0100)
test/functional/cases/109_composites.robot
test/functional/configs/composites.conf
test/functional/lua/composites.lua

index d24c505e94d4692be501310260cb5e1b6c0db494..1216e4c88ea6a103d9f8e64ecc6defbfb551e519 100644 (file)
@@ -63,3 +63,23 @@ Composites - Symbol groups
   Should Contain  ${result.stdout}  ANY_A (-1.00)
   Should Contain  ${result.stdout}  NEGATIVE_B (1.00)
   Should Not Contain  ${result.stdout}  NEGATIVE_A
+
+Composites - Opts Plain
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header=opts:sym1
+  Check Rspamc  ${result}  SYMOPTS1 (5.00)
+  Should Not Contain  ${result.stdout}  SYMOPTS2
+
+Composites - Opts RE Miss one
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header=opts:sym1,foo1
+  Check Rspamc  ${result}  SYMOPTS1 (5.00)
+  Should Not Contain  ${result.stdout}  SYMOPTS2
+
+Composites - Opts RE Miss both
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header=opts:sym2
+  Should Not Contain  ${result.stdout}  SYMOPTS1
+  Should Not Contain  ${result.stdout}  SYMOPTS2
+
+Composites - Opts RE Hit
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --header=opts:sym2,foo1
+  Check Rspamc  ${result}  SYMOPTS2 (6.00)
+  Should Not Contain  ${result.stdout}  SYMOPTS1
\ No newline at end of file
index 8b79d5ae7fcb86bbcbdb9dd207d59a7729c77425..932b25fc1e41b68de5d15232d5ba853074b0b841 100644 (file)
@@ -66,4 +66,14 @@ composites {
         expression = "!g+:positive & g-:negative & -g:any";
         score = 5.0;
     }
+
+    SYMOPTS1 {
+      expression = "OPTS[sym1]";
+      score = 5.0;
+    }
+
+    SYMOPTS2 {
+      expression = "OPTS[/foo.*/,sym2]";
+      score = 6.0;
+    }
 }
index 66d595cd8b21da555e4c0a8baf14633b8f07b10e..648eda0ff290dcd8875e836d0849ad22bbe3ee2f 100644 (file)
@@ -124,3 +124,17 @@ rspamd_config:register_symbol({
     return true, 'Fires always'
   end
 })
+
+rspamd_config:register_symbol({
+  name = 'OPTS',
+  score = -1.0,
+  group = "any",
+  callback = function(task)
+    local lua_util = require "lua_util"
+    local woot = lua_util.str_split(tostring(task:get_request_header('opts') or ''), ',')
+
+    if woot and #woot > 0 and #woot[1] > 0 then
+      return true, 1.0, woot
+    end
+  end
+})