diff options
Diffstat (limited to 'tests/testutils/ftp_server.py')
-rw-r--r-- | tests/testutils/ftp_server.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/testutils/ftp_server.py b/tests/testutils/ftp_server.py new file mode 100644 index 000000000..52c05f8ba --- /dev/null +++ b/tests/testutils/ftp_server.py @@ -0,0 +1,32 @@ +import multiprocessing + +from pyftpdlib.authorizers import DummyAuthorizer +from pyftpdlib.handlers import FTPHandler +from pyftpdlib.servers import FTPServer + + +class SimpleFtpServer(multiprocessing.Process): + def __init__(self): + super().__init__() + self.authorizer = DummyAuthorizer() + handler = FTPHandler + handler.authorizer = self.authorizer + self.server = FTPServer(('127.0.0.1', 0), handler) + + def run(self): + self.server.serve_forever() + + def stop(self): + self.server.close_all() + self.server.close() + self.terminate() + self.join() + + def allow_anonymous(self, cwd): + self.authorizer.add_anonymous(cwd) + + def add_user(self, user, password, cwd): + self.authorizer.add_user(user, password, cwd, perm='elradfmwMT') + + def base_url(self): + return 'ftp://127.0.0.1:{}'.format(self.server.address[1]) |