def test_recvMessage_with_unfragmentable_type(self): defragmenter = Defragmenter() defragmenter.addStaticSize(21, 2) sock = MockSocket(bytearray( b'\x17' + # message type b'\x03\x03' + # TLS version b'\x00\x06' + # payload length b'\x00\x04' + b'\xff'*4 )) msgSock = MessageSocket(sock, defragmenter) for res in msgSock.recvMessage(): if res in (0, 1): self.assertTrue(False, "Blocking read") else: break self.assertIsNotNone(res) header, parser = res self.assertEqual(header.type, 23) self.assertEqual(header.version, (3, 3)) self.assertEqual(header.length, 6) self.assertEqual(parser.bytes, bytearray(b'\x00\x04' + b'\xff'*4))
def test_recvMessage_with_blocking_socket(self): defragmenter = Defragmenter() defragmenter.addStaticSize(21, 2) sock = MockSocket(bytearray( b'\x15' + # message type b'\x03\x03' + # TLS version b'\x00\x02' + # payload length b'\xff\xff' # message ), blockEveryOther=True, maxRet=1) msgSock = MessageSocket(sock, defragmenter) gotBlocked = False for res in msgSock.recvMessage(): if res in (0, 1): gotBlocked = True else: break self.assertTrue(gotBlocked) self.assertIsNotNone(res) header, parser = res self.assertEqual(header.type, 21) self.assertEqual(header.version, (3, 3)) self.assertEqual(parser.bytes, bytearray(b'\xff\xff'))
def test_recvMessage(self): defragmenter = Defragmenter() defragmenter.addStaticSize(21, 2) sock = MockSocket(bytearray( b'\x15' + # message type b'\x03\x03' + # TLS version b'\x00\x04' + # payload length b'\xff\xff' + # first message b'\xbb\xbb' # second message )) msgSock = MessageSocket(sock, defragmenter) for res in msgSock.recvMessage(): if res in (0, 1): self.assertTrue(False, "Blocking read") else: break self.assertIsNotNone(res) header, parser = res self.assertEqual(header.type, 21) self.assertEqual(header.version, (3, 3)) self.assertEqual(header.length, 0) self.assertEqual(parser.bytes, bytearray(b'\xff\xff')) res = None for res in msgSock.recvMessage(): if res in (0, 1): self.assertTrue(False, "Blocking read") else: break self.assertIsNotNone(res) header, parser = res self.assertEqual(header.type, 21) self.assertEqual(header.version, (3, 3)) self.assertEqual(header.length, 0) self.assertEqual(parser.bytes, bytearray(b'\xbb\xbb'))