/
test_raw_socket.py
58 lines (41 loc) · 1.53 KB
/
test_raw_socket.py
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
'''
Created on Mar 1, 2017
@author: ivan
'''
import unittest
from unittest.mock import Mock, call
from asexor.raw_socket import PrefixProtocol
class Test(unittest.TestCase):
def test_prefix(self):
p = PrefixProtocol()
transport = Mock()
receiver = Mock()
p.frame_received = receiver
p.connection_made(transport)
small_msg = b'\x00\x00\x00\x04abcd'
p.data_received(small_msg)
receiver.assert_called_once_with(b'abcd')
self.assertEqual(len(p._buffer), 0)
p.send(b'abcd')
# print(transport.write.call_args_list)
transport.write.assert_has_calls([call(b'\x00\x00\x00\x04'), call(b'abcd')])
transport.reset_mock()
receiver.reset_mock()
big_msg = b'\x00\x00\x00\x0C' + b'0123456789AB'
p.data_received(big_msg[0:2])
self.assertFalse(receiver.called)
p.data_received(big_msg[2:6])
self.assertFalse(receiver.called)
p.data_received(big_msg[6:11])
self.assertFalse(receiver.called)
p.data_received(big_msg[11:16])
receiver.assert_called_once_with(b'0123456789AB')
transport.reset_mock()
receiver.reset_mock()
two_messages = b'\x00\x00\x00\x04' + b'abcd' + b'\x00\x00\x00\x05' + b'12345' + b'\x00'
p.data_received(two_messages)
receiver.assert_has_calls([call(b'abcd'), call(b'12345')])
self.assertEqual(p._buffer, b'\x00')
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()