AnyEvent-FTP
view release on metacpan or search on metacpan
t/anyevent_ftp_client.t view on Meta::CPAN
$plan->();
do {
my $data = 'some data';
my $xfer = eval { $client->stou(undef, \$data) };
diag $@ if $@;
isa_ok $xfer, 'AnyEvent::FTP::Client::Transfer';
my $ret = eval { $xfer->recv; };
diag $@ if $@;
isa_ok $ret, 'AnyEvent::FTP::Response';
my @list = do {
opendir my $dh, $config->{dir};
grep !/^\./, readdir $dh;
};
is scalar(@list), 1, 'exactly one file';
my $fn = File::Spec->catfile($config->{dir}, $list[0]);
is $xfer->remote_name, $list[0], "remote_name = $list[0]";
my $remote = do {
open my $fh, '<', $fn;
local $/;
<$fh>;
};
is $remote, $data, 'local/remote match';
unlink $fn;
ok !-e $fn, 'remote deleted';
};
$client->quit->recv;
}
};
subtest 'stat' => sub {
reset_timeout;
my $client = AnyEvent::FTP::Client->new;
prep_client( $client );
our $config;
our $detect;
$client->connect($config->{host}, $config->{port})->recv;
$client->login($config->{user}, $config->{pass})->recv;
skip_all 'ncftp return code broken' if $detect->{nc};
do {
my $res = eval { $client->stat->recv };
diag $@ if $@;
isa_ok $res, 'AnyEvent::FTP::Response';
my $code = eval { $res->code };
diag $@ if $@;
like $code, qr{^21[123]$}, 'code = ' . $code;
};
do {
my $res = eval { $client->stat('/')->recv };
diag $@ if $@;
isa_ok $res, 'AnyEvent::FTP::Response';
my $code = eval { $res->code };
diag $@ if $@;
like $code, qr{^21[123]$}, 'code = ' . $code;
};
SKIP: {
skip 'wu-ftpd does not return [45]50 on bogus file', 2 if $detect->{wu};
skip 'pure-FTPd does not return [45]50 on bogus file', 2 if $detect->{pu};
skip 'vsftp does not return [45]50 on bogus file', 2 if $detect->{vs};
skip 'IIS does not return [45]50 on bogus file', 2 if $detect->{ms};
skip 'bftp does not return [45]50 on bogus file', 2 if $detect->{xb};
eval { $client->stat('bogus')->recv };
my $res = $@;
isa_ok $res, 'AnyEvent::FTP::Response';
my $code = eval { $res->code };
diag $@ if $@;
like $code, qr{^[45]50$}, 'code = ' . $code;
};
$client->quit->recv;
};
subtest 'rename' => sub {
reset_timeout;
skip_all 'requires client and server on localhost' if $ENV{AEF_REMOTE};
our $config;
$config->{dir} = tempdir( CLEANUP => 1 );
my $client = AnyEvent::FTP::Client->new;
prep_client( $client );
$client->connect($config->{host}, $config->{port})->recv;
$client->login($config->{user}, $config->{pass})->recv;
$client->type('I')->recv;
$client->cwd($config->{dir})->recv;
do {
my $from = File::Spec->catfile($config->{dir}, 'foo.txt');
do { open my $fh, '>', $from; close $fh; };
my $to = File::Spec->catfile($config->{dir}, 'bar.txt');
ok -e $from, "EX: $from";
ok !-e $to, "NO: $to";
my $res1 = eval { $client->rnfr($from)->recv };
diag $@ if $@;
isa_ok $res1, 'AnyEvent::FTP::Response';
my $res2 = eval { $client->rnto($to)->recv };
diag $@ if $@;
isa_ok $res2, 'AnyEvent::FTP::Response';
ok !-e $from, "NO: $from";
ok -e $to, "EX: $to";
};
do {
my $from = File::Spec->catfile($config->{dir}, 'pepper.txt');
do { open my $fh, '>', $from; close $fh; };
my $to = File::Spec->catfile($config->{dir}, 'coke.txt');
ok -e $from, "EX: $from";
ok !-e $to, "NO: $to";
my $res = eval { $client->rename($from, $to)->recv };
diag $@ if $@;
isa_ok $res, 'AnyEvent::FTP::Response';
ok !-e $from, "NO: $from";
( run in 2.906 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )