Skip to content

Commit fbe350c

Browse files
committed
test: test new todo pipeline
Signed-off-by: Keshav Priyadarshi <git@keshav.space>
1 parent 7782db3 commit fbe350c

3 files changed

Lines changed: 39 additions & 87 deletions

File tree

setup.cfg

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,12 @@ install_requires =
9898
django-rq==2.10.1
9999
rq-scheduler==0.13.1
100100

101+
# redhat pipeline
102+
extractcode[full]==31.0.0
103+
101104
#vulntotal
102105
python-dotenv==0.20.0
103106
texttable==1.6.4
104-
extractcode[full]==31.0.0
105107

106108
#hashid
107109
uritemplate==4.2.0

vulnerabilities/pipelines/v2_improvers/compute_advisory_todo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def detect_conflicting_advisories(self):
217217
if adv.avid in avids_with_common_alias_and_purl
218218
}
219219

220-
if not len(advisory_group) > 2:
220+
if not len(advisory_group) > 1:
221221
continue
222222
# if any eligible PURL is not unfurled, skip
223223
if set(comparable_purl_map) & unfurled_base_purls:

vulnerabilities/tests/pipelines/test_compute_advisory_todo_v2.py renamed to vulnerabilities/tests/pipelines/v2_improvers/test_compute_advisory_todo_v2.py

Lines changed: 35 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,20 @@
1616
from vulnerabilities.importer import AdvisoryDataV2
1717
from vulnerabilities.importer import AffectedPackageV2
1818
from vulnerabilities.importer import ReferenceV2
19-
from vulnerabilities.models import AdvisoryAlias
2019
from vulnerabilities.models import AdvisoryToDoV2
2120
from vulnerabilities.models import AdvisoryV2
2221
from vulnerabilities.models import ImpactedPackage
2322
from 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

2627
class 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

Comments
 (0)