1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
import logging
import platform
logging.basicConfig()
logger = logging.getLogger(name=__name__)
try:
import unittest2 as unittest
except ImportError:
import unittest
from mock import Mock, patch # MagicMock
from leap.eip import vpnmanager # import OpenVPNManager
_system = platform.system()
class NotImplementedError(Exception):
pass
@patch('vpnmanager.OpenVPNManager.connect')
class MockedOpenVPNManager(vpnmanager.OpenVPNManager):
def __init__(self, *args, **kwargs):
self.mock_UDSTelnet = Mock()
super(MockedOpenVPNManager, self).__init__(
*args, **kwargs)
self.tn = self.mock_UDSTelnet(self.host, self.port)
class OpenVPNManagerTest(unittest.TestCase):
__name__ = "openvpn_manager_tests"
def setUp(self):
self.manager = MockedOpenVPNManager()
def tearDown(self):
del self.manager
#
# helpers
#
# XXX hey, refactor this to basetestclass
def _missing_test_for_plat(self, do_raise=False):
if do_raise:
raise NotImplementedError(
"This test is not implemented "
"for the running platform: %s" %
_system)
#
# tests
#
@unittest.skipIf(_system == "Windows", "lin/mac only")
def test_lin_mac_default_init(self):
"""
check default host for management iface
"""
self.assertEqual(self.manager.host, '/tmp/.eip.sock')
self.assertEqual(self.manager.port, 'unix')
@unittest.skipUnless(_system == "Windows", "win only")
def test_win_default_init(self):
"""
check default host for management iface
"""
# XXX should we make the platform specific switch
# here or in the vpn command string building?
self.assertEqual(self.manager.host, 'localhost')
self.assertEqual(self.manager.port, 7777)
def test_port_types_init(self):
self.manager = MockedOpenVPNManager(port="42")
self.assertEqual(self.manager.port, 42)
self.manager = MockedOpenVPNManager()
self.assertEqual(self.manager.port, "unix")
self.manager = MockedOpenVPNManager(port="bad")
self.assertEqual(self.manager.port, None)
def test_connect_raises_missing_socket(self):
self.manager = vpnmanager.OpenVPNManager()
with self.assertRaises(vpnmanager.MissingSocketError):
self.manager.connect()
def test_uds_telnet_called_on_connect(self):
# XXX patch UDSTelnet!
manager = self.manager
self.mock_UDSTelnet = Mock()
self.manager.tn = self.mock_UDSTelnet(manager.host, manager.port)
self.manager.connect()
self.manager.tn.assert_called_with(
self.manager.port,
port=self.manager.port)
def test_connect(self):
pass
# XXX calls close
# calls UDSTelnet
# XXX
# tests to write:
# UDSTelnet (for real?)
# - raise MissingSocket
# - raise ConnectionRefusedError
# - test send command
# - tries connect
# - ... tries?
# - ... calls _seek_to_eof
# - ... read_until --> return value
# - ...
if __name__ == "__main__":
unittest.main()
|