Skip to content

Commit 996da13

Browse files
committed
Update tests to support latest advisory model changes
Signed-off-by: Keshav Priyadarshi <[email protected]>
1 parent 05ba61f commit 996da13

13 files changed

+1824
-1827
lines changed

vulnerabilities/tests/pipelines/test_base_pipeline.py

+5-9
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,12 @@
3939

4040

4141
def get_advisory1(created_by="test_pipeline"):
42-
adv = models.Advisory.objects.create(
43-
summary=advisory_data1.summary,
44-
affected_packages=[pkg.to_dict() for pkg in advisory_data1.affected_packages],
45-
references=[ref.to_dict() for ref in advisory_data1.references],
46-
url=advisory_data1.url,
47-
created_by=created_by,
48-
date_collected=timezone.now(),
42+
from vulnerabilities.pipes.advisory import insert_advisory
43+
44+
return insert_advisory(
45+
advisory=advisory_data1,
46+
pipeline_id=created_by,
4947
)
50-
adv.aliases.add(*get_or_create_aliases(advisory_data1.aliases))
51-
return adv
5248

5349

5450
class TestVulnerableCodePipeline(TestCase):

vulnerabilities/tests/pipelines/test_remove_duplicate_advisories.py

+14-3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ def test_remove_duplicates_keeps_oldest(self):
3939
Test that when multiple advisories have the same content,
4040
only the oldest one is kept.
4141
"""
42+
from vulnerabilities.utils import compute_content_id
43+
4244
# Create three advisories with same content but different dates
4345
dates = [
4446
datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
@@ -49,14 +51,15 @@ def test_remove_duplicates_keeps_oldest(self):
4951
advisories = []
5052
for date in dates:
5153
advisory = Advisory.objects.create(
54+
unique_content_id=compute_content_id(advisory_data=self.advisory_data),
5255
summary=self.advisory_data.summary,
5356
affected_packages=[pkg.to_dict() for pkg in self.advisory_data.affected_packages],
5457
references=[ref.to_dict() for ref in self.advisory_data.references],
5558
date_imported=date,
5659
date_collected=date,
60+
created_by="test_pipeline",
5761
)
5862
advisories.append(advisory)
59-
print(advisory.id)
6063

6164
# Run the pipeline
6265
pipeline = RemoveDuplicateAdvisoriesPipeline()
@@ -73,19 +76,23 @@ def test_different_content_preserved(self):
7376
"""
7477
# Create two advisories with different content
7578
advisory1 = Advisory.objects.create(
79+
unique_content_id="test-id1",
7680
summary="Summary 1",
7781
affected_packages=[],
7882
date_collected=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
7983
references=[],
8084
date_imported=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
85+
created_by="test_pipeline",
8186
)
8287

8388
advisory2 = Advisory.objects.create(
89+
unique_content_id="test-id2",
8490
summary="Summary 2",
8591
affected_packages=[],
8692
references=[],
8793
date_collected=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
8894
date_imported=datetime.datetime(2024, 1, 2, tzinfo=pytz.UTC),
95+
created_by="test_pipeline",
8996
)
9097

9198
# Run the pipeline
@@ -99,13 +106,16 @@ def test_recompute_content_ids(self):
99106
"""
100107
Test that advisories without content IDs get them updated.
101108
"""
109+
from vulnerabilities.utils import compute_content_id
110+
102111
# Create advisory without content ID
103112
advisory = Advisory.objects.create(
113+
unique_content_id="incorrect-content-id",
104114
summary=self.advisory_data.summary,
105115
affected_packages=[pkg.to_dict() for pkg in self.advisory_data.affected_packages],
106116
references=[ref.to_dict() for ref in self.advisory_data.references],
107-
unique_content_id="",
108117
date_collected=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
118+
created_by="test_pipeline",
109119
)
110120

111121
# Run the pipeline
@@ -114,4 +124,5 @@ def test_recompute_content_ids(self):
114124

115125
# Check that content ID was updated
116126
advisory.refresh_from_db()
117-
self.assertNotEqual(advisory.unique_content_id, "")
127+
expected_content_id = compute_content_id(advisory_data=self.advisory_data)
128+
self.assertNotEqual(advisory.unique_content_id, expected_content_id)

vulnerabilities/tests/pipes/test_advisory.py

+6-9
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from vulnerabilities.importer import Reference
1919
from vulnerabilities.pipes.advisory import get_or_create_aliases
2020
from vulnerabilities.pipes.advisory import import_advisory
21+
from vulnerabilities.utils import compute_content_id
2122

2223
advisory_data1 = AdvisoryData(
2324
summary="vulnerability description here",
@@ -34,16 +35,12 @@
3435

3536

3637
def get_advisory1(created_by="test_pipeline"):
37-
advisory = models.Advisory.objects.create(
38-
summary=advisory_data1.summary,
39-
affected_packages=[pkg.to_dict() for pkg in advisory_data1.affected_packages],
40-
references=[ref.to_dict() for ref in advisory_data1.references],
41-
url=advisory_data1.url,
42-
created_by=created_by,
43-
date_collected=timezone.now(),
38+
from vulnerabilities.pipes.advisory import insert_advisory
39+
40+
return insert_advisory(
41+
advisory=advisory_data1,
42+
pipeline_id=created_by,
4443
)
45-
advisory.aliases.add(*get_or_create_aliases(advisory_data1.aliases))
46-
return advisory
4744

4845

4946
def get_all_vulnerability_relationships_objects():

vulnerabilities/tests/test_add_cvsssv31.py

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def setUp(self):
2424
self.pipeline = CVEAdvisoryMappingPipeline()
2525
advisory = Advisory.objects.create(
2626
created_by="nvd_importer",
27+
unique_content_id="test-unique-content-id",
2728
references=[
2829
{
2930
"severities": [
@@ -41,6 +42,7 @@ def setUp(self):
4142
date_collected="2024-09-27T19:38:00Z",
4243
)
4344
advisory.aliases.add(*get_or_create_aliases(["CVE-2024-1234"]))
45+
4446
vuln = Vulnerability.objects.create(vulnerability_id="CVE-2024-1234")
4547
sev = VulnerabilitySeverity.objects.create(
4648
scoring_system=CVSSV3.identifier,

vulnerabilities/tests/test_changelog.py

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def test_package_changelog():
2525
pkg, _ = models.Package.objects.get_or_create_from_purl("pkg:npm/[email protected]")
2626
assert models.PackageChangeLog.objects.filter(package=pkg).count() == 0
2727
adv = models.Advisory.objects.create(
28+
unique_content_id="test-unique-content-id1",
2829
created_by=NpmImporterPipeline.pipeline_id,
2930
summary="TEST",
3031
date_collected=datetime.now(),
@@ -53,6 +54,7 @@ def test_package_changelog():
5354
pkg1, _ = models.Package.objects.get_or_create_from_purl("pkg:npm/[email protected]")
5455
assert models.PackageChangeLog.objects.filter(package=pkg1).count() == 0
5556
adv = models.Advisory.objects.create(
57+
unique_content_id="test-unique-content-id2",
5658
created_by=NpmImporterPipeline.pipeline_id,
5759
summary="TEST-1",
5860
date_collected=datetime.now(),
@@ -84,6 +86,7 @@ def test_package_changelog():
8486
@pytest.mark.django_db
8587
def test_vulnerability_changelog():
8688
adv = models.Advisory.objects.create(
89+
unique_content_id="test-unique-content-id3",
8790
created_by=NpmImporterPipeline.pipeline_id,
8891
summary="TEST_1",
8992
date_collected=datetime.now(),
@@ -117,6 +120,7 @@ def test_vulnerability_changelog():
117120
@pytest.mark.django_db
118121
def test_vulnerability_changelog_software_version():
119122
adv = models.Advisory.objects.create(
123+
unique_content_id="test-unique-content-id4",
120124
created_by=NpmImporterPipeline.pipeline_id,
121125
summary="TEST_1",
122126
date_collected=datetime.now(),

vulnerabilities/tests/test_compute_content_id.py

-20
Original file line numberDiff line numberDiff line change
@@ -85,26 +85,6 @@ def test_different_metadata_same_content_same_id(self):
8585

8686
assert compute_content_id(advisory1) == compute_content_id(advisory2)
8787

88-
def test_different_metadata_different_id_when_included(self):
89-
"""
90-
Test that advisories with same content but different metadata have different content IDs
91-
when include_metadata=True
92-
"""
93-
advisory1 = self.base_advisory
94-
95-
advisory2 = AdvisoryData(
96-
summary="Test summary",
97-
affected_packages=self.base_advisory.affected_packages,
98-
references=self.base_advisory.references,
99-
date_published=datetime.datetime(2024, 1, 1, tzinfo=pytz.UTC),
100-
url="https://different.url",
101-
)
102-
103-
self.assertNotEqual(
104-
compute_content_id(advisory1, include_metadata=True),
105-
compute_content_id(advisory2, include_metadata=True),
106-
)
107-
10888
def test_different_summary_different_id(self):
10989
"""
11090
Test that advisories with different summaries have different content IDs

0 commit comments

Comments
 (0)