Skip to content

Commit 17ef078

Browse files
committed
Use expected file for parse_advisory tests
Signed-off-by: Anmol Vats <anmolvats2003@gmail.com>
1 parent f164ede commit 17ef078

File tree

2 files changed

+108
-65
lines changed

2 files changed

+108
-65
lines changed

vulnerabilities/tests/pipelines/v2_importers/test_checkpoint_importer.py

Lines changed: 13 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#
99

1010
import datetime
11-
import json
1211
from pathlib import Path
1312
from unittest import TestCase
1413
from unittest.mock import MagicMock
@@ -22,6 +21,7 @@
2221
from vulnerabilities.pipelines.v2_importers.checkpoint_importer import get_total_pages
2322
from vulnerabilities.pipelines.v2_importers.checkpoint_importer import parse_advisory
2423
from vulnerabilities.pipelines.v2_importers.checkpoint_importer import parse_table_rows
24+
from vulnerabilities.tests import util_tests
2525

2626
TEST_DATA = Path(__file__).parent.parent.parent / "test_data" / "checkpoint"
2727

@@ -85,72 +85,20 @@ def test_returns_empty_list_for_missing_table(self):
8585
assert parse_table_rows("<html></html>") == []
8686

8787

88-
class TestParseAdvisory(TestCase):
89-
def setUp(self):
90-
self.row = SAMPLE_ROWS[0]
91-
92-
def test_advisory_id(self):
93-
advisory = parse_advisory(self.row)
94-
assert advisory.advisory_id == "CPAI-2026-1780"
95-
96-
def test_cve_in_aliases(self):
97-
advisory = parse_advisory(self.row)
98-
assert "CVE-2026-20122" in advisory.aliases
99-
100-
def test_date_parsed(self):
101-
advisory = parse_advisory(self.row)
102-
assert advisory.date_published is not None
103-
assert advisory.date_published.year == 2026
104-
105-
def test_severity_stored(self):
106-
advisory = parse_advisory(self.row)
107-
assert len(advisory.severities) == 1
108-
assert advisory.severities[0].value == "Medium"
109-
110-
def test_references_include_advisory_url(self):
111-
advisory = parse_advisory(self.row)
112-
urls = [r.url for r in advisory.references]
113-
assert any("cpai-2026-1780.html" in u for u in urls)
114-
115-
def test_references_include_nvd_url(self):
116-
advisory = parse_advisory(self.row)
117-
urls = [r.url for r in advisory.references]
118-
assert any("nvd.nist.gov" in u for u in urls)
119-
120-
def test_reference_ids_set(self):
121-
advisory = parse_advisory(self.row)
122-
ref_ids = [r.reference_id for r in advisory.references]
123-
assert "CPAI-2026-1780" in ref_ids
124-
assert "CVE-2026-20122" in ref_ids
125-
126-
def test_affected_packages_empty(self):
127-
advisory = parse_advisory(self.row)
128-
assert advisory.affected_packages == []
129-
130-
def test_weaknesses_empty(self):
131-
advisory = parse_advisory(self.row)
132-
assert advisory.weaknesses == []
133-
134-
def test_original_advisory_text_is_pretty_json(self):
135-
advisory = parse_advisory(self.row)
136-
parsed = json.loads(advisory.original_advisory_text)
137-
assert parsed["advisory_id"] == "CPAI-2026-1780"
138-
assert "\n" in advisory.original_advisory_text
139-
140-
def test_missing_id_returns_none(self):
141-
assert parse_advisory({}) is None
142-
assert parse_advisory({"advisory_id": ""}) is None
143-
assert parse_advisory({"advisory_id": "INVALID-123"}) is None
144-
145-
def test_no_cve_yields_empty_aliases(self):
146-
row = dict(self.row)
147-
row["cve_id"] = ""
88+
def test_parse_advisories():
89+
results = []
90+
for row in SAMPLE_ROWS:
14891
advisory = parse_advisory(row)
149-
assert advisory.aliases == []
92+
if advisory:
93+
results.append(advisory.to_dict())
94+
expected_file = TEST_DATA / "advisories_2026-expected.json"
95+
util_tests.check_results_against_json(results, expected_file)
96+
15097

151-
def test_critical_severity(self):
152-
advisory = parse_advisory(SAMPLE_ROWS[1])
153-
assert advisory.severities[0].value == "Critical"
98+
def test_missing_id_returns_none():
99+
assert parse_advisory({}) is None
100+
assert parse_advisory({"advisory_id": ""}) is None
101+
assert parse_advisory({"advisory_id": "INVALID-123"}) is None
154102

155103

156104
class TestCheckPointImporterPipeline(TestCase):
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
[
2+
{
3+
"advisory_id": "CPAI-2026-1780",
4+
"aliases": [
5+
"CVE-2026-20122"
6+
],
7+
"summary": "Cisco Catalyst SD-WAN Manager Arbitrary File Write (CVE-2026-20122)",
8+
"affected_packages": [],
9+
"references": [
10+
{
11+
"reference_id": "CPAI-2026-1780",
12+
"reference_type": "",
13+
"url": "https://advisories.checkpoint.com/defense/advisories/public/2026/cpai-2026-1780.html"
14+
},
15+
{
16+
"reference_id": "CVE-2026-20122",
17+
"reference_type": "",
18+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-20122"
19+
}
20+
],
21+
"patches": [],
22+
"severities": [
23+
{
24+
"system": "generic_textual",
25+
"value": "Medium",
26+
"scoring_elements": ""
27+
}
28+
],
29+
"date_published": "2026-03-17T00:00:00+00:00",
30+
"weaknesses": [],
31+
"url": "https://advisories.checkpoint.com/defense/advisories/public/2026/cpai-2026-1780.html"
32+
},
33+
{
34+
"advisory_id": "CPAI-2026-0042",
35+
"aliases": [
36+
"CVE-2026-1001"
37+
],
38+
"summary": "Example Critical Vulnerability Remote Code Execution",
39+
"affected_packages": [],
40+
"references": [
41+
{
42+
"reference_id": "CPAI-2026-0042",
43+
"reference_type": "",
44+
"url": "https://advisories.checkpoint.com/defense/advisories/public/2026/cpai-2026-0042.html"
45+
},
46+
{
47+
"reference_id": "CVE-2026-1001",
48+
"reference_type": "",
49+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-1001"
50+
}
51+
],
52+
"patches": [],
53+
"severities": [
54+
{
55+
"system": "generic_textual",
56+
"value": "Critical",
57+
"scoring_elements": ""
58+
}
59+
],
60+
"date_published": "2026-01-10T00:00:00+00:00",
61+
"weaknesses": [],
62+
"url": "https://advisories.checkpoint.com/defense/advisories/public/2026/cpai-2026-0042.html"
63+
},
64+
{
65+
"advisory_id": "CPAI-2026-0210",
66+
"aliases": [
67+
"CVE-2025-33603"
68+
],
69+
"summary": "Example High Severity Stack Overflow",
70+
"affected_packages": [],
71+
"references": [
72+
{
73+
"reference_id": "CPAI-2026-0210",
74+
"reference_type": "",
75+
"url": "https://advisories.checkpoint.com/defense/advisories/public/2026/cpai-2026-0210.html"
76+
},
77+
{
78+
"reference_id": "CVE-2025-33603",
79+
"reference_type": "",
80+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-33603"
81+
}
82+
],
83+
"patches": [],
84+
"severities": [
85+
{
86+
"system": "generic_textual",
87+
"value": "High",
88+
"scoring_elements": ""
89+
}
90+
],
91+
"date_published": "2026-02-05T00:00:00+00:00",
92+
"weaknesses": [],
93+
"url": "https://advisories.checkpoint.com/defense/advisories/public/2026/cpai-2026-0210.html"
94+
}
95+
]

0 commit comments

Comments
 (0)