Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2@file
3@brief Mock FTP classes.
4"""
5from ..loghelper.flog import noLOG
6from .ftp_transfer import TransferFTP
9class MockTransferFTP(TransferFTP):
10 """
11 mock @see cl TransferFTP
12 """
14 def __init__(self, ftps='FTP', fLOG=noLOG):
15 """
16 @param ftps protocol
17 @param fLOG logging function
18 """
19 TransferFTP.__init__(self, None, "login", "password", ftps=ftps)
20 self._store = {}
22 def run_command(self, command, *args, **kwargs):
23 """
24 Mock method :meth:`run_command <pyquickhelper.filehelper.ftp_transfer.TransferFTP.run_commnad>`
25 """
26 if command == self._ftp.mlsd and args == ('.',):
27 return [('setup.py', {'name': 'setup.py'})]
28 if command == self._ftp.cwd and args == ('.',):
29 return None
30 if command == self._ftp.pwd and len(args) == 0:
31 return "."
32 if command == self._ftp.cwd and args == ('..',):
33 return None
34 if command == self._ftp.storbinary and args[0] == 'STOR test_transfer_ftp.py':
35 self._store[args[0]] = args
36 return None
37 if command == self._ftp.retrbinary and args[0] == 'RETR test_transfer_ftp.py':
38 b = self._store[args[0].replace("RETR", "STOR")][1]
39 return b'ee'
40 if command == self._ftp.cwd and args == ('backup',):
41 self._store[args[0]] = args
42 return None
43 if command == self._ftp.storbinary and args[0] == 'STOR setup.py':
44 self._store[args[0]] = args
45 return None
46 if command == self._ftp.retrbinary and args[0] == 'RETR setup.py':
47 b = self._store[args[0].replace("RETR", "STOR")][1]
48 s = b.getbuffer()
49 args[1](s)
50 return len(s)
51 raise RuntimeError( # pragma: no cover
52 "command='{0}'\nargs={1}".format(command, args))