]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Beginning of tests for milter 2007/head
authorAndrew Lewis <nerf@judo.za.org>
Tue, 30 Jan 2018 15:06:35 +0000 (17:06 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Tue, 30 Jan 2018 15:06:35 +0000 (17:06 +0200)
.luacheckrc
circle.yml
test/functional/cases/180_milter.robot [new file with mode: 0644]
test/functional/configs/milter.conf [new file with mode: 0644]
test/functional/lua/miltertest/mt1.lua [new file with mode: 0644]

index 57a9c558264b37f210b165b947087e500c02650f..8a3240b12162ff186701cbeea9460e6054de0805 100644 (file)
@@ -4,6 +4,7 @@ std = 'min'
 exclude_files = {
   '/**/contrib/**',
   '/**/test/lua/**',
+  '/**/test/functional/lua/miltertest/**',
 }
 
 globals = {
index cc1d20479b30e24a7133bcff79023d1a586f7491..0875e5c93c70626fd9bd549c402fedc68f996f50 100644 (file)
@@ -1,7 +1,7 @@
 dependencies:
     pre:
       - sudo apt-get update -qq || true
-      - sudo apt-get install -qq cmake gcc lcov libevent-dev libglib2.0-dev libgmime-2.6-dev libluajit-5.1-dev liblua5.1-0-dev libmagic-dev libpcre3-dev libsqlite3-dev libssl-dev luarocks make python-dev ragel redis-server libgd-dev libfann-dev
+      - sudo apt-get install -qq cmake gcc lcov libevent-dev libglib2.0-dev libgmime-2.6-dev libluajit-5.1-dev liblua5.1-0-dev libmagic-dev libpcre3-dev libsqlite3-dev libssl-dev luarocks make python-dev ragel redis-server libgd-dev libfann-dev opendkim-tools
       - gem install coveralls-lcov
       - sudo pip install demjson psutil robotframework
       - cd .. && wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make -j`nproc` && sudo cp src/redis-cli /usr/bin/
diff --git a/test/functional/cases/180_milter.robot b/test/functional/cases/180_milter.robot
new file mode 100644 (file)
index 0000000..b597914
--- /dev/null
@@ -0,0 +1,23 @@
+*** Settings ***
+Suite Setup     Milter Setup
+Suite Teardown  Generic Teardown
+Library         Process
+Library         ${TESTDIR}/lib/rspamd.py
+Resource        ${TESTDIR}/lib/rspamd.robot
+Variables       ${TESTDIR}/lib/vars.py
+
+*** Variables ***
+${RSPAMD_SCOPE}  Suite
+${URL_TLD}       ${TESTDIR}/../lua/unit/test_tld.dat
+
+*** Test Cases ***
+SIMPLE MILTER TEST
+  ${result} =  Run Process  miltertest  -Dport\=${PORT_PROXY}  -Dhost\=${LOCAL_ADDR}  -s  ${TESTDIR}/lua/miltertest/mt1.lua
+  Follow Rspamd Log
+  Should Match Regexp  ${result.stderr}  ^$
+  Should Match Regexp  ${result.stdout}  ^$
+  Should Be Equal As Integers  ${result.rc}  0  msg=${result.stdout}  values=false
+
+*** Keywords ***
+Milter Setup
+  Generic Setup  CONFIG=${TESTDIR}/configs/milter.conf
diff --git a/test/functional/configs/milter.conf b/test/functional/configs/milter.conf
new file mode 100644 (file)
index 0000000..306ad51
--- /dev/null
@@ -0,0 +1,58 @@
+options = {
+       filters = ["spf", "dkim", "regexp"]
+       url_tld = "${URL_TLD}"
+       pidfile = "${TMPDIR}/rspamd.pid"
+       lua_path = "${INSTALLROOT}/share/rspamd/lib/?.lua"
+       dns {
+               nameserver = ["8.8.8.8", "8.8.4.4"];
+               retransmits = 10;
+               timeout = 2s;
+       }
+}
+logging = {
+       type = "file",
+       level = "debug"
+       filename = "${TMPDIR}/rspamd.log"
+}
+metric = {
+       name = "default",
+       actions = {
+               reject = 100500,
+       }
+       unknown_weight = 1
+}
+worker {
+       type = normal
+       bind_socket = ${LOCAL_ADDR}:${PORT_NORMAL}
+       count = 1
+       task_timeout = 60s;
+}
+worker {
+        type = controller
+        bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER}
+        count = 1
+        secure_ip = ["127.0.0.1", "::1"];
+        stats_path = "${TMPDIR}/stats.ucl"
+}
+worker {
+       type = "rspamd_proxy";
+       count = 1;
+       timeout = 120;
+       upstream {
+               local {
+                       hosts = "${LOCAL_ADDR}:${PORT_NORMAL}";
+                       default = true;
+               }
+       }
+       bind_socket = "${LOCAL_ADDR}:${PORT_PROXY}";
+       milter = true;
+}
+modules {
+    path = "${TESTDIR}/../../src/plugins/lua/"
+}
+lua = "${INSTALLROOT}/share/rspamd/rules/rspamd.lua"
+milter_headers {
+       extended_spam_headers = true;
+       skip_local = false;
+       skip_authenticated = false;
+}
diff --git a/test/functional/lua/miltertest/mt1.lua b/test/functional/lua/miltertest/mt1.lua
new file mode 100644 (file)
index 0000000..a6f6722
--- /dev/null
@@ -0,0 +1,59 @@
+-- Test one simple interaction
+
+conn = mt.connect("inet:" .. port .. "@" .. host)
+if conn == nil then
+  error "mt.connect() failed"
+end
+if mt.conninfo(conn, "localhost", "127.0.0.1") then
+  error "mt.conninfo() failed"
+end
+if mt.getreply(conn) ~= SMFIR_CONTINUE then
+  error "mt.conninfo() unexpected reply"
+end
+
+if mt.helo(conn, "it.is.i") then
+  error "mt.helo() failed"
+end
+if mt.getreply(conn) ~= SMFIR_CONTINUE then
+  error "mt.helo() unexpected reply"
+end
+mt.macro(conn, SMFIC_MAIL, "i", "test-id")
+if mt.mailfrom(conn, "sender@example.com") then
+  error "mt.mailfrom() failed"
+end
+if mt.getreply(conn) ~= SMFIR_CONTINUE then
+  error "mt.mailfrom() unexpected reply"
+end
+mt.rcptto(conn, "rcpt@example.com")
+
+if mt.header(conn, "From", "honest@sender") then
+  error "mt.header(From) failed"
+end
+
+if mt.getreply(conn) ~= SMFIR_CONTINUE then
+  error "mt.header(From) unexpected reply"
+end
+
+if mt.eoh(conn) then
+  error "mt.eoh() failed"
+end
+
+if mt.getreply(conn) ~= SMFIR_CONTINUE then
+  error "mt.eoh() unexpected reply"
+end
+
+if mt.bodystring(conn, "This is a simple test!\r\n") then
+  error "mt.bodystring() failed"
+end
+if mt.getreply(conn) ~= SMFIR_CONTINUE then
+  error "mt.bodystring() unexpected reply"
+end
+
+if mt.eom(conn) then
+  error "mt.eom() failed"
+end
+if mt.getreply(conn) ~= SMFIR_ACCEPT then
+  error "mt.eom() unexpected reply"
+end
+
+mt.disconnect(conn)