Skip to content

Commit f2868f0

Browse files
committed
Test ordering
Signed-off-by: L. Pivarc <[email protected]>
1 parent 7bc5ae9 commit f2868f0

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

cmd/gosec/sort_issues_test.go

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
6+
. "github.com/onsi/ginkgo"
7+
. "github.com/onsi/gomega"
8+
"github.com/securego/gosec/v2"
9+
)
10+
11+
var defaultIssue = gosec.Issue{
12+
File: "/home/src/project/test.go",
13+
Line: "1",
14+
Col: "1",
15+
RuleID: "ruleID",
16+
What: "test",
17+
Confidence: gosec.High,
18+
Severity: gosec.High,
19+
Code: "1: testcode",
20+
Cwe: gosec.GetCwe("G101"),
21+
}
22+
23+
func createIssue() gosec.Issue {
24+
return defaultIssue
25+
}
26+
27+
func TestRules(t *testing.T) {
28+
RegisterFailHandler(Fail)
29+
RunSpecs(t, "Sort issues Suite")
30+
}
31+
32+
func firstIsGreater(less, greater *gosec.Issue) {
33+
slice := []*gosec.Issue{less, greater}
34+
35+
sortIssues(slice)
36+
37+
ExpectWithOffset(0, slice[0]).To(Equal(greater))
38+
}
39+
40+
var _ = Describe("Sorting by Severity", func() {
41+
It("sortes by severity", func() {
42+
less := createIssue()
43+
less.Severity = gosec.Low
44+
greater := createIssue()
45+
less.Severity = gosec.High
46+
firstIsGreater(&less, &greater)
47+
})
48+
49+
Context("Serverity is same", func() {
50+
It("sortes by What", func() {
51+
less := createIssue()
52+
less.What = "test1"
53+
greater := createIssue()
54+
greater.What = "test2"
55+
firstIsGreater(&less, &greater)
56+
})
57+
})
58+
59+
Context("Serverity and What is same", func() {
60+
It("sortes by File", func() {
61+
less := createIssue()
62+
less.File = "test1"
63+
greater := createIssue()
64+
greater.File = "test2"
65+
66+
firstIsGreater(&less, &greater)
67+
})
68+
})
69+
70+
Context("Serverity, What and File is same", func() {
71+
It("sortes by line number", func() {
72+
less := createIssue()
73+
less.Line = "1"
74+
greater := createIssue()
75+
greater.Line = "2"
76+
77+
firstIsGreater(&less, &greater)
78+
})
79+
})
80+
})

output/formatter_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ import (
1212
"gopkg.in/yaml.v2"
1313
)
1414

15+
func createIssueWithFileWhat(file, what string) *gosec.Issue {
16+
issue := createIssue("i1", gosec.GetCwe("G101"))
17+
issue.File = file
18+
issue.What = what
19+
return &issue
20+
}
21+
1522
func createIssue(ruleID string, cwe gosec.Cwe) gosec.Issue {
1623
return gosec.Issue{
1724
File: "/home/src/project/test.go",
@@ -248,6 +255,23 @@ var _ = Describe("Formatter", func() {
248255
Expect(*issues).To(Equal(*want))
249256
})
250257
})
258+
259+
Context("When using junit", func() {
260+
It("preserves order of issues", func() {
261+
issues := []*gosec.Issue{createIssueWithFileWhat("i1", "1"), createIssueWithFileWhat("i2", "2"), createIssueWithFileWhat("i3", "1")}
262+
263+
junitReport := createJUnitXMLStruct(&reportInfo{Issues: issues})
264+
265+
testSuite := junitReport.Testsuites[0]
266+
267+
Expect(testSuite.Testcases[0].Name).To(Equal(issues[0].File))
268+
Expect(testSuite.Testcases[1].Name).To(Equal(issues[2].File))
269+
270+
testSuite = junitReport.Testsuites[1]
271+
Expect(testSuite.Testcases[0].Name).To(Equal(issues[1].File))
272+
273+
})
274+
})
251275
Context("When using different report formats", func() {
252276

253277
grules := []string{"G101", "G102", "G103", "G104", "G106",

0 commit comments

Comments
 (0)