From 218b248fb0528fa3a9db9012ac452b1d65000263 Mon Sep 17 00:00:00 2001 From: Jordan Hury Date: Tue, 6 Oct 2026 13:06:12 +0300 Subject: [PATCH 1/2] Update Analyzer Manager to v1.60.0 Co-Authored-By: Claude Opus 5.5 --- audit_test.go | 24 ++++++++++++------------ commands/audit/audit_test.go | 13 ++++++------- git_test.go | 14 +++++++------- jas/analyzermanager.go | 2 +- tests/utils/test_utils.go | 11 ----------- 5 files changed, 26 insertions(+), 38 deletions(-) diff --git a/audit_test.go b/audit_test.go index 5fe5632b6..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(4), 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 f09865934..c13808e58 100644 --- a/commands/audit/audit_test.go +++ b/commands/audit/audit_test.go @@ -893,7 +893,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, }}, }, - expectedSecretsIssues: 15, + expectedSecretsIssues: 13, }, { name: "Secrets scanner is enabled with exclusions", @@ -926,7 +926,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, }}, }, - expectedSecretsIssues: 10, + expectedSecretsIssues: 8, }, { name: "Enable only Sast scanner", @@ -1152,7 +1152,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, expectedServicesIssues: 6, expectedSastIssues: 2, - expectedSecretsIssues: 15, + expectedSecretsIssues: 13, expectedIacIssues: 9, expectedScaIssues: 15, expectedCaNotCovered: 15, @@ -1191,7 +1191,7 @@ func TestAuditWithConfigProfile(t *testing.T) { }, expectedServicesIssues: 6, expectedSastIssues: 0, - expectedSecretsIssues: 10, + expectedSecretsIssues: 8, expectedIacIssues: 9, expectedScaIssues: 15, expectedCaNotCovered: 15, @@ -1237,13 +1237,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 20a85b282..3c79cffcf 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 + 4, Vulnerabilities: 16 + securityTestUtils.ExpectedServicesIssueCount(4)}, + Total: &validations.TotalCount{Licenses: 85, Violations: 12 + 4, Vulnerabilities: 16 + 4}, Vulnerabilities: &validations.VulnerabilityCount{ - ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Iac: 4, Secrets: 2, Services: securityTestUtils.ExpectedServicesIssueCount(4)}, + ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Iac: 4, Secrets: 2, Services: 4}, }, // 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(4)}}, + Violations: &validations.ViolationCount{ValidateScan: &validations.ScanCount{Sca: 8, Sast: 2, Secrets: 2, Services: 4}}, }, ) } @@ -314,8 +314,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 75, Sast: 5, Secrets: 6}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 65, NotCovered: 9, MissingContext: 1, Inactive: 1}, + ValidateScan: &validations.ScanCount{Sca: 75, Sast: 5, Secrets: 4}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 64, NotCovered: 10, MissingContext: 1, Inactive: 1}, }, ExactResultsMatch: true, }, @@ -349,8 +349,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 10, Sast: 5, Secrets: 6}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 9, MissingContext: 1, Inactive: 1}, + 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 d6eefe2d9..d7b90404d 100644 --- a/jas/analyzermanager.go +++ b/jas/analyzermanager.go @@ -26,7 +26,7 @@ const ( ApplicabilityFeatureId = "contextual_analysis" TransitiveContextualAnalysisFeatureId = "transitive_contextual_analysis" AnalyzerManagerZipName = "analyzerManager.zip" - defaultAnalyzerManagerVersion = "1.50.0" + defaultAnalyzerManagerVersion = "1.60.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 cf2b06ec1..ca7d1a147 100644 --- a/tests/utils/test_utils.go +++ b/tests/utils/test_utils.go @@ -20,7 +20,6 @@ import ( biutils "github.com/jfrog/build-info-go/utils" "github.com/jfrog/jfrog-cli-security/jas" - "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" "github.com/jfrog/jfrog-cli-core/v2/utils/xray" clientUtils "github.com/jfrog/jfrog-client-go/utils" xrayApi "github.com/jfrog/jfrog-client-go/xray/services/utils" @@ -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) From fdebe702afae35c1275040303bbb409453d3baa2 Mon Sep 17 00:00:00 2001 From: Jordan Hury Date: Tue, 6 Oct 2026 13:41:50 +0300 Subject: [PATCH 2/2] Align applicability expectations with Analyzer Manager v1.60.0 Co-Authored-By: Claude Opus 5.5 --- git_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/git_test.go b/git_test.go index 3c79cffcf..3f453272b 100644 --- a/git_test.go +++ b/git_test.go @@ -315,7 +315,7 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { validations.ValidationParams{ Violations: &validations.ViolationCount{ ValidateScan: &validations.ScanCount{Sca: 75, Sast: 5, Secrets: 4}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 64, NotCovered: 10, MissingContext: 1, Inactive: 1}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotApplicable: 65, NotCovered: 9, MissingContext: 1, Inactive: 1}, }, ExactResultsMatch: true, }, @@ -349,8 +349,8 @@ func TestGitAuditJasSkipNotApplicableCvesViolations(t *testing.T) { xrayVersion, xscVersion, "", validations.ValidationParams{ Violations: &validations.ViolationCount{ - ValidateScan: &validations.ScanCount{Sca: 11, Sast: 5, Secrets: 4}, - ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 10, MissingContext: 1, Inactive: 1}, + ValidateScan: &validations.ScanCount{Sca: 10, Sast: 5, Secrets: 4}, + ValidateApplicabilityStatus: &validations.ApplicabilityStatusCount{NotCovered: 9, MissingContext: 1, Inactive: 1}, }, ExactResultsMatch: true, },