Skip to content

Commit ce1da6e

Browse files
committed
Fix tests
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent ab1a60b commit ce1da6e

File tree

55 files changed

+1475
-1486
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1475
-1486
lines changed

vulnerabilities/importer.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ def from_dict(cls, data: dict):
253253
@dataclasses.dataclass(eq=True)
254254
@functools.total_ordering
255255
class PatchData:
256-
patch_url: Optional[str] = None
257-
patch_text: Optional[str] = None
256+
patch_url: Optional[str] = ""
257+
patch_text: Optional[str] = ""
258258
patch_checksum: Optional[str] = dataclasses.field(init=False, default=None)
259259

260260
def __post_init__(self):
@@ -271,9 +271,9 @@ def __lt__(self, other):
271271

272272
def _cmp_key(self):
273273
return (
274-
self.patch_url,
275-
self.patch_text,
276-
self.patch_checksum,
274+
self.patch_url or "",
275+
self.patch_text or "",
276+
self.patch_checksum or "",
277277
)
278278

279279
def to_dict(self) -> dict:
@@ -556,13 +556,6 @@ def from_dict(cls, affected_pkg: dict):
556556
class AdvisoryData:
557557
"""
558558
This data class expresses the contract between data sources and the import runner.
559-
560-
If a vulnerability_id is present then:
561-
summary or affected_packages or references must be present
562-
otherwise
563-
either affected_package or references should be present
564-
565-
date_published must be aware datetime
566559
"""
567560

568561
aliases: List[str] = dataclasses.field(default_factory=list)
@@ -613,13 +606,6 @@ def from_dict(cls, advisory_data):
613606
class AdvisoryDataV2:
614607
"""
615608
This data class expresses the contract between data sources and the import runner.
616-
617-
If a vulnerability_id is present then:
618-
summary or affected_packages or references must be present
619-
otherwise
620-
either affected_package or references should be present
621-
622-
date_published must be aware datetime
623609
"""
624610

625611
advisory_id: str = ""

vulnerabilities/importers/curl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def parse_advisory_data(raw_data) -> AdvisoryData:
9797
... ]
9898
... }
9999
>>> parse_advisory_data(raw_data)
100-
AdvisoryData(advisory_id='', aliases=['CVE-2024-2379'], summary='QUIC certificate check bypass with wolfSSL', affected_packages=[AffectedPackage(package=PackageURL(type='generic', namespace='curl.se', name='curl', version=None, qualifiers={}, subpath=None), affected_version_range=GenericVersionRange(constraints=(VersionConstraint(comparator='=', version=SemverVersion(string='8.6.0')),)), fixed_version=SemverVersion(string='8.7.0'))], references=[Reference(reference_id='', reference_type='', url='https://curl.se/docs/CVE-2024-2379.html', severities=[VulnerabilitySeverity(system=Cvssv3ScoringSystem(identifier='cvssv3.1', name='CVSSv3.1 Base Score', url='https://www.first.org/cvss/v3-1/', notes='CVSSv3.1 base score and vector'), value='Low', scoring_elements='', published_at=None, url=None)]), Reference(reference_id='', reference_type='', url='https://hackerone.com/reports/2410774', severities=[])], references_v2=[], patches=[], date_published=datetime.datetime(2024, 3, 27, 8, 0, tzinfo=datetime.timezone.utc), weaknesses=[297], severities=[], url='https://curl.se/docs/CVE-2024-2379.json', original_advisory_text=None)
100+
AdvisoryData(aliases=['CVE-2024-2379'], summary='QUIC certificate check bypass with wolfSSL', affected_packages=[AffectedPackage(package=PackageURL(type='generic', namespace='curl.se', name='curl', version=None, qualifiers={}, subpath=None), affected_version_range=GenericVersionRange(constraints=(VersionConstraint(comparator='=', version=SemverVersion(string='8.6.0')),)), fixed_version=SemverVersion(string='8.7.0'))], references=[Reference(reference_id='', reference_type='', url='https://curl.se/docs/CVE-2024-2379.html', severities=[VulnerabilitySeverity(system=Cvssv3ScoringSystem(identifier='cvssv3.1', name='CVSSv3.1 Base Score', url='https://www.first.org/cvss/v3-1/', notes='CVSSv3.1 base score and vector'), value='Low', scoring_elements='', published_at=None, url=None)]), Reference(reference_id='', reference_type='', url='https://hackerone.com/reports/2410774', severities=[])], date_published=datetime.datetime(2024, 3, 27, 8, 0, tzinfo=datetime.timezone.utc), weaknesses=[297], url='https://curl.se/docs/CVE-2024-2379.json')
101101
"""
102102

103103
affected = get_item(raw_data, "affected")[0] if len(get_item(raw_data, "affected")) > 0 else []

vulnerabilities/pipelines/v2_importers/debian_importer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from univers.version_range import DebianVersionRange
1717

1818
from vulnerabilities.importer import AdvisoryData
19+
from vulnerabilities.importer import AdvisoryDataV2
1920
from vulnerabilities.importer import AffectedPackageV2
2021
from vulnerabilities.importer import ReferenceV2
2122
from vulnerabilities.pipelines import VulnerableCodeBaseImporterPipelineV2
@@ -160,7 +161,7 @@ def parse(self, pkg_name: str, records: Mapping[str, Any]) -> Iterable[AdvisoryD
160161
)
161162
weaknesses = get_cwe_from_debian_advisory(record)
162163

163-
yield AdvisoryData(
164+
yield AdvisoryDataV2(
164165
advisory_id=f"{pkg_name}/{record_identifier}",
165166
aliases=[record_identifier],
166167
summary=record.get("description", ""),

vulnerabilities/pipelines/v2_importers/istio_importer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def collect_advisories(self) -> Iterable[AdvisoryDataV2]:
119119
aliases=cves,
120120
summary=summary,
121121
affected_packages=affected_packages,
122-
references_v2=references,
122+
references=references,
123123
date_published=release_date,
124124
url=advisory_url,
125125
original_advisory_text=md_file.read_text(encoding="utf-8"),

vulnerabilities/pipelines/v2_importers/mattermost_importer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def collect_advisories(self) -> Iterable[AdvisoryDataV2]:
118118
advisory_id=vuln_id,
119119
aliases=[cve_id],
120120
summary=details,
121-
references_v2=[reference],
121+
references=[reference],
122122
affected_packages=affected_packages,
123123
url=self.url,
124124
)

vulnerabilities/pipelines/v2_importers/mozilla_importer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def parse_yml_advisory(mfsa_id, lines, advisory_url) -> Iterable[AdvisoryDataV2]
119119
aliases=[],
120120
summary=mfsa_summary,
121121
affected_packages=affected_packages,
122-
references_v2=[reference],
122+
references=[reference],
123123
severities=[severity],
124124
url=advisory_url,
125125
date_published=date_parser.parse(date_published) if date_published else None,
@@ -141,7 +141,7 @@ def parse_yml_advisory(mfsa_id, lines, advisory_url) -> Iterable[AdvisoryDataV2]
141141
aliases=[cve],
142142
summary=mfsa_summary + "\n" + advisory_summary,
143143
affected_packages=affected_packages,
144-
references_v2=[reference],
144+
references=[reference],
145145
url=advisory_url,
146146
severities=[advisory_severity],
147147
date_published=date_parser.parse(date_published) if date_published else None,
@@ -165,7 +165,7 @@ def parse_md_advisory(mfsa_id, lines, advisory_url) -> Iterable[AdvisoryDataV2]:
165165
aliases=[],
166166
summary=description,
167167
affected_packages=affected_packages,
168-
references_v2=[reference],
168+
references=[reference],
169169
severities=[severity],
170170
url=advisory_url,
171171
date_published=date_parser.parse(data.get("announced")) if data.get("announced") else None,

vulnerabilities/pipelines/v2_importers/nginx_importer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def to_advisory_data(nginx_adv: NginxAdvisory) -> AdvisoryDataV2:
145145
aliases=nginx_adv.aliases,
146146
summary=nginx_adv.summary,
147147
affected_packages=affected_packages,
148-
references_v2=nginx_adv.references,
148+
references=nginx_adv.references,
149149
patches=nginx_adv.patches,
150150
url="https://nginx.org/en/security_advisories.html",
151151
)

vulnerabilities/pipelines/v2_importers/npm_importer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def to_advisory_data(self, file: Path) -> Iterable[AdvisoryDataV2]:
130130
summary=build_description(summary=summary, description=description),
131131
date_published=date_published,
132132
affected_packages=affected_packages,
133-
references_v2=references,
133+
references=references,
134134
severities=severities,
135135
url=f"https://github.com/nodejs/security-wg/blob/main/vuln/npm/{id}.json",
136136
original_advisory_text=advisory_text,

vulnerabilities/pipelines/v2_importers/ubuntu_osv_importer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
from fetchcode.vcs import fetch_via_vcs
1414

15-
from vulnerabilities.importer import AdvisoryData
15+
from vulnerabilities.importer import AdvisoryDataV2
1616
from vulnerabilities.pipelines import VulnerableCodeBaseImporterPipelineV2
1717
from vulnerabilities.pipes.osv_v2 import parse_advisory_data_v3
1818
from vulnerabilities.utils import get_advisory_url
@@ -50,7 +50,7 @@ def advisories_count(self):
5050
cve_directory = self.advisories_path / "osv" / "cve"
5151
return sum(1 for _ in cve_directory.rglob("*.json"))
5252

53-
def collect_advisories(self) -> Iterable[AdvisoryData]:
53+
def collect_advisories(self) -> Iterable[AdvisoryDataV2]:
5454
supported_ecosystems = ["deb"]
5555
cve_directory = self.advisories_path / "osv" / "cve"
5656

vulnerabilities/tests/pipelines/v2_importers/test_apache_httpd_importer_pipeline_v2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import pytest
1111
import requests
1212

13-
from vulnerabilities.importer import AdvisoryData
13+
from vulnerabilities.importer import AdvisoryDataV2
1414
from vulnerabilities.pipelines.v2_importers.apache_httpd_importer import ApacheHTTPDImporterPipeline
1515
from vulnerabilities.pipelines.v2_importers.apache_httpd_importer import fetch_links
1616
from vulnerabilities.pipelines.v2_importers.apache_httpd_importer import get_weaknesses
@@ -140,7 +140,7 @@ def fake_get(u):
140140
assert len(advisories) == 2
141141
# Validate first advisory
142142
adv1 = advisories[0]
143-
assert isinstance(adv1, AdvisoryData)
143+
assert isinstance(adv1, AdvisoryDataV2)
144144
assert adv1.advisory_id == "CVE-1"
145145
assert adv1.summary == "Test desc"
146146
assert adv1.severities and adv1.severities[0].value == "5.0"

0 commit comments

Comments
 (0)