]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Add test for pre & post filters
authorAndrew Lewis <nerf@judo.za.org>
Sun, 17 Jul 2016 20:06:31 +0000 (21:06 +0100)
committerAndrew Lewis <nerf@judo.za.org>
Sun, 17 Jul 2016 20:06:31 +0000 (21:06 +0100)
test/functional/cases/lua.robot
test/functional/lua/prepostfilters.lua [new file with mode: 0644]

index f3a3567eccc47d59c7b8421cb47684a60d302d6c..5e5dff6c8853ea0c41417735579ee2f98d297fc5 100644 (file)
@@ -22,6 +22,12 @@ Dependencies
   ${result} =  Scan Message With Rspamc  ${MESSAGE}
   Check Rspamc  ${result}  DEP10
 
+Pre and Post Filters
+  [Setup]  Lua Setup  ${TESTDIR}/lua/prepostfilters.lua
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}
+  Check Rspamc  ${result}  TEST_PRE
+  Check Rspamc  ${result}  TEST_POST  rc_nocheck=1
+
 *** Keywords ***
 Lua Setup
   [Arguments]  ${LUA_SCRIPT}
diff --git a/test/functional/lua/prepostfilters.lua b/test/functional/lua/prepostfilters.lua
new file mode 100644 (file)
index 0000000..4f14d02
--- /dev/null
@@ -0,0 +1,65 @@
+for i = 1,10 do
+  local name = string.format('DEP_TEST%d', i)
+  local dep_name = string.format('DEP_TEST%d', i - 1)
+  rspamd_config:register_symbol({
+    type = 'normal',
+    name = name,
+    callback = function(task)
+      local function dns_cb()
+        if i ~= 1 then
+          if task:has_symbol(dep_name) then
+            task:insert_result(name, 1.0)
+          end
+        else
+          task:insert_result(name, 1.0)
+        end
+      end
+      if task:has_symbol('TEST_PRE') then
+        local r = task:get_resolver()
+        r:resolve_a(task:get_session(), task:get_mempool(), 'example.com', dns_cb)
+      end
+    end
+  })
+
+  if i ~= 1 then
+    rspamd_config:register_dependency(name, dep_name)
+  end
+
+  rspamd_config:set_metric_symbol({
+    name = name,
+    score = 1.0
+  })
+end
+
+
+rspamd_config:register_symbol({
+  type = 'postfilter',
+  name = 'TEST_POST',
+  callback = function(task)
+    for i = 1,10 do
+      local name = string.format('DEP_TEST%d', i)
+      if not task:has_symbol(name) then
+        return
+      end
+    end
+    if task:has_symbol('TEST_PRE') then
+      task:insert_result('TEST_POST', 1.0)
+    end
+  end
+})
+rspamd_config:set_metric_symbol({
+  name = 'TEST_POST',
+  score = 1.0
+})
+
+rspamd_config:register_symbol({
+  type = 'prefilter',
+  name = 'TEST_PRE',
+  callback = function(task)
+    task:insert_result('TEST_PRE', 1.0)
+  end
+})
+rspamd_config:set_metric_symbol({
+  name = 'TEST_PRE',
+  score = 1.0
+})