mirror of
https://github.com/sshuttle/sshuttle.git
synced 2024-11-21 23:43:18 +01:00
Write more server tests
This commit is contained in:
parent
d522d1e1bd
commit
dea3f21943
@ -17,6 +17,7 @@ from sshuttle.helpers import log, debug1, debug2, debug3, Fatal, \
|
||||
|
||||
|
||||
def _ipmatch(ipstr):
|
||||
# FIXME: IPv4 only
|
||||
if ipstr == b'default':
|
||||
ipstr = b'0.0.0.0/0'
|
||||
m = re.match(b'^(\d+(\.\d+(\.\d+(\.\d+)?)?)?)(?:/(\d+))?$', ipstr)
|
||||
@ -38,6 +39,7 @@ def _ipmatch(ipstr):
|
||||
|
||||
|
||||
def _ipstr(ip, width):
|
||||
# FIXME: IPv4 only
|
||||
if width >= 32:
|
||||
return ip
|
||||
else:
|
||||
@ -45,6 +47,7 @@ def _ipstr(ip, width):
|
||||
|
||||
|
||||
def _maskbits(netmask):
|
||||
# FIXME: IPv4 only
|
||||
if not netmask:
|
||||
return 32
|
||||
for i in range(32):
|
||||
|
@ -1,7 +1,63 @@
|
||||
import io
|
||||
import socket
|
||||
import sshuttle.server
|
||||
from mock import patch, Mock, call
|
||||
|
||||
|
||||
def test__ipmatch():
|
||||
assert sshuttle.server._ipmatch("1.2.3.4") is not None
|
||||
assert sshuttle.server._ipmatch("::1") is not None
|
||||
assert sshuttle.server._ipmatch("42 Example Street, Melbourne") is None
|
||||
assert sshuttle.server._ipmatch(b"1.2.3.4") is not None
|
||||
assert sshuttle.server._ipmatch(b"::1") is None # ipv6 not supported
|
||||
assert sshuttle.server._ipmatch(b"42 Example Street, Melbourne") is None
|
||||
|
||||
|
||||
def test__ipstr():
|
||||
assert sshuttle.server._ipstr("1.2.3.4", 24) == "1.2.3.4/24"
|
||||
assert sshuttle.server._ipstr("1.2.3.4", 32) == "1.2.3.4"
|
||||
|
||||
|
||||
def test__maskbits():
|
||||
netmask = sshuttle.server._ipmatch(b"255.255.255.0")
|
||||
sshuttle.server._maskbits(netmask)
|
||||
|
||||
|
||||
@patch('sshuttle.server.ssubprocess.Popen')
|
||||
def test__listroutes(mock_popen):
|
||||
mock_pobj = Mock()
|
||||
mock_pobj.stdout = io.BytesIO(b"""
|
||||
Kernel IP routing table
|
||||
Destination Gateway Genmask Flags MSS Window irtt Iface
|
||||
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
|
||||
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
|
||||
""")
|
||||
mock_pobj.wait.return_value = 0
|
||||
mock_popen.return_value = mock_pobj
|
||||
|
||||
routes = sshuttle.server._list_routes()
|
||||
|
||||
assert mock_popen.mock_calls == [
|
||||
call(['netstat', '-rn'], stdout=-1),
|
||||
call().wait()
|
||||
]
|
||||
assert routes == [
|
||||
(socket.AF_INET, '0.0.0.0', 0),
|
||||
(socket.AF_INET, '192.168.1.0', 24)
|
||||
]
|
||||
|
||||
|
||||
@patch('sshuttle.server.ssubprocess.Popen')
|
||||
def test_listroutes(mock_popen):
|
||||
mock_pobj = Mock()
|
||||
mock_pobj.stdout = io.BytesIO(b"""
|
||||
Kernel IP routing table
|
||||
Destination Gateway Genmask Flags MSS Window irtt Iface
|
||||
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
|
||||
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
|
||||
""")
|
||||
mock_pobj.wait.return_value = 0
|
||||
mock_popen.return_value = mock_pobj
|
||||
|
||||
routes = sshuttle.server.list_routes()
|
||||
|
||||
assert list(routes) == [
|
||||
(socket.AF_INET, '192.168.1.0', 24)
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user