Skip to content

Commit 3b95251

Browse files
committed
fix: filter lookupId and filterSeverityAndConfidence
1 parent 970e8c3 commit 3b95251

File tree

2 files changed

+113
-6
lines changed

2 files changed

+113
-6
lines changed

simplesecurity/filter.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def lookupId(identifier: str) -> list[str]:
2929
str: id that it equals
3030
"""
3131
if identifier not in ID_MAP:
32-
return ["not found"]
32+
return [identifier]
3333
return ID_MAP[identifier]
3434

3535

@@ -89,9 +89,12 @@ def filterSeverityAndConfidence(
8989
list[Finding]: new deduplicated list
9090
"""
9191
if severity == 0 and confidence == 0:
92-
return findings
93-
findings = findings.copy()
92+
return findings.copy()
93+
filtered = []
9494
for finding in findings:
95-
if finding["severity"] < severity or finding["confidence"] < confidence:
96-
findings.remove(finding)
97-
return findings
95+
print(
96+
f'severity {finding["severity"] < severity} confidence {finding["confidence"] < confidence}'
97+
)
98+
if finding["severity"] >= severity and finding["confidence"] >= confidence:
99+
filtered.append(finding)
100+
return filtered

tests/test_filter.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
from pathlib import Path
2+
3+
from simplesecurity import filter, level, types
4+
5+
THISDIR = str(Path(__file__).resolve().parent)
6+
7+
finding: types.Finding = {
8+
"id": "TEST_ID",
9+
"title": "TEST",
10+
"description": "This is a test",
11+
"file": "this_file_does_not_exist",
12+
"evidence": [{"selected": True, "line": 0, "content": "lineContent"}],
13+
"severity": level.Level.MED,
14+
"confidence": level.Level.MED,
15+
"line": 0,
16+
"_other": {},
17+
}
18+
19+
simpleFindings: list[types.Finding] = [
20+
finding.copy(),
21+
]
22+
23+
24+
def test_lookupId_exists():
25+
# "DUO105": ["B102"]
26+
assert filter.lookupId("DUO105") == ["B102"]
27+
28+
29+
def test_lookupId_notexists():
30+
# "DUO105": ["B102"]
31+
assert filter.lookupId("not_exists") == ["not_exists"]
32+
33+
34+
def test_findingsEqual_true():
35+
findingA = finding.copy()
36+
findingB = finding.copy()
37+
assert filter.findingsEqual(findingA, findingB) == 1
38+
39+
40+
def test_findingsEqual_false_file():
41+
findingA = finding.copy()
42+
findingB = finding.copy()
43+
findingB["file"] = "this_file_also_does_not_exist"
44+
assert filter.findingsEqual(findingA, findingB) == 0
45+
46+
47+
def test_findingsEqual_false_line():
48+
findingA = finding.copy()
49+
findingB = finding.copy()
50+
findingB["line"] = 1
51+
assert filter.findingsEqual(findingA, findingB) == 0
52+
53+
54+
def test_findingsEqual_false_id():
55+
findingA = finding.copy()
56+
findingB = finding.copy()
57+
findingB["id"] = "ANOTHER_TEST_ID"
58+
assert filter.findingsEqual(findingA, findingB) == 0
59+
60+
61+
def test_deduplicate():
62+
assert filter.deduplicate([finding.copy(), finding.copy()]) == simpleFindings
63+
64+
65+
def test_filterConfidence_2():
66+
findingA = finding.copy()
67+
findingA["confidence"] = level.Level.UNKNOWN
68+
findingB = finding.copy()
69+
findingB["confidence"] = level.Level.LOW
70+
findingC = finding.copy()
71+
findingC["confidence"] = level.Level.MED
72+
findingD = finding.copy()
73+
findingD["confidence"] = level.Level.HIGH
74+
findingE = finding.copy()
75+
findingE["confidence"] = level.Level.CRIT
76+
assert (
77+
len(
78+
filter.filterSeverityAndConfidence(
79+
[findingA, findingB, findingC, findingD, findingE], 0, 2
80+
)
81+
)
82+
== 3
83+
)
84+
85+
86+
def test_filterSeverity_4():
87+
findingA = finding.copy()
88+
findingA["severity"] = level.Level.UNKNOWN
89+
findingB = finding.copy()
90+
findingB["severity"] = level.Level.LOW
91+
findingC = finding.copy()
92+
findingC["severity"] = level.Level.MED
93+
findingD = finding.copy()
94+
findingD["severity"] = level.Level.HIGH
95+
findingE = finding.copy()
96+
findingE["severity"] = level.Level.CRIT
97+
assert (
98+
len(
99+
filter.filterSeverityAndConfidence(
100+
[findingA, findingB, findingC, findingD, findingE], 4, 0
101+
)
102+
)
103+
== 1
104+
)

0 commit comments

Comments
 (0)