Skip to content

Commit 0d22189

Browse files
committed
add a doctest
Signed-off-by: ziad <ziadhany2016@gmail.com>
1 parent c9b99e0 commit 0d22189

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

  • vulnerabilities/importers

vulnerabilities/importers/gsd.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ def advisory_data(self) -> Iterable[AdvisoryData]:
3535

3636

3737
def parse_advisory_data(file):
38+
"""
39+
Parse a GSD advisory file and return an AdvisoryData.
40+
Each advisory file contains the advisory information in JSON format.
41+
"""
3842
raw_data = json.loads(file)
3943

4044
namespaces = raw_data.get("namespaces") or {}
@@ -64,29 +68,72 @@ def parse_advisory_data(file):
6468

6569

6670
def get_summary(cve) -> str:
71+
"""
72+
Args:
73+
cve: json object have a CVE_data_meta key
74+
{"CVE_data_meta": {"TITLE": "DoS vulnerability: Invalid Accent Colors"}
75+
Returns:
76+
a TITLE value as summary
77+
"""
6778
CVE_data_meta = cve.get("CVE_data_meta") or {}
6879
return CVE_data_meta.get("TITLE") or ""
6980

7081

7182
def get_cvss_str_v_cve_org(cve) -> str:
83+
"""
84+
Args:
85+
cve: a json object have impact key , CVSS key and vectorString
86+
{"impact": {"cvss": {"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H"}}}
87+
Returns:
88+
vectorString of cvss "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:H"
89+
"""
7290
impact = cve.get("impact") or {}
7391
cvss = impact.get("cvss") or {}
7492
return cvss.get("vectorString")
7593

7694

7795
def get_description(cve) -> [str]:
96+
"""
97+
Get a list description value from description object
98+
>>> get_description({"description": {"description_data": [{"lang": "eng","value": "the description"}]}})
99+
['the description']
100+
101+
"""
78102
description = cve.get("description") or {}
79103
description_data = description.get("description_data") or []
80104
return [desc["value"] for desc in description_data if desc["value"]]
81105

82106

83107
def get_references(cve):
108+
"""
109+
Args:
110+
cve: json object with a references key
111+
Returns:
112+
list of Reference assigned with url
113+
>>> get_references({"references": {
114+
... "reference_data": [{
115+
... "name": "https://kc.mcafee.com/corporate/index?page=content&id=SB10198",
116+
... "refsource": "CONFIRM",
117+
... "tags": ["Vendor Advisory"],
118+
... "url": "https://kc.mcafee.com/corporate/index?page=content&id=SB10198"}]}})
119+
[Reference(reference_id='', url='https://kc.mcafee.com/corporate/index?page=content&id=SB10198', severities=[])]
120+
121+
"""
84122
references = cve.get("references") or {}
85123
reference_data = references.get("reference_data") or []
86124
return [Reference(url=ref["url"]) for ref in reference_data if ref["url"]]
87125

88126

89127
def get_aliases(cve) -> [str]:
128+
"""
129+
Args:
130+
cve:
131+
Returns:
132+
list of aliases
133+
134+
>>> get_aliases({"CVE_data_meta": {"ID": "CVE-2017-4017"},"source": {"advisory": "GHSA-v8x6-59g4-5g3w"}})
135+
['CVE-2017-4017', 'GHSA-v8x6-59g4-5g3w']
136+
"""
90137
CVE_data_meta = cve.get("CVE_data_meta") or {}
91138
alias = CVE_data_meta.get("ID")
92139

@@ -102,6 +149,15 @@ def get_aliases(cve) -> [str]:
102149

103150

104151
def get_published_date_nvd_nist_gov(nvd_nist_gov):
152+
"""
153+
Args:
154+
nvd_nist_gov: json object have a publishedDate as a key
155+
Returns:
156+
a published date
157+
>>> get_published_date_nvd_nist_gov({"publishedDate": "2022-06-23T07:15Z"})
158+
datetime.datetime(2022, 6, 23, 7, 15, tzinfo=<StaticTzInfo 'Z'>)
159+
160+
"""
105161
publishedDate = nvd_nist_gov.get("publishedDate")
106162
return publishedDate and dateparser.parse(publishedDate)
107163

0 commit comments

Comments
 (0)