diff --git a/formats/sarifutils/sarifutils.go b/formats/sarifutils/sarifutils.go index f4353640..baf3a066 100644 --- a/formats/sarifutils/sarifutils.go +++ b/formats/sarifutils/sarifutils.go @@ -423,7 +423,9 @@ func GetRulesPropertyCount(property, value string, runs ...*sarif.Run) (count in func GetResultFingerprint(result *sarif.Result) string { if result.Fingerprints != nil { - return result.Fingerprints[jasutils.SastFingerprintKey].(string) + if value, ok := result.Fingerprints[jasutils.SastFingerprintKey].(string); ok { + return value + } } return "" } diff --git a/formats/sarifutils/sarifutils_test.go b/formats/sarifutils/sarifutils_test.go index 6363b515..69c54723 100644 --- a/formats/sarifutils/sarifutils_test.go +++ b/formats/sarifutils/sarifutils_test.go @@ -1,6 +1,7 @@ package sarifutils import ( + "github.com/jfrog/jfrog-cli-security/utils/jasutils" "path/filepath" "testing" @@ -615,3 +616,30 @@ func TestGetInvocationWorkingDirectory(t *testing.T) { assert.Equal(t, test.expectedOutput, GetInvocationWorkingDirectory(test.invocation)) } } + +func TestGetResultFingerprint(t *testing.T) { + tests := []struct { + name string + result *sarif.Result + expectedOutput string + }{ + { + name: "No results", + result: &sarif.Result{}, + expectedOutput: "", + }, + { + name: "Empty fingerprint field in the result", + result: CreateResultWithLocations("msg", "rule", "level"), + expectedOutput: "", + }, + { + name: "Results with fingerprint field", + result: CreateDummyResultWithFingerprint("some_markdown", "masg", jasutils.SastFingerprintKey, "sast_fingerprint"), + expectedOutput: "sast_fingerprint", + }, + } + for _, test := range tests { + assert.Equal(t, test.expectedOutput, GetResultFingerprint(test.result)) + } +} diff --git a/formats/sarifutils/test_sarifutils.go b/formats/sarifutils/test_sarifutils.go index 6848849a..8ae18413 100644 --- a/formats/sarifutils/test_sarifutils.go +++ b/formats/sarifutils/test_sarifutils.go @@ -1,6 +1,8 @@ package sarifutils -import "github.com/owenrumney/go-sarif/v2/sarif" +import ( + "github.com/owenrumney/go-sarif/v2/sarif" +) func CreateRunWithDummyResultsInWd(wd string, results ...*sarif.Result) *sarif.Run { return createRunWithDummyResults("", results...).WithInvocations([]*sarif.Invocation{sarif.NewInvocation().WithWorkingDirectory(sarif.NewSimpleArtifactLocation(wd))})