CPAN-Testers-WWW-Reports-Query-Report
view release on metacpan or search on metacpan
t/10query.t view on Meta::CPAN
{
spec => { as_json => 1 },
args => { report => '5f7b56be-9f27-11e3-9385-a7e693cf7503', as_hash => 1 },
results => { guid => '5f7b56be-9f27-11e3-9385-a7e693cf7503' },
json => 1
},
# bad data
{
spec => { as_hash => 1, as_json => 1 },
args => { report => 1, as_json => 0, as_hash => 0 },
results => { guid => '' },
error => 'no report found'
},
);
SKIP: {
skip "Network unavailable", 55 if(pingtest());
for my $args (@args) {
my $spec = $args->{spec};
my $query = CPAN::Testers::WWW::Reports::Query::Report->new( %$spec );
isa_ok($query,'CPAN::Testers::WWW::Reports::Query::Report');
my $error = '';
my $data = $query->report( %{$args->{args}} );
if($data && $args->{json}) {
eval {
$data = decode_json($data);
#diag("JSON data=".Dumper($data));
is($data->{metadata}{core}{$_},$args->{results}{$_},".. got '$_' in JSON [$args->{args}{report}]") for(keys %{$args->{results}});
};
is($@,'','.. no eval errors on result, expected JSON object');
} elsif($data && $args->{hash}) {
eval {
#diag("hash data=".Dumper($data->{metadata}));
is($data->{metadata}{core}{$_},$args->{results}{$_},".. got '$_' in hash [$args->{args}{report}]") for(keys %{$args->{results}});
};
is($@,'','.. no eval errors on result, expected hash');
} elsif($data && $args->{fact}) {
eval {
my $fact = $data->as_struct;
#diag("fact data=".Dumper($fact));
is($fact->{metadata}{core}{$_},$args->{results}{$_},".. got '$_' in fact [$args->{args}{report}]") for(keys %{$args->{results}});
};
is($@,'','.. no eval errors on result, expected fact object');
} elsif(!$data && $args->{error}) { #error expected
$error = $query->error;
like($error,qr/$args->{error}/,'.. got expected error');
} else {
# we are running live tests, so occasionally the server may be busy
$error = $query->error;
if($error =~ /No response from server/) {
ok(1,'skip as server not responding');
} else {
diag("error args=".Dumper($args));
diag("error data=".Dumper($data));
diag("error message=".$error);
diag("server response=".$query->content);
ok(0,'missing results for test');
}
}
is($query->error,$error,'.. errors as anticipated');
}
}
# Private Method tests
{
my $query = CPAN::Testers::WWW::Reports::Query::Report->new();
isa_ok($query,'CPAN::Testers::WWW::Reports::Query::Report');
my $data = $query->_parse();
is($query->error(),'no data returned');
is($data,undef);
}
# crude, but it'll hopefully do ;)
sub pingtest {
my $domain = 'api.cpantesters.org';
my $cmd = $^O =~ /solaris/i ? "ping -s $domain 56 1" :
$^O =~ /dos|os2|mswin32|netware|cygwin/i ? "ping -n 1 $domain "
: "ping -c 1 $domain >/dev/null 2>&1";
system($cmd);
my $retcode = $? >> 8;
# ping returns 1 if unable to connect
return $retcode;
}
( run in 0.886 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )