def test_data_handler_error(self): transport1, transport2 = dummy_ice_transport_pair() certificate1 = RTCCertificate.generateCertificate() session1 = RTCDtlsTransport(transport1, [certificate1]) receiver1 = DummyDataReceiver() session1._register_data_receiver(receiver1) certificate2 = RTCCertificate.generateCertificate() session2 = RTCDtlsTransport(transport2, [certificate2]) session2._register_data_receiver(BrokenDataReceiver()) run( asyncio.gather( session1.start(session2.getLocalParameters()), session2.start(session1.getLocalParameters()), ) ) # send encypted data run(session1._send_data(b"ping")) run(asyncio.sleep(0.1)) # shutdown run(session1.stop()) run(session2.stop())
def test_data(self): transport1, transport2 = dummy_ice_transport_pair() certificate1 = RTCCertificate.generateCertificate() session1 = RTCDtlsTransport(transport1, [certificate1]) receiver1 = DummyDataReceiver() session1._register_data_receiver(receiver1) certificate2 = RTCCertificate.generateCertificate() session2 = RTCDtlsTransport(transport2, [certificate2]) receiver2 = DummyDataReceiver() session2._register_data_receiver(receiver2) run( asyncio.gather( session1.start(session2.getLocalParameters()), session2.start(session1.getLocalParameters()), ) ) # send encypted data run(session1._send_data(b"ping")) run(asyncio.sleep(0.1)) self.assertEqual(receiver2.data, [b"ping"]) run(session2._send_data(b"pong")) run(asyncio.sleep(0.1)) self.assertEqual(receiver1.data, [b"pong"]) # shutdown run(session1.stop()) run(asyncio.sleep(0.1)) self.assertEqual(session1.state, "closed") self.assertEqual(session2.state, "closed") # try closing again run(session1.stop()) run(session2.stop()) # try sending after close with self.assertRaises(ConnectionError): run(session1._send_data(b"foo"))