1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
use strict;
use warnings;
use lib 'lib', 't/lib';
use Capture::Tiny qw(capture);
use JSON;
use Test::More;
my $class = "CPAN::Audit";
subtest 'setup' => sub {
use_ok( $class ) or BAIL_OUT( "$class did not compile: $@" );
};
my $script = ( $ENV{AUTOPKGTEST_TMP} ? '/usr/bin/cpan-audit' : 'script/cpan-audit' );
subtest 'json, corelist' => sub {
my( $stdout, $stderr, $exit ) = capture {
system( $^X, '-Ilib', $script, '--json', 'deps', 't/data/cpanfiles' );
};
unlike $stdout, qr/Discovered \d+/;
is $stderr, '';
my $result_hash = JSON::decode_json( $stdout );
isa_ok( $result_hash, ref {} );
isa_ok( $result_hash->{meta}, ref {} );
ok( $result_hash->{meta}{total_advisories} >= 1, "found one or more advisories" );
};
subtest 'json, no corelist' => sub {
my( $stdout, $stderr, $exit ) = capture {
system( $^X, '-Ilib', $script, '--json', '--no-corelist', 'deps', 't/data/cpanfiles' );
};
unlike $stdout, qr/Discovered \d+/;
is $stderr, '';
my $result_hash = JSON::decode_json( $stdout );
isa_ok( $result_hash, ref {} );
isa_ok( $result_hash->{meta}, ref {} );
is( $result_hash->{meta}{total_advisories}, 1, "found exactly one advisory" );
};
done_testing;
BEGIN {
use CPAN::Audit::DB;
no warnings 'redefine';
sub CPAN::Audit::DB::db {
my $db = {
'dists' => {
'Catalyst-Runtime' => {
'advisories' => [
{
'affected_versions' => '<5.90020',
'cves' => [],
'description' => 'A sample advisory for a test',
'distribution' => 'Catalyst-Runtime',
'fixed_versions' => '>=5.90020',
'id' => 'CPANSATest-Catalyst-Runtime-2013-01',
'references' => [
],
'reported' => '2013-01-23'
},
],
'main_module' => 'Catalyst::Runtime',
'versions' => [
{
'date' => '2021-01-01T18:10:00',
'version' => '5.00',
},
{
'date' => '2022-01-01T18:10:00',
'version' => '5.70',
},
],
},
},
module2dist => {
'Catalyst' => 'Catalyst-Runtime',
},
};
return $db;
}
}
|