File: 20-parser.t

package info (click to toggle)
libcsaf-perl 0.26-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,280 kB
  • sloc: perl: 7,583; makefile: 2
file content (71 lines) | stat: -rw-r--r-- 1,586 bytes parent folder | download
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();