AnyEvent-FTP

 view release on metacpan or  search on metacpan

t/anyevent_ftp_client.t  view on Meta::CPAN

          local $/;
          <$fh>;
        };
        is $remote, $data, 'remote matches';

        is $called_open, 1, 'open emit';
        is $called_close, 1, 'close emit';
      };

      unlink $fn;
      ok !-e $fn, 'remote file deleted';

      do {
        my $data = 'some data';
        my $xfer = eval { $client->stor('foo.txt', \$data) };
        diag $@ if $@;
        isa_ok $xfer, 'AnyEvent::FTP::Client::Transfer';
        my $ret = eval { $xfer->recv; };
        diag $@ if $@;
        isa_ok $ret, 'AnyEvent::FTP::Response';
        ok -e $fn, 'remote file created';
        my $remote = do {
          open my $fh, '<', $fn;
          local $/;
          <$fh>;
        };
        is $remote, $data, 'remote matches';
        is $xfer->remote_name, 'foo.txt', 'remote_name = foo.txt';
      };

      unlink $fn;
      ok !-e $fn, 'remote file deleted';

      do {
        my $data = 'some data';
        my $cb = do {
          my $buffer = $data;
          sub {
            my $tmp = $buffer;
            undef $buffer;
            $tmp;
          };
        };
        my $ret = eval { $client->stor('foo.txt', $cb)->recv; };
        diag $@ if $@;
        isa_ok $ret, 'AnyEvent::FTP::Response';
        ok -e $fn, 'remote file created';
        my $remote = do {
          open my $fh, '<', $fn;
          local $/;
          <$fh>;
        };
        is $remote, $data, 'remote matches';
      };

      unlink $fn;
      ok !-e $fn, 'remote file deleted';

      do {
        my $data = 'some data';
        my $glob = do {
          my $dir = tempdir( CLEANUP => 1);
          my $fn = File::Spec->catfile($dir, 'flub.txt');
          open my $out, '>', $fn;
          binmode $out;
          print $out $data;
          close $out;
          open my $in, '<', $fn;
          binmode $in;
          $in;
        };
        my $ret = eval { $client->stor('foo.txt', $glob)->recv; };
        diag $@ if $@;
        isa_ok $ret, 'AnyEvent::FTP::Response';
        ok -e $fn, 'remote file created';
        my $remote = do {
          open my $fh, '<', $fn;
          local $/;
          <$fh>;
        };
        is $remote, $data, 'remote matches';
      };

      unlink $fn;
      ok !-e $fn, 'remote file deleted';

      $client->quit->recv;
    };
  }

};

subtest 'login' => sub {
  reset_timeout;
  my $client = eval { AnyEvent::FTP::Client->new };
  diag $@ if $@;
  isa_ok $client, 'AnyEvent::FTP::Client';

  prep_client( $client );

  our $config;

  $client->connect($config->{host}, $config->{port})->recv;

  my $res = eval { $client->login($config->{user}, $config->{pass})->recv };
  diag $@ if $@;
  isa_ok $res, 'AnyEvent::FTP::Response';

  is $res->code, 230, 'code = 230';

  is eval { $client->quit->recv->code }, 221, 'code = 221';
  diag $@ if $@;

  $client->connect($config->{host}, $config->{port})->recv;

  eval { $client->login('bogus', 'bogus')->recv };
  my $error = $@;
  isa_ok $error, 'AnyEvent::FTP::Response';
  is $error->code, 530, 'code = 530';

  eval { $client->quit->recv };
};

subtest 'uri' => sub {
  reset_timeout;
  skip_all 'requires client and server on localhost' if $ENV{AEF_REMOTE};
  skip_all 'requires URI' unless eval q{ require URI };

  my $client = eval { AnyEvent::FTP::Client->new };
  diag $@ if $@;
  isa_ok $client, 'AnyEvent::FTP::Client';



( run in 2.508 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )