Skip to content
ftpd runner for tests
Perl
Find file
Pull request Compare This branch is 1 commit ahead, 3 commits behind usualoma:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
debian
lib/Test/FTP
t
.gitignore
.shipit
Changes
MANIFEST.SKIP
Makefile.PL
README

README

NAME
    Test::FTP::Server - ftpd runner for tests

SYNOPSIS
      use Test::TCP;
      use Test::FTP::Server;

      my $user = 'testuser';
      my $pass = 'testpass';
      my $root_directory = '/path/to/root_directory';

      my $server = Test::FTP::Server->new(
        'users' => [{
          'user' => $user,
          'pass' => $pass,
          'root' => $root_directory,
        }],
        'ftpd_conf' => {
          'port' => $port,
          'daemon mode' => 1,
          'run in background' => 0,
        },
      );
      $server->run;

    or

      use Test::TCP;
      use Test::FTP::Server;

      my $user = 'testuser';
      my $pass = 'testpass';
      my $sandbox_base = '/path/to/sandbox_base';

      my $server = Test::FTP::Server->new(
        'users' => [{
          'user' => $user,
          'pass' => $pass,
          'sandbox' => $sandbox_base,
        }],
        'ftpd_conf' => {
          'port' => $port,
          'daemon mode' => 1,
          'run in background' => 0,
        },
      );
      $server->run;

DESCRIPTION
    "Test::FTP::Server" run "Net::FTPServer" internally. The server's
    settings can be specified as a parameter, therefore it is not necessary
    to prepare the configuration file.

FUNCTIONS
  new
    Create a ftpd instance.

    %options

    "users"
       Definition of users.

       "user" and "pass" are used for login.

       If "root" is specified, ftpd behaves as if the specified directory is
       the root directory.

       If "sandbox" is specified, The content of sandbox is copied into the
       temporary directory, and ftpd behaves as if the temporary directory
       is the root directory. The content of sandbox never changes by the
       user's operation.

       It is necessary to specify "root" or "sandbox".

    "ftpd_conf"
       The settings that is usually specified in "/etc/ftpd.conf" when using
       Net::FTPServer.

       Specified by the hash reference.

  run
    Run a ftpd instance.

EXAMPLE
      use Test::FTP::Server;
      use Test::TCP;
      use Net::FTP;

      my $user = 'testid';
      my $pass = 'testpass';
      my $sandbox_base = '/path/to/sandbox_base';

      test_tcp(
        server => sub {
          my $port = shift;

          Test::FTP::Server->new(
            'users' => [{
              'user' => $user,
              'pass' => $pass,
              'sandbox' => $sandbox_base,
            }],
            'ftpd_conf' => {
              'port' => $port,
              'daemon mode' => 1,
              'run in background' => 0,
            },
          )->run;
        },
        client => sub {
          my $port = shift;

          my $ftp = Net::FTP->new('localhost', Port => $port);
          ok($ftp);
          ok($ftp->login($user, $pass));
          ok($ftp->quit);
        },
      );

NOTES
    *   Test::FTP::Server is for test use only. "root" and "sandbox" is not
        using chroot to keep available for any user. Therefore, there is a
        security risk when a server opened to the public.

AUTHOR
    Taku Amano <taku@toi-planning.net>

SEE ALSO
    Net::FTPServer

LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

Something went wrong with that request. Please try again.