Browse Source

Port scanner: add tests.

Cyril Roelandt 8 years ago
parent
commit
6424cc0578
4 changed files with 47 additions and 1 deletions
  1. 2 1
      setup.py
  2. 6 0
      tox.ini
  3. 0 0
      vpneverywhere/tests/__init__.py
  4. 39 0
      vpneverywhere/tests/test_port_scanner.py

+ 2 - 1
setup.py

@@ -16,5 +16,6 @@ setup(
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.4'
         'Programming Language :: Python :: 3.4'
         'Programming Language :: Python :: 3.5'
         'Programming Language :: Python :: 3.5'
-    ]
+    ],
+    test_suite = 'vpneverywhere.tests'
 )
 )

+ 6 - 0
tox.ini

@@ -1,3 +1,9 @@
+[tox]
+envlist = pep8, py34, py35
+
+[testenv]
+commands = python setup.py test
+
 [testenv:pep8]
 [testenv:pep8]
 deps=flake8
 deps=flake8
 commands=flake8 {posargs} vpneverywhere/
 commands=flake8 {posargs} vpneverywhere/

+ 0 - 0
vpneverywhere/tests/__init__.py


+ 39 - 0
vpneverywhere/tests/test_port_scanner.py

@@ -0,0 +1,39 @@
+import socket
+from unittest import mock
+import unittest
+
+from vpneverywhere.port_scanner import Scanner
+
+
+class TestPortScanner(unittest.TestCase):
+    def setUp(self):
+        self.scanner = Scanner('0.0.0.0')
+
+    @mock.patch('socket.socket.recvfrom')
+    @mock.patch('socket.socket.send')
+    @mock.patch('socket.socket.connect')
+    def test__scan_tcp(self, connect_fn, send_fn, recvfrom_fn):
+        self.assertTrue(self.scanner._scan_tcp(42))
+
+    @mock.patch('socket.socket.connect')
+    def test__scan_tcp_connection_refused(self, connect_fn):
+        connect_fn.side_effect = ConnectionRefusedError()
+        self.assertFalse(self.scanner._scan_tcp(42))
+
+    @mock.patch('socket.socket.connect')
+    def test__scan_tcp_timeout(self, connect_fn):
+        connect_fn.side_effect = socket.timeout()
+        self.assertFalse(self.scanner._scan_tcp(42))
+
+    @mock.patch('socket.socket.recvfrom')
+    def test__scan_udp(self, recvfrom_fn):
+        self.assertTrue(self.scanner._scan_udp(42))
+
+    @mock.patch('socket.socket.recvfrom')
+    def test__scan_udp_timeout(self, recvfrom_fn):
+        recvfrom_fn.side_effect = socket.timeout()
+        self.assertFalse(self.scanner._scan_udp(42))
+
+
+if __name__ == '__main__':
+    unittest.main()