-
Notifications
You must be signed in to change notification settings - Fork 534
/
results-formatter.spec.ts
96 lines (85 loc) · 2.96 KB
/
results-formatter.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import {
filterPoliciesBySeverity,
formatScanResults,
} from '../../../../src/cli/commands/test/iac-local-execution/results-formatter';
import { SEVERITY } from '../../../../src/lib/snyk-test/common';
import {
expectedFormattedResultsWithLineNumber,
expectedFormattedResultsWithoutLineNumber,
meta,
policyStub,
generateScanResults,
} from './results-formatter.fixtures';
import { issuesToLineNumbers } from '@snyk/cloud-config-parser';
import { PolicyMetadata } from '../../../../src/cli/commands/test/iac-local-execution/types';
jest.mock('@snyk/cloud-config-parser');
describe('formatScanResults', () => {
it.each([
[
{ severityThreshold: SEVERITY.HIGH },
expectedFormattedResultsWithoutLineNumber,
],
[
{ severityThreshold: SEVERITY.HIGH, sarif: true },
expectedFormattedResultsWithLineNumber,
],
[
{ severityThreshold: SEVERITY.HIGH, json: true },
expectedFormattedResultsWithLineNumber,
],
[
{ severityThreshold: SEVERITY.HIGH, 'sarif-file-output': 'output.sarif' },
expectedFormattedResultsWithLineNumber,
],
[
{ severityThreshold: SEVERITY.HIGH, 'json-file-output': 'output.json' },
expectedFormattedResultsWithLineNumber,
],
])(
'given %p options object, returns the expected results',
(optionsObject, expectedResult) => {
(issuesToLineNumbers as jest.Mock).mockReturnValue(3);
const formattedResults = formatScanResults(
generateScanResults(),
optionsObject,
meta,
);
expect(formattedResults.length).toEqual(1);
expect(formattedResults[0]).toEqual(expectedResult);
},
);
// TODO: add tests for the multi-doc yaml grouping
});
describe('filterPoliciesBySeverity', () => {
it('returns the formatted results filtered by severity - no default threshold', () => {
const scanResults = generateScanResults();
const results = filterPoliciesBySeverity(scanResults[0].violatedPolicies);
expect(results).toEqual(scanResults[0].violatedPolicies);
});
it('returns the formatted results filtered by severity - medium threshold, equal to severity', () => {
const scanResults = generateScanResults();
const results = filterPoliciesBySeverity(
scanResults[0].violatedPolicies,
SEVERITY.MEDIUM,
);
expect(results).toEqual(scanResults[0].violatedPolicies);
});
it('returns no results if violatedPolicy severity is under threshold', () => {
const scanResults = generateScanResults();
const results: PolicyMetadata[] = filterPoliciesBySeverity(
scanResults[0].violatedPolicies,
SEVERITY.HIGH,
);
expect(results).toEqual([]);
});
it('returns no results if violatedPolicy severity is now set to none', () => {
const resultsWithSeverityOfNone = {
...policyStub,
severity: 'none' as SEVERITY,
};
const results: PolicyMetadata[] = filterPoliciesBySeverity([
resultsWithSeverityOfNone,
]);
expect(results).toEqual([]);
});
});