aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/cases/160_antivirus.robot33
-rw-r--r--test/functional/configs/antivirus.conf6
-rw-r--r--test/functional/lib/vars.py1
-rwxr-xr-xtest/functional/util/dummy_avast.py55
4 files changed, 95 insertions, 0 deletions
diff --git a/test/functional/cases/160_antivirus.robot b/test/functional/cases/160_antivirus.robot
index c34121dfd..a3e807917 100644
--- a/test/functional/cases/160_antivirus.robot
+++ b/test/functional/cases/160_antivirus.robot
@@ -70,6 +70,29 @@ FPROT CACHE MISS
${result} = Scan Message With Rspamc ${MESSAGE2}
Check Rspamc ${result} FPROT_VIRUS inverse=1
+AVAST MISS
+ Run Dummy Avast ${PORT_AVAST}
+ ${result} = Scan Message With Rspamc ${MESSAGE}
+ Check Rspamc ${result} AVAST_VIRUS inverse=1
+ Shutdown avast
+
+AVAST HIT
+ Run Dummy Avast ${PORT_AVAST} 1
+ ${result} = Scan Message With Rspamc ${MESSAGE2}
+ Check Rspamc ${result} AVAST_VIRUS
+ Should Not Contain ${result.stdout} AVAST_VIRUS_FAIL
+ Shutdown avast
+
+AVAST CACHE HIT
+ ${result} = Scan Message With Rspamc ${MESSAGE2}
+ Check Rspamc ${result} AVAST_VIRUS
+ Should Not Contain ${result.stdout} AVAST_VIRUS_FAIL
+
+AVAST CACHE MISS
+ ${result} = Scan Message With Rspamc ${MESSAGE}
+ Check Rspamc ${result} AVAST_VIRUS inverse=1
+ Should Not Contain ${result.stdout} AVAST_VIRUS_FAIL
+
*** Keywords ***
Antivirus Setup
${PLUGIN_CONFIG} = Get File ${TESTDIR}/configs/antivirus.conf
@@ -82,6 +105,7 @@ Antivirus Teardown
Shutdown Process With Children ${REDIS_PID}
Shutdown clamav
Shutdown fport
+ Shutdown avast
Terminate All Processes kill=True
Shutdown clamav
@@ -96,6 +120,10 @@ Shutdown fport duplicate
${fport_pid} = Get File if exists /tmp/dummy_fprot_dupe.pid
Run Keyword if ${fport_pid} Shutdown Process With Children ${fport_pid}
+Shutdown avast
+ ${avast_pid} = Get File if exists /tmp/dummy_avast.pid
+ Run Keyword if ${avast_pid} Shutdown Process With Children ${avast_pid}
+
Run Dummy Clam
[Arguments] ${port} ${found}=
${result} = Start Process ${TESTDIR}/util/dummy_clam.py ${port} ${found}
@@ -105,3 +133,8 @@ Run Dummy Fprot
[Arguments] ${port} ${found}= ${pid}=/tmp/dummy_fprot.pid
Start Process ${TESTDIR}/util/dummy_fprot.py ${port} ${found} ${pid}
Wait Until Created ${pid}
+
+Run Dummy Avast
+ [Arguments] ${port} ${found}=
+ ${result} = Start Process ${TESTDIR}/util/dummy_avast.py ${port} ${found}
+ Wait Until Created /tmp/dummy_avast.pid
diff --git a/test/functional/configs/antivirus.conf b/test/functional/configs/antivirus.conf
index 9aba7bb64..d38c69a42 100644
--- a/test/functional/configs/antivirus.conf
+++ b/test/functional/configs/antivirus.conf
@@ -32,4 +32,10 @@ antivirus {
FPROT2_VIRUS_DUPLICATE_NOPE5 = "^EICAR_"}
];
}
+ avast {
+ attachments_only = false;
+ symbol = "AVAST_VIRUS";
+ type = "avast";
+ servers = "127.0.0.1:${PORT_AVAST}";
+ }
}
diff --git a/test/functional/lib/vars.py b/test/functional/lib/vars.py
index 4559db205..d29c31c7b 100644
--- a/test/functional/lib/vars.py
+++ b/test/functional/lib/vars.py
@@ -15,6 +15,7 @@ PORT_PROXY = 56795
PORT_CLAM = 56796
PORT_FPROT = 56797
PORT_FPROT2_DUPLICATE = 56798
+PORT_AVAST = 56799
P0F_SOCKET = '/tmp/p0f.sock'
REDIS_ADDR = u'127.0.0.1'
REDIS_PORT = 56379
diff --git a/test/functional/util/dummy_avast.py b/test/functional/util/dummy_avast.py
new file mode 100755
index 000000000..55945d8dc
--- /dev/null
+++ b/test/functional/util/dummy_avast.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+PID = "/tmp/dummy_avast.pid"
+
+import os
+import sys
+import socket
+import dummy_killer
+try:
+ import SocketServer as socketserver
+except:
+ import socketserver
+
+class MyTCPHandler(socketserver.BaseRequestHandler):
+
+ def handle(self):
+ self.request.sendall(b"220 DAEMON\r\n")
+ self.data = self.request.recv(1024).strip()
+ self.request.sendall(b"210 SCAN DATA\r\n")
+ if self.server.foundvirus:
+ self.request.sendall(b"SCAN /some/path/malware/xpaj/00908235ee9e267fa2f4c83fb4304c63af976cbc\t[L]0.0\t0 Eicar\\ [Heur]\r\n")
+ else:
+ self.request.sendall(b"SCAN /some/path/malware/xpaj/00908235ee9e267fa2f4c83fb4304c63af976cbc\t[+]\r\n")
+ self.request.sendall(b"200 SCAN OK\r\n")
+ self.request.close()
+
+if __name__ == "__main__":
+ HOST = "localhost"
+
+ alen = len(sys.argv)
+ if alen > 1:
+ port = int(sys.argv[1])
+ if alen >= 3:
+ foundvirus = bool(sys.argv[2])
+ else:
+ foundvirus = False
+ else:
+ port = 3310
+ foundvirus = False
+
+ server = socketserver.TCPServer((HOST, port), MyTCPHandler, bind_and_activate=False)
+ server.allow_reuse_address = True
+ server.foundvirus = foundvirus
+ server.server_bind()
+ server.server_activate()
+
+ dummy_killer.setup_killer(server)
+ dummy_killer.write_pid(PID)
+
+ try:
+ server.handle_request()
+ except socket.error:
+ print "Socket closed"
+
+ server.server_close()