Beispiel #1
0
    def test_finish_writing(self):
        packet = packets.DataPacket(3, "O" * 511)
        conversation = TFTPConversation(self.client_host, self.client_port,
                                        StubResponseRouterTwo())
        conversation.state = tftp_conversation.WRITING
        conversation.write_buffer = WriteBuffer()
        conversation.write_buffer.data = "X" * 512
        conversation.filename = "stub_filename"
        conversation.current_block_num = 2
        write_action_wrapper = StubWriteActionWrapper()
        conversation.write_action = write_action_wrapper.stub_action
        response_packet = conversation.handle_packet(packet)

        self.assertEqual(conversation.state, tftp_conversation.COMPLETED)
        self.assertEqual(conversation.current_block_num, 3)
        self.assertEqual(conversation.cached_packet, response_packet)
        self.assertEqual(response_packet.__class__, packets.AcknowledgementPacket)
        self.assertEqual(response_packet.block_num, 3)
        # action should get invoked, saving this state in the wrapper class
        self.assertEqual(write_action_wrapper.received_state,
            ("10.26.0.3", 12345, "stub_filename", "X" * 512 + "O" * 511))