diff --git a/audit_test.go b/audit_test.go index ad8230483..31eba9130 100644 --- a/audit_test.go +++ b/audit_test.go @@ -513,9 +513,9 @@ func TestXrayAuditMultiProjects(t *testing.T) { } output := securityTests.PlatformCli.WithoutCredentials().RunCliCmdWithOutput(t, getAuditCmdArgs(params)...) validations.VerifySimpleJsonResults(t, output, validations.ValidationParams{ - Total: &validations.TotalCount{Vulnerabilities: 43 + securityTestUtils.ExpectedServicesIssueCount(6)}, + Total: &validations.TotalCount{Vulnerabilities: 43 + 6}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 27, Sast: 1, Iac: 9, Secrets: 6, Services: securityTestUtils.ExpectedServicesIssueCount(6)}, + ValidateScan: &validations.ScanCount{Sca: 27, Sast: 1, Iac: 9, Secrets: 6, Services: 6}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{Applicable: 3, NotCovered: 22, NotApplicable: 2}, }, }) @@ -783,9 +783,9 @@ func TestXrayAuditJasSimpleJson(t *testing.T) { Format: format.SimpleJson, }) validations.VerifySimpleJsonResults(t, output, validations.ValidationParams{ - Total: &validations.TotalCount{Vulnerabilities: 23 + securityTestUtils.ExpectedServicesIssueCount(6)}, + Total: &validations.TotalCount{Vulnerabilities: 23 + 6}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 7, Sast: 1, Iac: 9, Secrets: 6, Services: securityTestUtils.ExpectedServicesIssueCount(6)}, + ValidateScan: &validations.ScanCount{Sca: 7, Sast: 1, Iac: 9, Secrets: 6, Services: 6}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{Applicable: 3, Undetermined: 1, NotCovered: 1, NotApplicable: 2}, }, }) @@ -813,9 +813,9 @@ func TestXrayAuditJasSimpleJsonWithOneThread(t *testing.T) { Format: format.SimpleJson, }) validations.VerifySimpleJsonResults(t, output, validations.ValidationParams{ - Total: &validations.TotalCount{Vulnerabilities: 23 + securityTestUtils.ExpectedServicesIssueCount(6)}, + Total: &validations.TotalCount{Vulnerabilities: 23 + 6}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 7, Sast: 1, Iac: 9, Secrets: 6, Services: securityTestUtils.ExpectedServicesIssueCount(6)}, + ValidateScan: &validations.ScanCount{Sca: 7, Sast: 1, Iac: 9, Secrets: 6, Services: 6}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{Applicable: 3, Undetermined: 1, NotCovered: 1, NotApplicable: 2}, }, }) @@ -934,9 +934,9 @@ func TestXrayAuditJasSimpleJsonWithXrayUrl(t *testing.T) { Format: format.SimpleJson, }) validations.VerifySimpleJsonResults(t, output, validations.ValidationParams{ - Total: &validations.TotalCount{Vulnerabilities: 23 + securityTestUtils.ExpectedServicesIssueCount(6)}, + Total: &validations.TotalCount{Vulnerabilities: 23 + 6}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 7, Sast: 1, Iac: 9, Secrets: 6, Services: securityTestUtils.ExpectedServicesIssueCount(6)}, + ValidateScan: &validations.ScanCount{Sca: 7, Sast: 1, Iac: 9, Secrets: 6, Services: 6}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{Applicable: 3, Undetermined: 1, NotCovered: 1, NotApplicable: 2}, }, }) @@ -951,9 +951,9 @@ func TestXrayAuditJasSimpleJsonWithCustomExclusions(t *testing.T) { Format: format.SimpleJson, }) validations.VerifySimpleJsonResults(t, output, validations.ValidationParams{ - Total: &validations.TotalCount{Vulnerabilities: 24 + securityTestUtils.ExpectedServicesIssueCount(5)}, + Total: &validations.TotalCount{Vulnerabilities: 24 + 5}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 7, Sast: 2, Iac: 9, Secrets: 6, Services: securityTestUtils.ExpectedServicesIssueCount(5)}, + ValidateScan: &validations.ScanCount{Sca: 7, Sast: 2, Iac: 9, Secrets: 6, Services: 5}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{Applicable: 3, Undetermined: 1, NotCovered: 1, NotApplicable: 2}, }, }) @@ -1182,10 +1182,10 @@ func TestAuditNewScaCycloneDxPip(t *testing.T) { ) assert.NoError(t, err) validations.VerifyCycloneDxResults(t, output, validations.ValidationParams{ - Total: &validations.TotalCount{Vulnerabilities: 22 + securityTestUtils.ExpectedServicesIssueCount(6), BomComponents: 1 /*root*/ + 2 /*components*/ + 5 /*files (secrets)*/}, + Total: &validations.TotalCount{Vulnerabilities: 22 + 4, BomComponents: 1 /*root*/ + 2 /*components*/ + 5 /*files (secrets)*/}, SbomComponents: &validations.SbomCount{Root: 1, Direct: 2}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sast: 2, Iac: 9, Secrets: 11, Services: securityTestUtils.ExpectedServicesIssueCount(4)}, + ValidateScan: &validations.ScanCount{Sast: 2, Iac: 9, Secrets: 11, Services: 4}, }, }) } diff --git a/commands/audit/audit_test.go b/commands/audit/audit_test.go index b80e9e024..b0aff36de 100644 --- a/commands/audit/audit_test.go +++ b/commands/audit/audit_test.go @@ -888,7 +888,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, }}, }, - expectedSecretsIssues: 15, + expectedSecretsIssues: 13, }, { name: "Secrets scanner is enabled with exclusions", @@ -921,7 +921,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, }}, }, - expectedSecretsIssues: 10, + expectedSecretsIssues: 8, }, { name: "Enable only Sast scanner", @@ -1147,7 +1147,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, expectedServicesIssues: 6, expectedSastIssues: 2, - expectedSecretsIssues: 15, + expectedSecretsIssues: 13, expectedIacIssues: 9, expectedScaIssues: 15, expectedCaNotCovered: 15, @@ -1186,7 +1186,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, expectedServicesIssues: 6, expectedSastIssues: 0, - expectedSecretsIssues: 10, + expectedSecretsIssues: 8, expectedIacIssues: 9, expectedScaIssues: 15, expectedCaNotCovered: 15, @@ -1232,13 +1232,12 @@ func TestAuditWithConfigProfile(t *testing.T) { } else { scaResultsCount = testcase.expectedScaIssues } - expectedServicesIssues := securityTestUtils.ExpectedServicesIssueCount(testcase.expectedServicesIssues) validations.ValidateCommandSummaryOutput(t, validations.ValidationParams{ Actual: summary, ExactResultsMatch: true, - Total: &validations.TotalCount{Vulnerabilities: testcase.expectedSastIssues + testcase.expectedSecretsIssues + testcase.expectedIacIssues + scaResultsCount + expectedServicesIssues}, + Total: &validations.TotalCount{Vulnerabilities: testcase.expectedSastIssues + testcase.expectedSecretsIssues + testcase.expectedIacIssues + scaResultsCount + testcase.expectedServicesIssues}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: scaResultsCount, Sast: testcase.expectedSastIssues, Secrets: testcase.expectedSecretsIssues, Iac: testcase.expectedIacIssues, Services: expectedServicesIssues}, + ValidateScan: &validations.ScanCount{Sca: scaResultsCount, Sast: testcase.expectedSastIssues, Secrets: testcase.expectedSecretsIssues, Iac: testcase.expectedIacIssues, Services: testcase.expectedServicesIssues}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{Applicable: testcase.expectedCaApplicable, NotApplicable: testcase.expectedCaNotApplicable, NotCovered: testcase.expectedCaNotCovered, Undetermined: testcase.expectedCaUndetermined}, }, }) diff --git a/git_test.go b/git_test.go index df84c4d66..256d4118b 100644 --- a/git_test.go +++ b/git_test.go @@ -169,12 +169,12 @@ func TestGitAuditStaticScaSimpleJson(t *testing.T) { }, xrayVersion, "", "One or more of the detected violations are configured to fail the build that including them", validations.ValidationParams{ - Total: &validations.TotalCount{Licenses: 85, Violations: 12 + securityTestUtils.ExpectedServicesIssueCount(6), Vulnerabilities: 16 + securityTestUtils.ExpectedServicesIssueCount(6)}, + Total: &validations.TotalCount{Licenses: 85, Violations: 12 + 6, Vulnerabilities: 16 + 6}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Iac: 4, Secrets: 2, Services: securityTestUtils.ExpectedServicesIssueCount(6)}, + ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Iac: 4, Secrets: 2, Services: 6}, }, // Check that we have at least one violation for each scan type. (IAC is not supported yet) - Violations: &validations.ViolationCount{ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Secrets: 2, Services: securityTestUtils.ExpectedServicesIssueCount(6)}}, + Violations: &validations.ViolationCount{ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Secrets: 2, Services: 6}}, }, ) } @@ -311,7 +311,7 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 72, Sast: 5, Secrets: 6}, + ValidateScan: &validations.ScanCount{Sca: 72, Sast: 5, Secrets: 4}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 61, NotCovered: 10, MissingContext: 1, Inactive: 1}, }, ExactResultsMatch: true, @@ -346,7 +346,7 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 11, Sast: 5, Secrets: 6}, + ValidateScan: &validations.ScanCount{Sca: 11, Sast: 5, Secrets: 4}, ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 10, MissingContext: 1, Inactive: 1}, }, ExactResultsMatch: true, diff --git a/jas/analyzermanager.go b/jas/analyzermanager.go index 223d9b667..461abc353 100644 --- a/jas/analyzermanager.go +++ b/jas/analyzermanager.go @@ -25,7 +25,7 @@ import ( const ( ApplicabilityFeatureId = "contextual_analysis" AnalyzerManagerZipName = "analyzerManager.zip" - defaultAnalyzerManagerVersion = "1.50.0" + defaultAnalyzerManagerVersion = "1.55.0" analyzerManagerDownloadPath = "xsc-gen-exe-analyzer-manager-local/v1" analyzerManagerDirName = "analyzerManager" analyzerManagerExecutableName = "analyzerManager" diff --git a/tests/utils/test_utils.go b/tests/utils/test_utils.go index a2f1c78c0..ca7d1a147 100644 --- a/tests/utils/test_utils.go +++ b/tests/utils/test_utils.go @@ -27,7 +27,6 @@ import ( "github.com/jfrog/gofrog/version" "github.com/jfrog/jfrog-cli-core/v2/utils/config" - "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" configTests "github.com/jfrog/jfrog-cli-security/tests" "github.com/stretchr/testify/assert" @@ -56,16 +55,6 @@ func SkipTestIfDurationNotPassed(t *testing.T, dateStr string, durationDays int, } } -// ExpectedServicesIssueCount returns the expected JAS Services findings for the current OS. -// Analyzer Manager's GitHub Actions services scanner currently does not detect workflow files on Windows. -// Scanner bug is tracked in XRAY-159123. -func ExpectedServicesIssueCount(count int) int { - if coreutils.IsWindows() { - return 0 - } - return count -} - func UnmarshalJson(t *testing.T, output string) formats.EnrichJson { var jsonMap formats.EnrichJson err := json.Unmarshal([]byte(output), &jsonMap)