def testNoPasswordGiven(self): """Passing None as the password avoids sending the PASS command.""" # Create a client, and give it a greeting. ftpClient = ftp.FTPClientBasic() ftpClient.transport = BufferingTransport() ftpClient.lineReceived('220 Welcome to Imaginary FTP.') # Queue a login with no password ftpClient.queueLogin('bob', None) self.failUnlessEqual('USER bob\r\n', ftpClient.transport.buffer) # Clear the test buffer, acknowledge the USER command. ftpClient.transport.buffer = '' ftpClient.lineReceived('200 Hello bob.') # The client shouldn't have sent anything more (i.e. it shouldn't have # sent a PASS command). self.failUnlessEqual('', ftpClient.transport.buffer)
def testNoPasswordNeeded(self): """Receiving a 230 response to USER prevents PASS from being sent.""" # Create a client, and give it a greeting. ftpClient = ftp.FTPClientBasic() ftpClient.transport = BufferingTransport() ftpClient.lineReceived('220 Welcome to Imaginary FTP.') # Queue a login with no password ftpClient.queueLogin('bob', 'secret') self.failUnlessEqual('USER bob\r\n', ftpClient.transport.buffer) # Clear the test buffer, acknowledge the USER command with a 230 # response code. ftpClient.transport.buffer = '' ftpClient.lineReceived('230 Hello bob. No password needed.') # The client shouldn't have sent anything more (i.e. it shouldn't have # sent a PASS command). self.failUnlessEqual('', ftpClient.transport.buffer)
def testMultilineResponse(self): ftpClient = ftp.FTPClientBasic() ftpClient.transport = DummyTransport() ftpClient.lineReceived('220 Imaginary FTP.') # Queue (and send) a dummy command, and set up a callback to capture the # result deferred = ftpClient.queueStringCommand('BLAH') result = [] deferred.addCallback(result.append) deferred.addErrback(self.fail) # Send the first line of a multiline response. ftpClient.lineReceived('210-First line.') self.failUnlessEqual([], result) # Send a second line, again prefixed with "nnn-". ftpClient.lineReceived('123-Second line.') self.failUnlessEqual([], result) # Send a plain line of text, no prefix. ftpClient.lineReceived('Just some text.') self.failUnlessEqual([], result) # Now send a short (less than 4 chars) line. ftpClient.lineReceived('Hi') self.failUnlessEqual([], result) # Now send an empty line. ftpClient.lineReceived('') self.failUnlessEqual([], result) # And a line with 3 digits in it, and nothing else. ftpClient.lineReceived('321') self.failUnlessEqual([], result) # Now finish it. ftpClient.lineReceived('210 Done.') self.failUnlessEqual([ '210-First line.', '123-Second line.', 'Just some text.', 'Hi', '', '321', '210 Done.' ], result[0])
def testResponseWithNoMessage(self): # Responses with no message are still valid, i.e. three digits followed # by a space is complete response. ftpClient = ftp.FTPClientBasic() ftpClient.lineReceived('220 ') self.failUnlessEqual(['220 '], ftpClient.greeting)
def testGreeting(self): # The first response is captured as a greeting. ftpClient = ftp.FTPClientBasic() ftpClient.lineReceived('220 Imaginary FTP.') self.failUnlessEqual(['220 Imaginary FTP.'], ftpClient.greeting)