def test_leave_timeout_failure2_with_identiy_response(self): self.test_timeout_failure2_from_max_retransmits() start_eap_q_size = self.eap_output_queue.qsize() start_radius_q_size = self.radius_output_queue.qsize() message = IdentityMessage(self.src_mac, 25, Eap.RESPONSE, "host1user") self.sm.event(EventMessageReceived(message, self.PORT_ID_MAC)) self.assertEqual(self.sm.state, self.sm.AAA_IDLE) self.assertEqual(self.eap_output_queue.qsize(), start_eap_q_size + 0) self.assertEqual(self.radius_output_queue.qsize(), start_radius_q_size + 1) self.assertIsInstance(self.radius_output_queue.get_nowait()[0], IdentityMessage)
def test_eap_start(self): # input EAPStart packet. # output EAPIdentityRequest on eap_output_q message = EapolStartMessage(self.src_mac) self.sm.event(EventMessageReceived(message, self.PORT_ID_MAC)) self.assertEqual(self.sm.state, self.sm.IDLE) self.assertEqual(self.eap_output_queue.qsize(), 1) output = self.eap_output_queue.get_nowait()[0] self.assertIsInstance(output, IdentityMessage) self.assertEqual(self.radius_output_queue.qsize(), 0) return output # Used by test_identity_response
def send_eap_to_state_machine(self, eap, dst_mac): """sends an eap message to the state machine""" self.logger.info("eap EAP(): %s", eap) message_id = getattr(eap, 'message_id', -1) state_machine = self.get_state_machine(eap.src_mac, dst_mac, message_id) # Check for response to preemptive_eap preemptive_eap_message_id = self.port_to_eapol_id.get(str(dst_mac), -2) if message_id != -1 and message_id == preemptive_eap_message_id: self.logger.debug( 'eap packet is response to chewie initiated authentication') event = EventPreemptiveEAPResponseMessageReceived( eap, dst_mac, preemptive_eap_message_id) else: event = EventMessageReceived(eap, dst_mac) state_machine.event(event)
def test_identity_request_received_moves_to_challenge_sent(self): message = IdentityMessage(MacAddress.from_string("00:12:34:56:78:90"), 1, Eap.RESPONSE, "betelgeuse") self.state_machine.event(EventMessageReceived(message)) self.assertEqual(self.state_machine.state, "challenge sent") self.assertEqual(self.state_machine.output_messages.qsize(), 1)
def test_packet_received_moves_to_authing_state(self): message = EapolStartMessage(MacAddress.from_string("00:12:34:56:78:90")) self.state_machine.event(EventMessageReceived(message)) self.assertEqual(self.state_machine.state, "identity request sent") self.assertEqual(self.state_machine.output_messages.qsize(), 1)
def send_eap_to_state_machine(self, eap, dst_mac): """sends an eap message to the state machine""" self.logger.info("eap EAP(): %s", eap) state_machine = self.get_state_machine(eap.src_mac, dst_mac) event = EventMessageReceived(eap, dst_mac) state_machine.event(event)