def testServerNoOptionsSubdir(self): raddress = '127.0.0.2' rport = 10000 timeout = 5 root = os.path.dirname(os.path.abspath(__file__)) # Testing without the dyn_func_file set. serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root) self.assertTrue(isinstance(serverstate, tftpy.TftpContextServer)) rrq = tftpy.TftpPacketRRQ() rrq.filename = '50MBFILE' rrq.mode = 'octet' rrq.options = {} # Start the download. serverstate.start(rrq.encode().buffer) # At a 512 byte blocksize, this should be 201400 packets exactly. for block in range(1, 102401): # Should be in expectack state, or None self.assertTrue( isinstance(serverstate.state, tftpy.TftpStateExpectACK)) ack = tftpy.TftpPacketACK() ack.blocknumber = block % 65536 serverstate.state = serverstate.state.handle(ack, raddress, rport) # The last DAT packet should be empty, indicating a completed # transfer. ack = tftpy.TftpPacketACK() ack.blocknumber = 102401 % 65536 finalstate = serverstate.state.handle(ack, raddress, rport) self.assertTrue(finalstate is None)
def testServerInsecurePath(self): raddress = '127.0.0.2' rport = 10000 timeout = 5 root = os.path.dirname(os.path.abspath(__file__)) serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root) rrq = tftpy.TftpPacketRRQ() rrq.filename = '../setup.py' rrq.mode = 'octet' rrq.options = {} # Start the download. self.assertRaises(tftpy.TftpException, serverstate.start, rrq.encode().buffer)
def testServerSecurePath(self): raddress = '127.0.0.2' rport = 10000 timeout = 5 root = os.path.dirname(os.path.abspath(__file__)) serverstate = tftpy.TftpContextServer(raddress, rport, timeout, root) rrq = tftpy.TftpPacketRRQ() rrq.filename = '50MBFILE' rrq.mode = 'octet' rrq.options = {} # Start the download. serverstate.start(rrq.encode().buffer) # Should be in expectack state. self.assertTrue(isinstance(serverstate.state, tftpy.TftpStateExpectACK))
def testTftpPacketRRQ(self): log.debug("===> Running testcase testTftpPacketRRQ") options = {} rrq = tftpy.TftpPacketRRQ() rrq.filename = 'myfilename' rrq.mode = 'octet' rrq.options = options rrq.encode() self.assert_(rrq.buffer != None, "Buffer populated") rrq.decode() self.assertEqual(rrq.filename, "myfilename", "Filename correct") self.assertEqual(rrq.mode, "octet", "Mode correct") self.assertEqual(rrq.options, options, "Options correct") # repeat test with options rrq.options = { 'blksize': '1024' } rrq.filename = 'myfilename' rrq.mode = 'octet' rrq.encode() self.assert_(rrq.buffer != None, "Buffer populated") rrq.decode() self.assertEqual(rrq.filename, "myfilename", "Filename correct") self.assertEqual(rrq.mode, "octet", "Mode correct") self.assertEqual(rrq.options['blksize'], '1024', "Blksize correct")