Skip to content

Commit ae3ad85

Browse files
committed
test: Add DirectTransport unit tests
1 parent 5682547 commit ae3ad85

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

tests/test_unit_transport_direct.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import pytest
2+
import sys
3+
4+
from itoolkit import iToolKit
5+
from itoolkit.transport import DirectTransport
6+
import itoolkit.transport.direct
7+
8+
XMLIN = "<?xml version='1.0'?>\n<xmlservice></xmlservice>"
9+
10+
11+
def mock_direct(mocker):
12+
"Mock transport.direct"
13+
itoolkit.transport.direct._available = True
14+
15+
mock_direct = mocker.patch('itoolkit.transport.direct._direct', create=True)
16+
17+
mock_xmlsevice = mocker.Mock()
18+
mock_xmlsevice.return_value = XMLIN.encode('utf-8')
19+
20+
mock_direct._xmlservice = mock_xmlsevice
21+
22+
return mock_direct
23+
24+
25+
def assert_xmlservice_params_correct(mock_direct, ipc='*na',
26+
ctl='*here *cdata'):
27+
mock_xmlservice = mock_direct._xmlservice
28+
29+
xml = XMLIN + "\n"
30+
31+
# assert_called_once only available in Python 3.6+
32+
if sys.version_info >= (3, 6):
33+
mock_xmlservice.assert_called_once()
34+
35+
args, kwargs = mock_xmlservice.call_args
36+
37+
assert len(kwargs) == 0
38+
assert len(args) == 3
39+
40+
assert args[0] == xml
41+
assert args[1] == ctl
42+
assert args[2] == ipc
43+
else:
44+
mock_xmlservice.assert_called_once_with(xml, ctl, ipc)
45+
46+
47+
def test_direct_transport_unsupported(mocker):
48+
"Test that we get an error running on an unsupported platform"
49+
itoolkit.transport.direct._available = False
50+
51+
transport = DirectTransport()
52+
tk = iToolKit()
53+
with pytest.raises(RuntimeError):
54+
transport.call(tk)
55+
56+
57+
def test_direct_transport(mocker):
58+
mock = mock_direct(mocker)
59+
60+
transport = DirectTransport()
61+
tk = iToolKit()
62+
out = transport.call(tk)
63+
64+
assert_xmlservice_params_correct(mock)
65+
assert isinstance(out, (bytes, str))

0 commit comments

Comments
 (0)