File: queried_modules.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 (130 lines) | stat: -rw-r--r-- 4,464 bytes parent folder | download | duplicates (2)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
use strict;
use warnings;
use lib 'lib', 't/lib';

use Capture::Tiny qw(capture);
use JSON;

use Test::More;

my $class = "CPAN::Audit";

my $script = ( $ENV{AUTOPKGTEST_TMP} ? '/usr/bin/cpan-audit' : 'script/cpan-audit' );

subtest 'setup' => sub {
	use_ok( $class ) or BAIL_OUT( "$class did not compile: $@" );
	};

subtest 'deps queried_modules' => sub {
    my( $stdout, $stderr, $exit ) = capture {
        system( $^X, '-Ilib', $script, '--json', 'deps', 't/data/queried_modules' );
    	};

    is $stderr, '';

    my $result_hash = JSON::decode_json( $stdout );
    isa_ok( $result_hash, ref {} );
    isa_ok( $result_hash->{dists}, ref {} );
    is_deeply( $result_hash->{dists}{'Catalyst-Runtime'}{queried_modules}, ['Catalyst'], "Queried 'Catalyst'" );

    my %check = map { $_ => 1 } @{ $result_hash->{dists}{'Mojolicious'}{queried_modules} || [] };
    is_deeply( \%check, { 'Mojo::File' => 1, 'Mojo::UserAgent' => 1 }, "Queried 'Mojo::File' and 'Mojo::UserAgent'" );
	};

subtest 'module queried_modules Mojolicious' => sub {
    my( $stdout, $stderr, $exit ) = capture {
        system( $^X, '-Ilib', $script, '--json', 'module', 'Mojo::File' );
    	};

    is $stderr, '';

    my $result_hash = JSON::decode_json( $stdout );
    isa_ok( $result_hash, ref {} );
    isa_ok( $result_hash->{dists}, ref {} );
    is( $result_hash->{dists}{'Catalyst-Runtime'}{queried_modules}, undef, "Did not query 'Catalyst'" );
    is_deeply( $result_hash->{dists}{'Mojolicious'}{queried_modules}, ['Mojo::File'], "Queried 'Mojo::File'" );
	};

subtest 'module queried_modulesi Catalyst' => sub {
    my( $stdout, $stderr, $exit ) = capture {
        system( $^X, '-Ilib', $script, '--json', 'module', 'Catalyst' );
    	};

    is $stderr, '';

    my $result_hash = JSON::decode_json( $stdout );
    isa_ok( $result_hash, ref {} );
    isa_ok( $result_hash->{dists}, ref {} );
    is_deeply( $result_hash->{dists}{'Catalyst-Runtime'}{queried_modules}, ['Catalyst'], "Queried 'Catalyst'" );
    is( $result_hash->{dists}{'Mojolicious'}{queried_modules}, undef, "Did not query 'Mojo::File' and 'Mojo::UserAgent'" );
	};

subtest 'modules queried_modules' => sub {
    my( $stdout, $stderr, $exit ) = capture {
        system( $^X, '-Ilib', $script, '--json', 'modules', 'Catalyst', 'Mojo::File', 'Mojo::UserAgent' );
    	};

    is $stderr, '';

    my $result_hash = JSON::decode_json( $stdout );
    isa_ok( $result_hash, ref {} );
    isa_ok( $result_hash->{dists}, ref {} );
    is_deeply( $result_hash->{dists}{'Catalyst-Runtime'}{queried_modules}, ['Catalyst'], "Queried 'Catalyst'" );

    my %check = map { $_ => 1 } @{ $result_hash->{dists}{'Mojolicious'}{queried_modules} || [] };
    is_deeply( \%check, { 'Mojo::File' => 1, 'Mojo::UserAgent' => 1 }, "Queried 'Mojo::File' and 'Mojo::UserAgent'" );
	};

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',
                        },
                    ],
                },
		'Mojolicious' => {
		    'advisories' => [
		        id => 1,
			fixed_versions => '>=8',
		    ]
		}
            },
            module2dist => {
                'Catalyst'        => 'Catalyst-Runtime',
                'Mojo::File'      => 'Mojolicious',
                'Mojo::UserAgent' => 'Mojolicious',
            },
        };

        return $db;
    }
}