AnyEvent-FTP
view release on metacpan or search on metacpan
t/anyevent_ftp_client.t view on Meta::CPAN
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 };
t/anyevent_ftp_client.t view on Meta::CPAN
diag $@ if $@;
$done->recv;
$done = AnyEvent->condvar;
SKIP: {
our $detect;
skip 'bftp quit broken', 5 if $detect->{xb};
is eval { $client->connect($config->{host}, $config->{port})->recv->code }, 220, 'code = 220';
diag $@ if $@;
is eval { $client->push_command([USER => 'bogus'])->recv->code }, 331, 'code = 331';
diag $@ if $@;
eval { $client->push_command([PASS => 'bogus'])->recv };
is $@->code, 530, 'code = 530';
is eval { $client->push_command(['QUIT']) ->recv->code }, 221, 'code = 221 (2)';
diag $@ if $@;
is $help_cv->recv->code, 214, 'code = 214';
$done->recv;
$done = AnyEvent->condvar;
}
my $cv1 = $client->push_command([USER => $config->{user}]);
my $cv2 = $client->push_command([PASS => $config->{pass}]);
my $cv3 = $client->push_command(['QUIT']);
is eval { $client->connect($config->{host}, $config->{port})->recv->code }, 220, 'code = 220';
diag $@ if $@;
is $cv1->recv->code, 331, 'code = 331';
is $cv2->recv->code, 230, 'code = 230';
is $cv3->recv->code, 221, 'code = 221';
$done->recv;
};
subtest 'appe_2' => sub {
reset_timeout;
skip_all 'requires client and server on localhost' if $ENV{AEF_REMOTE};
our $config;
my $remote = $config->{dir} = tempdir( CLEANUP => 1 );
my $local = tempdir( CLEANUP => 1 );
foreach my $passive (0,1)
{
my $client = AnyEvent::FTP::Client->new( passive => $passive );
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 {
open my $fh, '>', "$local/data.$passive";
binmode $fh;
print $fh "data$_\n" for 1..200;
close $fh;
};
$client->stor("data.$passive", "$local/data.$passive")->recv;
my $size = -s "$local/data.$passive";
is $size && -s "$remote/data.$passive", $size, "size of remote file is $size";
$size = $client->size("data.$passive")->recv;
is $size, -s "$local/data.$passive", "size returned from remote file is correct";
my $expected = do {
open my $fh, '>>', "$local/data.$passive";
binmode $fh;
print $fh "xorxor$_\n" for 1..300;
close $fh;
open $fh, '<', "$local/data.$passive";
binmode $fh;
local $/;
my $data = <$fh>;
close $fh;
$data;
};
do {
open my $fh, '<', "$local/data.$passive";
binmode $fh;
seek $fh, $client->size("data.$passive")->recv, 0;
$client->appe("data.$passive", $fh)->recv;
close $fh;
};
$size = -s "$local/data.$passive";
is $size && -s "$remote/data.$passive", $size, "size of remote file is $size";
$size = $client->size("data.$passive")->recv;
is $size, -s "$local/data.$passive", "size returned from remote file is correct";
my $actual = do {
open my $fh, '<', "$remote/data.$passive";
binmode $fh;
local $/;
my $data = <$fh>;
close $fh;
$data;
};
is $actual, $expected, "files match";
$client->quit->recv;
}
};
subtest 'noop' => 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;
$client->login($config->{user}, $config->{pass})->recv;
my $res = eval { $client->noop->recv };
diag $@ if $@;
isa_ok $res, 'AnyEvent::FTP::Response';
is eval { $res->code }, 200, 'code = 200';
diag $@ if $@;
$client->quit->recv;
};
subtest 'appe' => sub {
reset_timeout;
skip_all 'requires client and server on localhost' if $ENV{AEF_REMOTE};
our $config;
$config->{dir} = tempdir( CLEANUP => 1 );
foreach my $passive (0,1)
{
my $client = AnyEvent::FTP::Client->new( passive => $passive );
prep_client( $client );
$client->connect($config->{host}, $config->{port})->recv;
$client->login($config->{user}, $config->{pass})->recv;
$client->type('I')->recv;
$client->cwd(translate_dir($config->{dir}))->recv;
my $fn = File::Spec->catfile($config->{dir}, 'foo.txt');
do {
open my $fh, '>', $fn;
say $fh "line1";
close $fh;
( run in 1.116 second using v1.01-cache-2.11-cpan-39bf76dae61 )