Skip to content

Commit 3278a50

Browse files
committed
Refactor all importer tests to work with VulnerabilityReferenceArgs dataclass
Signed-off-by: Shivam Sandbhor <shivam.sandbhor@gmail.com>
1 parent ca17e0e commit 3278a50

12 files changed

Lines changed: 55 additions & 72 deletions

vulnerabilities/tests/test_archlinux.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,8 @@ def test_import(self):
6363
return_value=self.mock_response
6464
):
6565
runner.run()
66-
6766
assert models.Vulnerability.objects.count() == 6
68-
assert models.VulnerabilityReference.objects.count() == 4
67+
assert models.VulnerabilityReference.objects.count() == 10
6968
assert models.PackageRelatedVulnerability.objects.filter(
7069
is_vulnerable=True).count() == 12
7170
assert models.PackageRelatedVulnerability.objects.filter(

vulnerabilities/tests/test_debian_oval.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ def test_get_data_from_xml_doc(self, mock_write):
7070
version='2.3.9',
7171
qualifiers=OrderedDict([('distro', 'wheezy')]),
7272
subpath=None)},
73-
reference_urls=set(),
74-
reference_ids=[],
7573
cve_id='CVE-2002-2443'
7674
),
7775
Advisory(
@@ -98,8 +96,6 @@ def test_get_data_from_xml_doc(self, mock_write):
9896
version='0:1.11.1+dfsg-5+deb7u1',
9997
qualifiers=OrderedDict([('distro', 'wheezy')]),
10098
subpath=None)},
101-
reference_urls=set(),
102-
reference_ids=[],
10399
cve_id='CVE-2001-1593')
104100

105101
}

vulnerabilities/tests/test_gentoo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
from vulnerabilities.importers.gentoo import GentooDataSource
3232
from vulnerabilities.data_source import Advisory
33+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3334

3435
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
3536
TEST_DATA = os.path.join(BASE_DIR, "test_data/gentoo/glsa-201709-09.xml")
@@ -107,8 +108,7 @@ def test_process_file(self):
107108
version='1.9.7',
108109
qualifiers=OrderedDict(),
109110
subpath=None)},
110-
reference_urls=[],
111-
reference_ids=['GLSA-201709-09'],
111+
vuln_references=[VulnerabilityReferenceUnit(url='https://security.gentoo.org/glsa/201709-09',reference_id='GLSA-201709-09')],
112112
cve_id='CVE-2017-9800')]
113113

114114
found_data = self.data_src.process_file(TEST_DATA)

vulnerabilities/tests/test_import_runner.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from vulnerabilities.data_source import Advisory
2929
from vulnerabilities.data_source import DataSource
3030
from vulnerabilities.data_source import PackageURL
31+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3132
from vulnerabilities.import_runner import ImportRunner
3233
from vulnerabilities.import_runner import _insert_vulnerabilities_and_references
3334

@@ -70,7 +71,7 @@ def save(self):
7071
Advisory(
7172
cve_id='MOCK-CVE-2020-1337',
7273
summary='vulnerability description here',
73-
reference_urls=['https://example.com/with/more/info/MOCK-CVE-2020-1337'],
74+
vuln_references=[VulnerabilityReferenceUnit(url='https://example.com/with/more/info/MOCK-CVE-2020-1337')],
7475
impacted_package_urls=[PackageURL(name='mock-webserver', type='pypi', version='1.2.33')],
7576
resolved_package_urls=[PackageURL(name='mock-webserver', type='pypi', version='1.2.34')],
7677
)

vulnerabilities/tests/test_openssl.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
from vulnerabilities.importers.openssl import OpenSSLDataSource
3030
from vulnerabilities.data_source import Advisory
31+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3132

3233
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
3334
TEST_DATA = os.path.join(BASE_DIR, 'test_data/', 'openssl_xml_data.xml')
@@ -86,10 +87,9 @@ def test_to_advisory(self):
8687
version='1.1.1g',
8788
qualifiers=OrderedDict(),
8889
subpath=None)},
89-
reference_urls=[
90-
'https://github.com/openssl/openssl/commit/' +
91-
'eb563247aef3e83dda7679c43f9649270462e5b1'],
92-
reference_ids=[],
90+
vuln_references=[VulnerabilityReferenceUnit(
91+
url='https://github.com/openssl/openssl/commit/' +
92+
'eb563247aef3e83dda7679c43f9649270462e5b1')],
9393
cve_id='CVE-2020-1967'),
9494
Advisory(
9595
summary='There is an overflow bug in the x64_64 Montgomery squaring procedure '
@@ -189,11 +189,12 @@ def test_to_advisory(self):
189189
qualifiers=OrderedDict(), subpath=None),
190190
PackageURL(type='generic', namespace=None, name='openssl', version='1.0.2u',
191191
qualifiers=OrderedDict(), subpath=None)},
192-
reference_urls=['https://github.com/openssl/openssl/commit/' +
193-
'419102400a2811582a7a3d4a4e317d72e5ce0a8f',
194-
'https://github.com/openssl/openssl/commit/' +
195-
'f1c5eea8a817075d31e43f5876993c6710238c98'],
196-
reference_ids=[],
192+
vuln_references=[VulnerabilityReferenceUnit(
193+
url='https://github.com/openssl/openssl/commit/' +
194+
'419102400a2811582a7a3d4a4e317d72e5ce0a8f'),
195+
VulnerabilityReferenceUnit(
196+
url='https://github.com/openssl/openssl/commit/' +
197+
'f1c5eea8a817075d31e43f5876993c6710238c98')],
197198
cve_id='CVE-2019-1551')
198199
]
199200
found_data = OpenSSLDataSource.to_advisories(data)

vulnerabilities/tests/test_redhat_importer.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import vulnerabilities.importers.redhat as redhat
3131
from vulnerabilities.data_source import Advisory
32+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3233

3334
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
3435
TEST_DATA = os.path.join(BASE_DIR, 'test_data/', 'redhat.json')
@@ -74,11 +75,7 @@ def test_to_advisory(self):
7475
qualifiers=OrderedDict(),
7576
subpath=None)],
7677
resolved_package_urls=[],
77-
reference_urls=[
78-
'https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2016-9401.json'],
79-
reference_ids=[
80-
'RHSA-2017:1931',
81-
'RHSA-2017:0725'],
78+
vuln_references=sorted([VulnerabilityReferenceUnit(url='https://bugzilla.redhat.com/show_bug.cgi?id=1396383', reference_id='1396383'), VulnerabilityReferenceUnit(url='https://access.redhat.com/errata/RHSA-2017:1931', reference_id='RHSA-2017:1931'), VulnerabilityReferenceUnit(url='https://access.redhat.com/errata/RHSA-2017:0725', reference_id='RHSA-2017:0725'), VulnerabilityReferenceUnit(url='https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2016-9401.json', reference_id='')], key=lambda x: x.url),
8279
cve_id='CVE-2016-9401'),
8380
Advisory(
8481
summary=('CVE-2016-10200 kernel: l2tp: Race condition '
@@ -106,26 +103,20 @@ def test_to_advisory(self):
106103
qualifiers=OrderedDict(),
107104
subpath=None)],
108105
resolved_package_urls=[],
109-
reference_urls=[
110-
'https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2016-10200.json'],
111-
reference_ids=[
112-
'RHSA-2017:1842',
113-
'RHSA-2017:2437',
114-
'RHSA-2017:2077',
115-
'RHSA-2017:2444'],
106+
vuln_references=sorted([VulnerabilityReferenceUnit(url='https://bugzilla.redhat.com/show_bug.cgi?id=1430347', reference_id='1430347'), VulnerabilityReferenceUnit(url='https://access.redhat.com/errata/RHSA-2017:1842', reference_id='RHSA-2017:1842'), VulnerabilityReferenceUnit(url='https://access.redhat.com/errata/RHSA-2017:2437', reference_id='RHSA-2017:2437'), VulnerabilityReferenceUnit(url='https://access.redhat.com/errata/RHSA-2017:2077', reference_id='RHSA-2017:2077'), VulnerabilityReferenceUnit(url='https://access.redhat.com/errata/RHSA-2017:2444', reference_id='RHSA-2017:2444'), VulnerabilityReferenceUnit(url='https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2016-10200.json', reference_id='')],key=lambda x:x.url),
116107
cve_id='CVE-2016-10200'),
117108
Advisory(
118109
summary=('CVE-2017-12168 Kernel: kvm: ARM64: '
119110
'assert failure when accessing PMCCNTR register'),
120111
impacted_package_urls=[],
121112
resolved_package_urls=[],
122-
reference_urls=[
123-
'https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2017-12168.json'],
124-
reference_ids=[],
113+
vuln_references=sorted([VulnerabilityReferenceUnit(url='https://bugzilla.redhat.com/show_bug.cgi?id=1492984', reference_id='1492984'), VulnerabilityReferenceUnit(url='https://access.redhat.com/hydra/rest/securitydata/cve/CVE-2017-12168.json', reference_id='')], key=lambda x:x.url),
125114
cve_id='CVE-2017-12168'),
126115
}
127116

128117
found_data = set()
129118
for adv in data:
130-
found_data.add(redhat.to_advisory(adv))
119+
adv = redhat.to_advisory(adv)
120+
adv.vuln_references = sorted(adv.vuln_references, key=lambda x : x.url)
121+
found_data.add(adv)
131122
assert expected_data == found_data

vulnerabilities/tests/test_retiredotnet.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
from vulnerabilities.importers.retiredotnet import RetireDotnetDataSource
3030
from vulnerabilities.data_source import Advisory
31+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3132

3233
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
3334

@@ -114,8 +115,7 @@ def test_process_file(self):
114115
version='1.1.5',
115116
qualifiers=OrderedDict(),
116117
subpath=None)},
117-
reference_urls=['https://github.com/aspnet/Announcements/issues/359'],
118-
reference_ids=[],
118+
vuln_references=[VulnerabilityReferenceUnit(url='https://github.com/aspnet/Announcements/issues/359', reference_id='')],
119119
cve_id='CVE-2019-0982')
120120

121121
found_data = self.data_src.process_file(path)

vulnerabilities/tests/test_ruby.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from vulnerabilities.importers.ruby import RubyDataSource
3232
from vulnerabilities.data_source import GitDataSourceConfiguration
3333
from vulnerabilities.data_source import Advisory
34+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3435

3536

3637
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
@@ -82,8 +83,7 @@ def test_process_file(self, mock_write):
8283
version='2.0.3',
8384
qualifiers=OrderedDict(),
8485
subpath=None)},
85-
reference_urls=['https://github.com/sinatra/sinatra/pull/1379'],
86-
reference_ids=[],
86+
vuln_references=[VulnerabilityReferenceUnit(url='https://github.com/sinatra/sinatra/pull/1379')],
8787
cve_id='CVE-2018-7212'),
8888
Advisory(
8989
summary=('Sinatra before 2.0.2 has XSS via the 400 Bad Request '
@@ -111,8 +111,7 @@ def test_process_file(self, mock_write):
111111
version='2.0.3',
112112
qualifiers=OrderedDict(),
113113
subpath=None)},
114-
reference_urls=['https://github.com/sinatra/sinatra/issues/1428'],
115-
reference_ids=[],
114+
vuln_references=[VulnerabilityReferenceUnit(url='https://github.com/sinatra/sinatra/issues/1428')],
116115
cve_id='CVE-2018-11627'),
117116
None}
118117

vulnerabilities/tests/test_safety_db.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from vulnerabilities.import_runner import ImportRunner
3131
from vulnerabilities.importers.safety_db import VersionAPI
3232
from vulnerabilities.importers.safety_db import categorize_versions
33+
from vulnerabilities.data_source import VulnerabilityReferenceUnit
3334

3435
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
3536
TEST_DATA = os.path.join(BASE_DIR, 'test_data/')

vulnerabilities/tests/test_suse_backports.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ def test_process_file(self):
6565
version='3.0.10-1.1.1',
6666
qualifiers=OrderedDict(),
6767
subpath=None)],
68-
reference_urls=[],
69-
reference_ids=[],
7068
cve_id='CVE-2009-1313'),
7169
Advisory(
7270
summary='',
@@ -79,8 +77,6 @@ def test_process_file(self):
7977
version='3.5-1.1.5',
8078
qualifiers=OrderedDict(),
8179
subpath=None)],
82-
reference_urls=[],
83-
reference_ids=[],
8480
cve_id='CVE-2009-1313'),
8581
Advisory(
8682
summary='',
@@ -93,8 +89,6 @@ def test_process_file(self):
9389
version='3.0.10-1.1.1',
9490
qualifiers=OrderedDict(),
9591
subpath=None)],
96-
reference_urls=[],
97-
reference_ids=[],
9892
cve_id='CVE-2009-1313'),
9993
Advisory(
10094
summary='',
@@ -107,8 +101,6 @@ def test_process_file(self):
107101
version='0.7.0.r4359-15.9.2',
108102
qualifiers=OrderedDict(),
109103
subpath=None)],
110-
reference_urls=[],
111-
reference_ids=[],
112104
cve_id='CVE-2009-0365'),
113105
Advisory(
114106
summary='',
@@ -121,8 +113,6 @@ def test_process_file(self):
121113
version='0.7.0.r4359-15.9.2',
122114
qualifiers=OrderedDict(),
123115
subpath=None)],
124-
reference_urls=[],
125-
reference_ids=[],
126116
cve_id='CVE-2009-0578'),
127117
]
128118

0 commit comments

Comments
 (0)