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
|
#!perl
use strict;
use warnings;
use Test::More;
use FindBin '$RealBin';
use CSAF::Parser;
subtest 'Parse file' => sub {
my $validation_errors = 0;
my $parser = CSAF::Parser->new(file => "$RealBin/examples/cisco-sa-20180328-smi2.json");
my $csaf = $parser->parse;
isa_ok($csaf, 'CSAF');
is(
$csaf->document->title,
'Cisco IOS and IOS XE Software Smart Install Remote Code Execution Vulnerability',
'Test title'
);
is($csaf->document->category, 'Cisco Security Advisory', 'Test category');
};
subtest 'Parse string' => sub {
my $parser = CSAF::Parser->new(content => <<JSON);
{
"document": {
"category": "csaf_base",
"csaf_version": "2.0",
"publisher": {
"category": "other",
"name": "OASIS CSAF TC",
"namespace": "https://csaf.io"
},
"title": "Template for generating CSAF files for Validator examples",
"tracking": {
"current_release_date": "2021-07-21T10:00:00.000Z",
"id": "OASIS_CSAF_TC-CSAF_2.0-2021-TEMPLATE",
"initial_release_date": "2021-07-21T10:00:00.000Z",
"revision_history": [
{
"date": "2021-07-21T10:00:00.000Z",
"number": "1",
"summary": "Initial version."
}
],
"status": "final",
"version": "1"
}
}
}
JSON
my $csaf = $parser->parse;
isa_ok($csaf, 'CSAF');
is($csaf->document->title, 'Template for generating CSAF files for Validator examples', 'Test title');
is($csaf->document->category, 'csaf_base', 'Test category');
};
done_testing();
|