Handle all errors in the formatter tests (#431)

Signed-off-by: Cosmin Cojocar <cosmin.cojocar@gmx.ch>
This commit is contained in:
Cosmin Cojocar 2020-01-16 09:05:38 +01:00 committed by GitHub
parent 9cb83e10af
commit a1969e208c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,11 +4,12 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"fmt" "fmt"
"strings"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
"github.com/securego/gosec" "github.com/securego/gosec"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
"strings"
) )
func createIssue(ruleID string, cwe gosec.Cwe) gosec.Issue { func createIssue(ruleID string, cwe gosec.Cwe) gosec.Issue {
@ -261,10 +262,11 @@ var _ = Describe("Formatter", func() {
error := map[string][]gosec.Error{} error := map[string][]gosec.Error{}
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "csv", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err := CreateReport(buf, "csv", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
pattern := "/home/src/project/test.go,1,test,HIGH,HIGH,testcode,CWE-%s\n" pattern := "/home/src/project/test.go,1,test,HIGH,HIGH,testcode,CWE-%s\n"
expect := fmt.Sprintf(pattern, cwe.ID) expect := fmt.Sprintf(pattern, cwe.ID)
Expect(string(buf.Bytes())).To(Equal(expect)) Expect(string(buf.String())).To(Equal(expect))
} }
}) })
It("xml formatted report should contain the CWE mapping", func() { It("xml formatted report should contain the CWE mapping", func() {
@ -274,10 +276,11 @@ var _ = Describe("Formatter", func() {
error := map[string][]gosec.Error{} error := map[string][]gosec.Error{}
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "xml", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{NumFiles: 0, NumLines: 0, NumNosec: 0, NumFound: 0}, error) err := CreateReport(buf, "xml", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{NumFiles: 0, NumLines: 0, NumNosec: 0, NumFound: 0}, error)
Expect(err).ShouldNot(HaveOccurred())
pattern := "Results:\n\n\n[/home/src/project/test.go:1] - %s (CWE-%s): test (Confidence: HIGH, Severity: HIGH)\n > testcode\n\n\nSummary:\n Files: 0\n Lines: 0\n Nosec: 0\n Issues: 0\n\n" pattern := "Results:\n\n\n[/home/src/project/test.go:1] - %s (CWE-%s): test (Confidence: HIGH, Severity: HIGH)\n > testcode\n\n\nSummary:\n Files: 0\n Lines: 0\n Nosec: 0\n Issues: 0\n\n"
expect := fmt.Sprintf(pattern, rule, cwe.ID) expect := fmt.Sprintf(pattern, rule, cwe.ID)
Expect(string(buf.Bytes())).To(Equal(expect)) Expect(string(buf.String())).To(Equal(expect))
} }
}) })
It("json formatted report should contain the CWE mapping", func() { It("json formatted report should contain the CWE mapping", func() {
@ -290,10 +293,11 @@ var _ = Describe("Formatter", func() {
expect := new(bytes.Buffer) expect := new(bytes.Buffer)
enc := json.NewEncoder(expect) enc := json.NewEncoder(expect)
enc.Encode(data) err := enc.Encode(data)
Expect(err).ShouldNot(HaveOccurred())
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "json", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err = CreateReport(buf, "json", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
result := stripString(buf.String()) result := stripString(buf.String())
expectation := stripString(expect.String()) expectation := stripString(expect.String())
Expect(result).To(Equal(expectation)) Expect(result).To(Equal(expectation))
@ -309,10 +313,11 @@ var _ = Describe("Formatter", func() {
expect := new(bytes.Buffer) expect := new(bytes.Buffer)
enc := json.NewEncoder(expect) enc := json.NewEncoder(expect)
enc.Encode(data) err := enc.Encode(data)
Expect(err).ShouldNot(HaveOccurred())
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "html", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err = CreateReport(buf, "html", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
result := stripString(buf.String()) result := stripString(buf.String())
expectation := stripString(expect.String()) expectation := stripString(expect.String())
Expect(result).To(ContainSubstring(expectation)) Expect(result).To(ContainSubstring(expectation))
@ -328,10 +333,11 @@ var _ = Describe("Formatter", func() {
expect := new(bytes.Buffer) expect := new(bytes.Buffer)
enc := yaml.NewEncoder(expect) enc := yaml.NewEncoder(expect)
enc.Encode(data) err := enc.Encode(data)
Expect(err).ShouldNot(HaveOccurred())
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "yaml", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err = CreateReport(buf, "yaml", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
result := stripString(buf.String()) result := stripString(buf.String())
expectation := stripString(expect.String()) expectation := stripString(expect.String())
Expect(result).To(ContainSubstring(expectation)) Expect(result).To(ContainSubstring(expectation))
@ -347,10 +353,11 @@ var _ = Describe("Formatter", func() {
expect := new(bytes.Buffer) expect := new(bytes.Buffer)
enc := yaml.NewEncoder(expect) enc := yaml.NewEncoder(expect)
enc.Encode(data) err := enc.Encode(data)
Expect(err).ShouldNot(HaveOccurred())
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "junit-xml", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err = CreateReport(buf, "junit-xml", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
expectation := stripString(fmt.Sprintf("[/home/src/project/test.go:1] - test (Confidence: 2, Severity: 2, CWE: %s)", cwe.ID)) expectation := stripString(fmt.Sprintf("[/home/src/project/test.go:1] - test (Confidence: 2, Severity: 2, CWE: %s)", cwe.ID))
result := stripString(buf.String()) result := stripString(buf.String())
Expect(result).To(ContainSubstring(expectation)) Expect(result).To(ContainSubstring(expectation))
@ -366,10 +373,11 @@ var _ = Describe("Formatter", func() {
expect := new(bytes.Buffer) expect := new(bytes.Buffer)
enc := yaml.NewEncoder(expect) enc := yaml.NewEncoder(expect)
enc.Encode(data) err := enc.Encode(data)
Expect(err).ShouldNot(HaveOccurred())
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "text", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err = CreateReport(buf, "text", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
expectation := stripString(fmt.Sprintf("[/home/src/project/test.go:1] - %s (CWE-%s): test (Confidence: HIGH, Severity: HIGH)", rule, cwe.ID)) expectation := stripString(fmt.Sprintf("[/home/src/project/test.go:1] - %s (CWE-%s): test (Confidence: HIGH, Severity: HIGH)", rule, cwe.ID))
result := stripString(buf.String()) result := stripString(buf.String())
Expect(result).To(ContainSubstring(expectation)) Expect(result).To(ContainSubstring(expectation))
@ -381,12 +389,15 @@ var _ = Describe("Formatter", func() {
issue := createIssue(rule, cwe) issue := createIssue(rule, cwe)
error := map[string][]gosec.Error{} error := map[string][]gosec.Error{}
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "sonarqube", []string{"/home/src/project"}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err := CreateReport(buf, "sonarqube", []string{"/home/src/project"}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
result := stripString(buf.String()) result := stripString(buf.String())
expect := new(bytes.Buffer) expect := new(bytes.Buffer)
enc := json.NewEncoder(expect) enc := json.NewEncoder(expect)
enc.Encode(cwe) err = enc.Encode(cwe)
Expect(err).ShouldNot(HaveOccurred())
expectation := stripString(expect.String()) expectation := stripString(expect.String())
Expect(result).To(ContainSubstring(expectation)) Expect(result).To(ContainSubstring(expectation))
@ -399,10 +410,11 @@ var _ = Describe("Formatter", func() {
error := map[string][]gosec.Error{} error := map[string][]gosec.Error{}
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
CreateReport(buf, "golint", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error) err := CreateReport(buf, "golint", []string{}, []*gosec.Issue{&issue}, &gosec.Metrics{}, error)
Expect(err).ShouldNot(HaveOccurred())
pattern := "/home/src/project/test.go:1:1: [CWE-%s] test (Rule:%s, Severity:HIGH, Confidence:HIGH)\n" pattern := "/home/src/project/test.go:1:1: [CWE-%s] test (Rule:%s, Severity:HIGH, Confidence:HIGH)\n"
expect := fmt.Sprintf(pattern, cwe.ID, rule) expect := fmt.Sprintf(pattern, cwe.ID, rule)
Expect(string(buf.Bytes())).To(Equal(expect)) Expect(string(buf.String())).To(Equal(expect))
} }
}) })
}) })