1616from vulnerabilities .importer import AdvisoryDataV2
1717from vulnerabilities .importer import AffectedPackageV2
1818from vulnerabilities .importer import ReferenceV2
19- from vulnerabilities .models import AdvisoryAlias
2019from vulnerabilities .models import AdvisoryToDoV2
2120from vulnerabilities .models import AdvisoryV2
2221from vulnerabilities .models import ImpactedPackage
2322from vulnerabilities .pipelines .v2_improvers .compute_advisory_todo import ComputeToDo
23+ from vulnerabilities .pipes .advisory import insert_advisory_v2
24+ from vulnerabilities .tests .pipelines import TestLogger
2425
2526
2627class TestComputeToDo (TestCase ):
2728 def setUp (self ):
29+ self .log = TestLogger ()
2830 self .advisory_data1 = AdvisoryDataV2 (
2931 advisory_id = "test_id" ,
32+ aliases = ["CVE-000-000" ],
3033 summary = "Test summary" ,
3134 affected_packages = [
3235 AffectedPackageV2 (
@@ -67,6 +70,7 @@ def setUp(self):
6770
6871 self .advisory_data4 = AdvisoryDataV2 (
6972 advisory_id = "test_id_3" ,
73+ aliases = ["CVE-000-000" ],
7074 summary = "Test summary" ,
7175 affected_packages = [
7276 AffectedPackageV2 (
@@ -80,23 +84,14 @@ def setUp(self):
8084 )
8185
8286 def test_advisory_todo_missing_summary (self ):
83- date = datetime .now ()
84- adv = AdvisoryV2 .objects .create (
85- unique_content_id = "test_id" ,
86- url = self .advisory_data1 .url ,
87- summary = "" ,
88- date_collected = date ,
89- advisory_id = "test_id" ,
90- avid = "test_pipeline/test_id" ,
91- datasource_id = "test_pipeline" ,
87+ insert_advisory_v2 (
88+ advisory = self .advisory_data1 ,
89+ pipeline_id = "test_pipeline1" ,
90+ logger = self .log .write ,
9291 )
93- for pkg in self .advisory_data1 .affected_packages :
94- ImpactedPackage .objects .create (
95- advisory = adv ,
96- base_purl = pkg .package ,
97- affecting_vers = pkg .affected_version_range ,
98- fixed_vers = pkg .fixed_version_range ,
99- )
92+ adv = AdvisoryV2 .objects .first ()
93+ adv .summary = ""
94+ adv .save ()
10095 pipeline = ComputeToDo ()
10196 pipeline .execute ()
10297
@@ -106,23 +101,11 @@ def test_advisory_todo_missing_summary(self):
106101 self .assertEqual (1 , todo .advisories .count ())
107102
108103 def test_advisory_todo_missing_fixed (self ):
109- date = datetime .now ()
110- adv = AdvisoryV2 .objects .create (
111- unique_content_id = "test_id" ,
112- url = self .advisory_data2 .url ,
113- summary = self .advisory_data2 .summary ,
114- date_collected = date ,
115- advisory_id = "test_id" ,
116- avid = "test_pipeline/test_id" ,
117- datasource_id = "test_pipeline" ,
104+ insert_advisory_v2 (
105+ advisory = self .advisory_data2 ,
106+ pipeline_id = "test_pipeline1" ,
107+ logger = self .log .write ,
118108 )
119- for pkg in self .advisory_data2 .affected_packages :
120- ImpactedPackage .objects .create (
121- advisory = adv ,
122- base_purl = pkg .package ,
123- affecting_vers = pkg .affected_version_range ,
124- fixed_vers = pkg .fixed_version_range or "" ,
125- )
126109 pipeline = ComputeToDo ()
127110 pipeline .execute ()
128111
@@ -132,23 +115,11 @@ def test_advisory_todo_missing_fixed(self):
132115 self .assertEqual (1 , todo .advisories .count ())
133116
134117 def test_advisory_todo_missing_affected (self ):
135- date = datetime .now ()
136- adv = AdvisoryV2 .objects .create (
137- unique_content_id = "test_id" ,
138- url = self .advisory_data3 .url ,
139- summary = self .advisory_data3 .summary ,
140- date_collected = date ,
141- advisory_id = "test_id" ,
142- avid = "test_pipeline/test_id" ,
143- datasource_id = "test_pipeline" ,
118+ insert_advisory_v2 (
119+ advisory = self .advisory_data3 ,
120+ pipeline_id = "test_pipeline1" ,
121+ logger = self .log .write ,
144122 )
145- for pkg in self .advisory_data3 .affected_packages :
146- ImpactedPackage .objects .create (
147- advisory = adv ,
148- base_purl = pkg .package ,
149- affecting_vers = pkg .affected_version_range or "" ,
150- fixed_vers = pkg .fixed_version_range ,
151- )
152123 pipeline = ComputeToDo ()
153124 pipeline .execute ()
154125
@@ -158,52 +129,31 @@ def test_advisory_todo_missing_affected(self):
158129 self .assertEqual (1 , todo .advisories .count ())
159130
160131 def test_advisory_todo_conflicting_fixed_affected (self ):
161- alias = AdvisoryAlias .objects .create (alias = "CVE-0000-0000" )
162- date = datetime .now ()
163- adv1 = AdvisoryV2 .objects .create (
164- unique_content_id = "test_id1" ,
165- url = self .advisory_data1 .url ,
166- summary = self .advisory_data1 .summary ,
167- date_collected = date ,
168- advisory_id = "test_id" ,
169- avid = "test_pipeline/test_id_2" ,
170- datasource_id = "test_pipeline" ,
132+ insert_advisory_v2 (
133+ advisory = self .advisory_data1 ,
134+ pipeline_id = "test_pipeline1" ,
135+ logger = self .log .write ,
171136 )
172- for pkg in self .advisory_data1 .affected_packages :
173- ImpactedPackage .objects .create (
174- advisory = adv1 ,
175- base_purl = pkg .package ,
176- affecting_vers = pkg .affected_version_range or "" ,
177- fixed_vers = pkg .fixed_version_range or "" ,
178- )
179- adv1 .aliases .add (alias )
180- adv2 = AdvisoryV2 .objects .create (
181- unique_content_id = "test_id2" ,
182- url = self .advisory_data4 .url ,
183- summary = self .advisory_data4 .summary ,
184- date_collected = date ,
185- advisory_id = "test_id" ,
186- avid = "test_pipeline/test_id_2" ,
187- datasource_id = "test_pipeline" ,
137+ insert_advisory_v2 (
138+ advisory = self .advisory_data4 ,
139+ pipeline_id = "test_pipeline2" ,
140+ logger = self .log .write ,
188141 )
189- for pkg in self .advisory_data4 .affected_packages :
190- ImpactedPackage .objects .create (
191- advisory = adv2 ,
192- base_purl = pkg .package ,
193- affecting_vers = pkg .affected_version_range or "" ,
194- fixed_vers = pkg .fixed_version_range or "" ,
195- )
196- adv2 .aliases .add (alias )
142+ for imp in ImpactedPackage .objects .all ():
143+ imp .last_successful_range_unfurl_at = datetime .now ()
144+ imp .save ()
197145
198146 self .assertEqual (0 , AdvisoryToDoV2 .objects .count ())
199147 pipeline = ComputeToDo ()
200148 pipeline .execute ()
201149
202150 todo = AdvisoryToDoV2 .objects .first ()
151+ adv = AdvisoryV2 .objects .first ()
203152 self .assertEqual (1 , AdvisoryToDoV2 .objects .count ())
204153 self .assertEqual ("CONFLICTING_AFFECTED_AND_FIXED_BY_PACKAGES" , todo .issue_type )
205154 self .assertIn (
206- "CVE-0000-0000: pkg:npm/package1 with conflicting fixed version" , todo .issue_detail
155+ '"conflict_checksum": "57f32de5f41f137f0e3808535c2d974d54eeeda426c4279e7fb90475d26f0313",' ,
156+ todo .issue_detail ,
207157 )
208158 self .assertEqual (2 , todo .advisories .count ())
209- self .assertEqual (todo , adv2 .advisory_todos .first ())
159+ self .assertEqual (todo , adv .advisory_todos .first ())
0 commit comments