"""Exercise the session interface without a thread or transport.""" import unittest from controller.session import Session INFO = bytes.fromhex("00 bb 01 1d 00 0b 02 10 01 34 30 04 01 02 04 05 01 b0") class SessionTests(unittest.TestCase): def test_captured_handshake_with_split_reply(self): session = Session() self.assertEqual(session.start(), bytes.fromhex("00 bb 01 01 00 01 01 04")) self.assertFalse(session.receive(INFO[:9]).outgoing) update = session.receive(INFO[9:]) self.assertEqual(update.outgoing, (bytes.fromhex("00 bb 01 02 00 01 04 08"),)) self.assertFalse(session.ready) update = session.receive(bytes.fromhex("00 bb 00 02 00 00 02")) self.assertTrue(update.became_ready) self.assertTrue(session.ready) self.assertFalse(session.receive(bytes.fromhex("00 bb 00 02 00 00 02")).became_ready) def test_notification_sequence_cannot_complete_handshake(self): session = Session() session.start() session.receive(INFO) session.receive(bytes.fromhex("00 bb 01 02 00 02 31 01 36")) self.assertFalse(session.ready) def test_repeated_info_does_not_repeat_link_complete(self): session = Session() session.start() self.assertEqual(len(session.receive(INFO).outgoing), 1) self.assertEqual(session.receive(INFO).outgoing, ())