You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

selectors.negative.lua 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. local msg
  2. context("Selectors test", function()
  3. local rspamd_task = require "rspamd_task"
  4. local logger = require "rspamd_logger"
  5. local lua_selectors = require "lua_selectors"
  6. local ffi = require "ffi"
  7. local cfg = rspamd_config
  8. local task
  9. ffi.cdef[[
  10. void rspamd_url_init (const char *tld_file);
  11. ]]
  12. local test_dir = string.gsub(debug.getinfo(1).source, "^@(.+/)[^/]+$", "%1")
  13. ffi.C.rspamd_url_init(string.format('%s/%s', test_dir, "test_tld.dat"))
  14. before(function()
  15. local res
  16. res,task = rspamd_task.load_from_string(msg, cfg)
  17. task:set_from_ip("198.172.22.91")
  18. task:set_user("cool user name")
  19. task:set_helo("hello mail")
  20. task:set_request_header("hdr1", "value1")
  21. task:process_message()
  22. task:get_mempool():set_variable("int_var", 1)
  23. task:get_mempool():set_variable("str_var", "str 1")
  24. if not res then
  25. assert_true(false, "failed to load message")
  26. end
  27. end)
  28. local function check_selector(selector_string)
  29. local sels = lua_selectors.parse_selector(cfg, selector_string)
  30. local elts = lua_selectors.process_selectors(task, sels)
  31. return elts
  32. end
  33. -- Selectors which should not be parse
  34. local cases = {
  35. ["random string"] = {
  36. selector = "'xxx'"},
  37. ["random nonsense"] = {
  38. selector = "13 / sd 42 x"},
  39. ["unknown selector"] = {
  40. selector = "unknownselector"},
  41. ["unknown transformation"] = {
  42. selector = "urls.somethingnew"},
  43. }
  44. for case_name, case in pairs(cases) do
  45. test("case " .. case_name, function()
  46. local sels = lua_selectors.parse_selector(cfg, case.selector)
  47. print(logger.slog("%1", sels))
  48. assert_nil(sels)
  49. end)
  50. end
  51. end)
  52. --[=========[ ******************* message ******************* ]=========]
  53. msg = [[
  54. Received: from ca-18-193-131.service.infuturo.it ([151.18.193.131] helo=User)
  55. by server.chat-met-vreemden.nl with esmtpa (Exim 4.76)
  56. (envelope-from <upwest201diana@outlook.com>)
  57. id 1ZC1sl-0006b4-TU; Mon, 06 Jul 2015 10:36:08 +0200
  58. From: <whoknows@nowhere.com>
  59. To: <nobody@example.com>, <no-one@example.com>
  60. Date: Wed, 19 Sep 2018 14:36:51 +0100 (BST)
  61. subject: Second, lower-cased header subject
  62. Subject: Test subject
  63. Content-Type: multipart/alternative;
  64. boundary="_000_6be055295eab48a5af7ad4022f33e2d0_"
  65. --_000_6be055295eab48a5af7ad4022f33e2d0_
  66. Content-Type: text/plain; charset="utf-8"
  67. Content-Transfer-Encoding: base64
  68. Hello world
  69. --_000_6be055295eab48a5af7ad4022f33e2d0_
  70. Content-Type: text/html; charset="utf-8"
  71. <html><body>
  72. <a href="http://example.net">http://example.net</a>
  73. <a href="mailto:test@example.net">mail me</a>
  74. </html>
  75. --_000_6be055295eab48a5af7ad4022f33e2d0_
  76. Content-Type: application/zip; name=f.zip
  77. Content-Disposition: attachment; size=166; filename=f.zip
  78. Content-Transfer-Encoding: base64
  79. UEsDBAoAAAAAAINe6kgAAAAAAAAAAAAAAAAIABwAZmFrZS5leGVVVAkAA8YaglfGGoJXdXgLAAEE
  80. 6AMAAAToAwAAUEsBAh4DCgAAAAAAg17qSAAAAAAAAAAAAAAAAAgAGAAAAAAAAAAAALSBAAAAAGZh
  81. a2UuZXhlVVQFAAPGGoJXdXgLAAEE6AMAAAToAwAAUEsFBgAAAAABAAEATgAAAEIAAAAAAA==
  82. --_000_6be055295eab48a5af7ad4022f33e2d0_
  83. Content-Type: application/zip; name=f.zip
  84. Content-Disposition: attachment; size=166; filename=f2.zip
  85. Content-Transfer-Encoding: base64
  86. UEsDBAoAAAAAAINe6kgAAAAAAAAAAAAAAAAIABwAZmFrZS5leGVVVAkAA8YaglfGGoJXdXgLAAEE
  87. 6AMAAAToAwAAUEsBAh4DCgAAAAAAg17qSAAAAAAAAAAAAAAAAAgAGAAAAAAAAAAAALSBAAAAAGZh
  88. a2UuZXhlVVQFAAPGGoJXdXgLAAEE6AMAAAToAwAAUEsFBgAAAAABAAEATgAAAEIAAAAAAA==
  89. ]]