@@ -1095,7 +1095,7 @@ func TestRunGetResultsByScanIdSummaryConsoleFormat_ScsCompleted_ScsCompletedInRe
10951095 "Expected SCS summary:" + scsSummary )
10961096 secretDetectionSummary := secretDetectionLine
10971097 assert .Equal (t , strings .Contains (cleanString , secretDetectionSummary ), true ,
1098- "Expected Secret Detection summary:" + secretDetectionSummary )
1098+ "Expected Secret Detection summary:" + secretDetectionLine )
10991099 scorecardSummary := "| Scorecard 0 0 0 1 0 Completed |"
11001100 assert .Equal (t , strings .Contains (cleanString , scorecardSummary ), true ,
11011101 "Expected Scorecard summary:" + scorecardSummary )
@@ -1130,7 +1130,7 @@ func TestRunGetResultsByScanIdSummaryConsoleFormat_ScsPartial_ScsPartialInReport
11301130 "Expected SCS summary:" + scsSummary )
11311131 secretDetectionSummary := secretDetectionLine
11321132 assert .Equal (t , strings .Contains (cleanString , secretDetectionSummary ), true ,
1133- "Expected Secret Detection summary:" + secretDetectionSummary )
1133+ "Expected Secret Detection summary:" + secretDetectionLine )
11341134 scorecardSummary := " | Scorecard 0 0 0 0 0 Failed |"
11351135 assert .Equal (t , strings .Contains (cleanString , scorecardSummary ), true ,
11361136 "Expected Scorecard summary:" + scorecardSummary )
@@ -1157,7 +1157,7 @@ func TestRunGetResultsByScanIdSummaryConsoleFormat_ScsScorecardNotScanned_Scorec
11571157 "Expected SCS summary:" + scsSummary )
11581158 secretDetectionSummary := secretDetectionLine
11591159 assert .Equal (t , strings .Contains (stdoutString , secretDetectionSummary ), true ,
1160- "Expected Secret Detection summary:" + secretDetectionSummary )
1160+ "Expected Secret Detection summary:" + secretDetectionLine )
11611161 scorecardSummary := "| Scorecard - - - - - - |"
11621162 assert .Equal (t , strings .Contains (stdoutString , scorecardSummary ), true ,
11631163 "Expected Scorecard summary:" + scorecardSummary )
@@ -1697,3 +1697,77 @@ func TestIgnorePolicyWithPermission(t *testing.T) {
16971697 output := buf .String ()
16981698 assert .Assert (t , ! strings .Contains (output , "Warning: The --ignore-policy flag was not implemented because you don’t have the required permission." ), "'Ignore Policy flag omitted because you dont have permission' should not be present in the output" )
16991699}
1700+
1701+ func TestParseGlSastVulnerability_QueryDescriptionLink_Succeed (t * testing.T ) {
1702+ mockResult := createMockScanResult ("q1234" , "c5678" )
1703+ glSast := & wrappers.GlSastResultsCollection {}
1704+ summary := & wrappers.ResultSummary {
1705+ BaseURI : "https://example.com/overview" ,
1706+ ScanID : "scanID" ,
1707+ ProjectID : "projectID" ,
1708+ }
1709+ expectedURL := "https://example.com/results/scanID/projectID/sast/description/c5678/q1234"
1710+
1711+ glSast = parseGlSastVulnerability (mockResult , glSast , summary )
1712+
1713+ assert .Assert (t , len (glSast .Vulnerabilities ) > 0 )
1714+
1715+ actualURL := extractURLFromDescription (glSast .Vulnerabilities [0 ].Description )
1716+
1717+ assert .Equal (t , actualURL , expectedURL , "QueryDescriptionLink URL does not match expected format" )
1718+ }
1719+
1720+ func TestParseGlSastVulnerability_QueryDescriptionLink_Negative (t * testing.T ) {
1721+ mockResult := createMockScanResult ("" , "" )
1722+ glSast := & wrappers.GlSastResultsCollection {}
1723+ summary := & wrappers.ResultSummary {
1724+ BaseURI : "invalid-url" ,
1725+ ScanID : "scanID" ,
1726+ ProjectID : "projectID" ,
1727+ }
1728+ expectedPattern := "/results/scanID/projectID/sast/description//"
1729+
1730+ glSast = parseGlSastVulnerability (mockResult , glSast , summary )
1731+
1732+ assert .Assert (t , len (glSast .Vulnerabilities ) > 0 )
1733+ vuln := glSast .Vulnerabilities [0 ]
1734+
1735+ assert .Assert (t , strings .Contains (vuln .Description , expectedPattern ),
1736+ "URL should contain pattern with empty values" )
1737+
1738+ actualURL := extractURLFromDescription (vuln .Description )
1739+ assert .Assert (t , actualURL != "" , "Extracted URL should not be empty" )
1740+ }
1741+
1742+ func createMockScanResult (queryID , cweID string ) * wrappers.ScanResult {
1743+ return & wrappers.ScanResult {
1744+ Type : "sast" ,
1745+ ScanResultData : wrappers.ScanResultData {
1746+ QueryName : "TestQuery" ,
1747+ QueryID : queryID ,
1748+ Nodes : []* wrappers.ScanResultNode {
1749+ {
1750+ FileName : "file.go" ,
1751+ Line : 42 ,
1752+ Length : 1 ,
1753+ },
1754+ },
1755+ },
1756+ VulnerabilityDetails : wrappers.VulnerabilityDetails {
1757+ CweID : cweID ,
1758+ },
1759+ ID : "vuln-1" ,
1760+ Description : "desc-" ,
1761+ Severity : "high" ,
1762+ }
1763+ }
1764+
1765+ func extractURLFromDescription (description string ) string {
1766+ parts := strings .Split (description , "http" )
1767+ if len (parts ) == 1 {
1768+ return "http" + strings .Split (parts [0 ], " " )[0 ]
1769+ } else if len (parts ) > 1 {
1770+ return "http" + strings .Split (parts [1 ], " " )[0 ]
1771+ }
1772+ return ""
1773+ }
0 commit comments