summaryrefslogtreecommitdiffstats
path: root/test/test_resolve.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_resolve.py')
-rw-r--r--test/test_resolve.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/test/test_resolve.py b/test/test_resolve.py
new file mode 100644
index 0000000..41f0c87
--- /dev/null
+++ b/test/test_resolve.py
@@ -0,0 +1,81 @@
+import socket
+import pytest
+
+
+# pylint: disable=attribute-defined-outside-init,protected-access
+class TestResolve:
+ @pytest.fixture(autouse=True)
+ def init(self, ssh_audit):
+ self.AuditConf = ssh_audit.AuditConf
+ self.audit = ssh_audit.audit
+ self.OutputBuffer = ssh_audit.OutputBuffer
+ self.ssh_socket = ssh_audit.SSH_Socket
+
+ def _conf(self):
+ conf = self.AuditConf('localhost', 22)
+ conf.colors = False
+ conf.batch = True
+ return conf
+
+ def test_resolve_error(self, output_spy, virtual_socket):
+ vsocket = virtual_socket
+ vsocket.gsock.addrinfodata['localhost#22'] = socket.gaierror(8, 'hostname nor servname provided, or not known')
+ conf = self._conf()
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ # output_spy.begin()
+ with pytest.raises(socket.gaierror):
+ list(s._resolve())
+ # lines = output_spy.flush()
+ # assert len(lines) == 1
+ # assert 'hostname nor servname provided' in lines[-1]
+
+ def test_resolve_hostname_without_records(self, output_spy, virtual_socket):
+ vsocket = virtual_socket
+ vsocket.gsock.addrinfodata['localhost#22'] = []
+ conf = self._conf()
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ output_spy.begin()
+ r = list(s._resolve())
+ assert len(r) == 0
+
+ def test_resolve_ipv4(self, virtual_socket):
+ conf = self._conf()
+ conf.ipv4 = True
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ r = list(s._resolve())
+ assert len(r) == 1
+ assert r[0] == (socket.AF_INET, ('127.0.0.1', 22))
+
+ def test_resolve_ipv6(self, virtual_socket):
+ conf = self._conf()
+ conf.ipv6 = True
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ r = list(s._resolve())
+ assert len(r) == 1
+ assert r[0] == (socket.AF_INET6, ('::1', 22))
+
+ def test_resolve_ipv46_both(self, virtual_socket):
+ conf = self._conf()
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ r = list(s._resolve())
+ assert len(r) == 2
+ assert r[0] == (socket.AF_INET, ('127.0.0.1', 22))
+ assert r[1] == (socket.AF_INET6, ('::1', 22))
+
+ def test_resolve_ipv46_order(self, virtual_socket):
+ conf = self._conf()
+ conf.ipv4 = True
+ conf.ipv6 = True
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ r = list(s._resolve())
+ assert len(r) == 2
+ assert r[0] == (socket.AF_INET, ('127.0.0.1', 22))
+ assert r[1] == (socket.AF_INET6, ('::1', 22))
+ conf = self._conf()
+ conf.ipv6 = True
+ conf.ipv4 = True
+ s = self.ssh_socket(self.OutputBuffer(), 'localhost', 22, conf.ip_version_preference)
+ r = list(s._resolve())
+ assert len(r) == 2
+ assert r[0] == (socket.AF_INET6, ('::1', 22))
+ assert r[1] == (socket.AF_INET, ('127.0.0.1', 22))