Skip to content

Commit 6c92db8

Browse files
Merge pull request #1198 from Checkmarx/dima/cloud-default-scan
Containers scan should start by default on cloud (AST-84506)
2 parents bdee0cf + d4857fe commit 6c92db8

File tree

9 files changed

+332
-213
lines changed

9 files changed

+332
-213
lines changed

internal/commands/pre_commit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package commands
22

33
import (
44
"fmt"
5+
"strings"
6+
57
precommit "github.com/Checkmarx/secret-detection/pkg/hooks"
68
"github.com/MakeNowJust/heredoc"
79
"github.com/checkmarx/ast-cli/internal/params"
810
"github.com/checkmarx/ast-cli/internal/wrappers"
911
"github.com/pkg/errors"
1012
"github.com/spf13/cobra"
11-
"strings"
1213
)
1314

1415
// NewHooksCommand creates the hooks command with pre-commit subcommand
@@ -65,7 +66,6 @@ func PreCommitCommand(jwtWrapper wrappers.JWTWrapper) *cobra.Command {
6566

6667
// / validateLicense verifies the user has the required license for secret detection
6768
func validateLicense(jwtWrapper wrappers.JWTWrapper) error {
68-
6969
allowed, err := jwtWrapper.IsAllowedEngine(params.EnterpriseSecretsLabel)
7070
if err != nil {
7171
return errors.Wrapf(err, "Failed checking license")

internal/commands/result.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,10 +1119,8 @@ func setIsSCSEnabled(featureFlagsWrapper wrappers.FeatureFlagsWrapper) {
11191119
wrappers.IsSCSEnabled = scsEngineCLIEnabled.Status
11201120
}
11211121

1122-
func setIsContainersEnabled(agent string, featureFlagsWrapper wrappers.FeatureFlagsWrapper) {
1123-
agentSupported := !containsIgnoreCase(containerEngineUnsupportedAgents, agent)
1124-
containerEngineCLIEnabled, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, wrappers.ContainerEngineCLIEnabled)
1125-
wrappers.IsContainersEnabled = containerEngineCLIEnabled.Status && agentSupported
1122+
func setIsContainersEnabled(agent string) {
1123+
wrappers.IsContainersEnabled = !containsIgnoreCase(containerEngineUnsupportedAgents, agent)
11261124
}
11271125

11281126
func filterResultsByType(results *wrappers.ScanResultsCollection, excludedTypes map[string]struct{}) *wrappers.ScanResultsCollection {
@@ -1182,7 +1180,7 @@ func CreateScanReport(
11821180
reportList := strings.Split(reportTypes, ",")
11831181
results := &wrappers.ScanResultsCollection{}
11841182
setIsSCSEnabled(featureFlagsWrapper)
1185-
setIsContainersEnabled(agent, featureFlagsWrapper)
1183+
setIsContainersEnabled(agent)
11861184
summary, err := convertScanToResultsSummary(scan, resultsWrapper)
11871185
if err != nil {
11881186
return nil, err
@@ -2752,7 +2750,6 @@ func addPackageInformation(
27522750
scaPackageModel *[]wrappers.ScaPackageCollection,
27532751
scaTypeModel *[]wrappers.ScaTypeCollection,
27542752
) *wrappers.ScanResultsCollection {
2755-
27562753
locationsByID, typesByCVE := buildAuxiliaryScaMaps(resultsModel, scaPackageModel, scaTypeModel)
27572754
scaPackageMap := buildScaPackageMap(*scaPackageModel)
27582755

internal/commands/result_test.go

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,6 @@ func TestRunGetResultsByScanIdSarifFormat(t *testing.T) {
312312
}
313313
func TestRunGetResultsByScanIdSarifFormatWithContainers(t *testing.T) {
314314
clearFlags()
315-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
316315
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "sarif")
317316
// Remove generated sarif file
318317
removeFileBySuffix(t, printer.FormatSarif)
@@ -334,7 +333,6 @@ func TestRunGetResultsByScanIdSonarFormat(t *testing.T) {
334333

335334
func TestRunGetResultsByScanIdSonarFormatWithContainers(t *testing.T) {
336335
clearFlags()
337-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
338336
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "sonar")
339337
// Remove generated sonar file
340338
removeFile(t, fileName+"_"+printer.FormatSonar, printer.FormatJSON)
@@ -367,7 +365,6 @@ func TestDecodeHTMLEntitiesInResults(t *testing.T) {
367365

368366
func TestRunGetResultsByScanIdJsonFormatWithContainers(t *testing.T) {
369367
clearFlags()
370-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
371368
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json")
372369

373370
// Remove generated json file
@@ -390,7 +387,6 @@ func TestRunGetResultsByScanIdSummaryJsonFormat(t *testing.T) {
390387

391388
func TestRunGetResultsByScanIdSummaryJsonFormatWithContainers(t *testing.T) {
392389
clearFlags()
393-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
394390
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "summaryJSON")
395391

396392
// Remove generated json file
@@ -406,7 +402,6 @@ func TestRunGetResultsByScanIdSummaryHtmlFormat(t *testing.T) {
406402

407403
func TestRunGetResultsByScanIdSummaryHtmlFormatWithContainers(t *testing.T) {
408404
clearFlags()
409-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
410405
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "summaryHTML")
411406

412407
// Remove generated html file
@@ -425,13 +420,11 @@ func TestRunGetResultsByScanIdSummaryMarkdownFormatWithContainers(t *testing.T)
425420

426421
func TestRunGetResultsByScanIdSummaryConsoleFormatWithContainers(t *testing.T) {
427422
clearFlags()
428-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
429423
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "summaryConsole")
430424
}
431425

432426
func TestRunGetResultsByScanIdSummaryMarkdownFormat(t *testing.T) {
433427
clearFlags()
434-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
435428
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "markdown")
436429
// Remove generated md file
437430
removeFileBySuffix(t, "md")
@@ -480,7 +473,6 @@ func TestRunGetResultsByScanIdPDFFormat(t *testing.T) {
480473

481474
func TestRunGetResultsByScanIdPDFFormatWithContainers(t *testing.T) {
482475
clearFlags()
483-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
484476
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "pdf")
485477
_, err := os.Stat(fmt.Sprintf("%s.%s", fileName, printer.FormatPDF))
486478
assert.NilError(t, err, "Report file should exist for extension "+printer.FormatPDF)
@@ -769,7 +761,6 @@ func TestSBOMReportXML(t *testing.T) {
769761

770762
func TestSBOMReportJsonWithContainers(t *testing.T) {
771763
clearFlags()
772-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
773764
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "sbom")
774765
_, err := os.Stat(fmt.Sprintf("%s.%s", fileName+"_"+printer.FormatSbom, printer.FormatJSON))
775766
assert.NilError(t, err, "Report file should exist for extension "+printer.FormatJSON)
@@ -779,7 +770,6 @@ func TestSBOMReportJsonWithContainers(t *testing.T) {
779770

780771
func TestSBOMReportXMLWithContainers(t *testing.T) {
781772
clearFlags()
782-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
783773
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "sbom", "--report-sbom-format", "CycloneDxXml")
784774
_, err := os.Stat(fmt.Sprintf("%s.%s", fileName+"_"+printer.FormatSbom, printer.FormatXML))
785775
assert.NilError(t, err, "Report file should exist for extension "+printer.FormatXML)
@@ -794,24 +784,14 @@ func TestRunGetResultsByScanIdGLFormat(t *testing.T) {
794784
}
795785
func TestRunResultsShow_ContainersFFIsOn_includeContainersResult(t *testing.T) {
796786
clearFlags()
797-
clearFlags()
798-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
799787
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json")
800788
assertTypePresentJSON(t, params.ContainersType, 1)
801789
// Remove generated json file
802790
removeFileBySuffix(t, printer.FormatJSON)
803791
}
804-
func TestRunResultsShow_ContainersFFIsOff_excludeContainersResult(t *testing.T) {
805-
clearFlags()
806-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: false}
807-
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json")
808-
assertTypePresentJSON(t, params.ContainersType, 0)
809-
// Remove generated json file
810-
removeFileBySuffix(t, printer.FormatJSON)
811-
}
792+
812793
func TestRunResultsShow_jetbrainsIsNotSupported_excludeContainersResult(t *testing.T) {
813794
clearFlags()
814-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
815795
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json", "--agent", "jetbrains")
816796
assertTypePresentJSON(t, params.ContainersType, 0)
817797
// Remove generated json file
@@ -820,7 +800,6 @@ func TestRunResultsShow_jetbrainsIsNotSupported_excludeContainersResult(t *testi
820800

821801
func TestRunResultsShow_EclipseIsNotSupported_excludeContainersResult(t *testing.T) {
822802
clearFlags()
823-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
824803
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json", "--agent", "Eclipse")
825804
assertTypePresentJSON(t, params.ContainersType, 0)
826805
// Remove generated json file
@@ -829,7 +808,6 @@ func TestRunResultsShow_EclipseIsNotSupported_excludeContainersResult(t *testing
829808

830809
func TestRunResultsShow_VsCodeIsNotSupported_excludeContainersResult(t *testing.T) {
831810
clearFlags()
832-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
833811
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json", "--agent", "vs code")
834812
assertTypePresentJSON(t, params.ContainersType, 0)
835813
// Remove generated json file
@@ -838,7 +816,6 @@ func TestRunResultsShow_VsCodeIsNotSupported_excludeContainersResult(t *testing.
838816

839817
func TestRunResultsShow_VisualStudioIsNotSupported_excludeContainersResult(t *testing.T) {
840818
clearFlags()
841-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: true}
842819
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "json", "--agent", "Visual Studio")
843820
assertTypePresentJSON(t, params.ContainersType, 0)
844821
// Remove generated json file
@@ -966,11 +943,7 @@ func assertResultsPresentSummaryJSON(t *testing.T, isResultsEnabled bool, scanTy
966943
assert.Assert(t, false, "%s result summary should be present", scanType)
967944
}
968945
}
969-
func TestRunGetResultsShow_ContainersFFOffAndResultsHasContainersResultsOnly_NilAssertion(t *testing.T) {
970-
clearFlags()
971-
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.ContainerEngineCLIEnabled, Status: false}
972-
execCmdNilAssertion(t, "results", "show", "--scan-id", "CONTAINERS_ONLY", "--report-format", "summaryConsole")
973-
}
946+
974947
func TestRunGetResultsByScanIdGLSastAndAScaFormat(t *testing.T) {
975948
execCmdNilAssertion(t, "results", "show", "--scan-id", "MOCK", "--report-format", "gl-sast,gl-sca")
976949
// Run test for gl-sast report type
@@ -1229,7 +1202,7 @@ func TestGetResultsSummaryConsoleFormatWithCriticalDisabled(t *testing.T) {
12291202
stdoutString := buffer.String()
12301203
fmt.Print(stdoutString)
12311204

1232-
totalSummary := "| TOTAL N/A 5 1 1 0 Completed |"
1205+
totalSummary := "| TOTAL N/A 5 2 1 0 Completed |"
12331206
assert.Equal(t, strings.Contains(stdoutString, totalSummary), true,
12341207
"Expected Total summary without critical:"+totalSummary)
12351208

@@ -1248,7 +1221,7 @@ func Test_enhanceWithScanSummary(t *testing.T) {
12481221
name: "scan summary with no vulnerabilities",
12491222
summary: createEmptyResultSummary(),
12501223
results: &wrappers.ScanResultsCollection{
1251-
Results: nil,
1224+
Results: []*wrappers.ScanResult{},
12521225
TotalCount: 0,
12531226
ScanID: "MOCK",
12541227
},
@@ -1266,17 +1239,21 @@ func Test_enhanceWithScanSummary(t *testing.T) {
12661239
}
12671240

12681241
func createEmptyResultSummary() *wrappers.ResultSummary {
1242+
var containersIssues = new(int)
1243+
*containersIssues = 0
1244+
12691245
return &wrappers.ResultSummary{
1270-
TotalIssues: 0,
1271-
CriticalIssues: 0,
1272-
HighIssues: 0,
1273-
MediumIssues: 0,
1274-
LowIssues: 0,
1275-
InfoIssues: 0,
1276-
SastIssues: 0,
1277-
ScaIssues: 0,
1278-
KicsIssues: 0,
1279-
SCSOverview: &wrappers.SCSOverview{},
1246+
TotalIssues: 0,
1247+
CriticalIssues: 0,
1248+
HighIssues: 0,
1249+
MediumIssues: 0,
1250+
LowIssues: 0,
1251+
InfoIssues: 0,
1252+
SastIssues: 0,
1253+
ScaIssues: 0,
1254+
KicsIssues: 0,
1255+
ContainersIssues: containersIssues,
1256+
SCSOverview: &wrappers.SCSOverview{},
12801257
APISecurity: wrappers.APISecResult{
12811258
APICount: 0,
12821259
TotalRisksCount: 0,

0 commit comments

Comments
 (0)