File: json.t

package info (click to toggle)
libcpan-audit-perl 20250829.001-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 336 kB
  • sloc: perl: 909; makefile: 8
file content (90 lines) | stat: -rw-r--r-- 2,670 bytes parent folder | download | duplicates (3)
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;
    }
}