Skip to content

Commit 2362056

Browse files
committed
Adhere to new models for summary pipeline
Signed-off-by: Tushar Goel <[email protected]>
1 parent 97301bc commit 2362056

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

vulnerabilities/pipelines/fill_vulnerability_summary_pipeline.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@ def populate_missing_summaries(self):
3333
f"Processing {vulnerabilities_qs.count()} vulnerabilities without summaries",
3434
level=logging.INFO,
3535
)
36-
# nvd_importer_advisories = Advisory.objects.filter(created_by="nvd_importer").exclude(summary="")
37-
# self.log(
38-
# f"Found {nvd_importer_advisories.count()} advisories with summaries from NVD importer",
39-
# level=logging.INFO,
40-
# )
4136

4237
progress = LoopProgress(total_iterations=vulnerabilities_qs.count(), logger=self.log)
4338

@@ -51,7 +46,9 @@ def populate_missing_summaries(self):
5146
)
5247
continue
5348

54-
matching_advisories = Advisory.objects.filter(aliases=cve_alias)
49+
matching_advisories = Advisory.objects.filter(
50+
aliases=cve_alias, created_by="nvd_importer"
51+
).exclude(summary="")
5552

5653
if matching_advisories.exists():
5754
best_advisory = matching_advisories.order_by("-date_collected").first()
@@ -63,4 +60,4 @@ def populate_missing_summaries(self):
6360
level=logging.INFO,
6461
)
6562
else:
66-
self.log(f"No advisory found for alias {alias}", level=logging.INFO)
63+
self.log(f"No advisory found for alias {cve_alias}", level=logging.INFO)

vulnerabilities/tests/pipelines/test_fill_vulnerability_summary_pipeline.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,17 @@ def test_fill_missing_summaries_from_nvd(self):
3838
alias = Alias.objects.create(alias="CVE-2024-1234", vulnerability=vulnerability)
3939

4040
# Create an NVD advisory with a summary
41-
Advisory.objects.create(
41+
adv = Advisory.objects.create(
4242
summary="Test vulnerability summary",
4343
created_by="nvd_importer",
4444
date_collected=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
45-
aliases=["CVE-2024-1234"],
45+
unique_content_id="Test",
4646
)
47+
adv.aliases.add(alias)
4748

4849
# Run the pipeline
4950
pipeline = PopulateVulnerabilitySummariesPipeline()
50-
pipeline.fill_missing_summaries()
51+
pipeline.populate_missing_summaries()
5152

5253
# Check that the vulnerability now has a summary
5354
vulnerability.refresh_from_db()
@@ -66,7 +67,7 @@ def test_no_matching_advisory(self):
6667

6768
# Run the pipeline
6869
pipeline = PopulateVulnerabilitySummariesPipeline()
69-
pipeline.fill_missing_summaries()
70+
pipeline.populate_missing_summaries()
7071

7172
# Check that the vulnerability still has no summary
7273
vulnerability.refresh_from_db()
@@ -85,7 +86,7 @@ def test_vulnerability_without_alias(self):
8586

8687
# Run the pipeline
8788
pipeline = PopulateVulnerabilitySummariesPipeline()
88-
pipeline.fill_missing_summaries()
89+
pipeline.populate_missing_summaries()
8990

9091
# Check that the vulnerability still has no summary
9192
vulnerability.refresh_from_db()
@@ -104,16 +105,18 @@ def test_non_nvd_advisory_ignored(self):
104105
alias = Alias.objects.create(alias="CVE-2024-1234", vulnerability=vulnerability)
105106

106107
# Create a non-NVD advisory with a summary
107-
Advisory.objects.create(
108+
adv = Advisory.objects.create(
108109
summary="Test vulnerability summary",
109110
created_by="other_importer",
110111
date_collected=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
111-
aliases=["CVE-2024-1234"],
112+
unique_content_id="Test",
112113
)
113114

115+
adv.aliases.add(alias)
116+
114117
# Run the pipeline
115118
pipeline = PopulateVulnerabilitySummariesPipeline()
116-
pipeline.fill_missing_summaries()
119+
pipeline.populate_missing_summaries()
117120

118121
# Check that the vulnerability still has no summary
119122
vulnerability.refresh_from_db()
@@ -130,23 +133,27 @@ def test_multiple_matching_advisories(self):
130133
alias = Alias.objects.create(alias="CVE-2024-1234", vulnerability=vulnerability)
131134

132135
# Create two NVD advisories with the same alias
133-
Advisory.objects.create(
136+
adv1 = Advisory.objects.create(
134137
summary="First matching advisory",
135138
created_by="nvd_importer",
136139
date_collected=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
137-
aliases=["CVE-2024-1234"],
140+
unique_content_id="Test",
138141
)
139142

140-
Advisory.objects.create(
143+
adv1.aliases.add(alias)
144+
145+
adv2 = Advisory.objects.create(
141146
summary="Second matching advisory",
142147
created_by="nvd_importer",
143148
date_collected=datetime.datetime(2024, 1, 2, tzinfo=pytz.UTC),
144-
aliases=["CVE-2024-1234"],
149+
unique_content_id="Test-1",
145150
)
146151

152+
adv2.aliases.add(alias)
153+
147154
# Run the pipeline
148155
pipeline = PopulateVulnerabilitySummariesPipeline()
149-
pipeline.fill_missing_summaries()
156+
pipeline.populate_missing_summaries()
150157

151158
# Check that the vulnerability now has the most recent summary
152159
vulnerability.refresh_from_db()

0 commit comments

Comments
 (0)