Skip to content

Commit 46e5397

Browse files
Add scan id flag to risk management command (AST-000)
1 parent b5ca362 commit 46e5397

4 files changed

Lines changed: 28 additions & 19 deletions

File tree

internal/commands/result.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,14 @@ func riskManagementSubCommand(riskManagement wrappers.RiskManagementWrapper, fea
234234
Long: "The risk-management command displays risk management results for a specific project in Checkmarx One",
235235
Example: heredoc.Doc(
236236
`
237-
$ cx results risk-management --project-id <project Id> --limit <limit> (1-50, default: 50)
237+
$ cx results risk-management --project-id <project Id> --scan-id <scan ID> --limit <limit> (1-50, default: 50)
238238
`,
239239
),
240240
RunE: runRiskManagementCommand(riskManagement, featureFlagsWrapper),
241241
}
242242

243243
riskManagementCmd.PersistentFlags().String(commonParams.ProjectIDFlag, "", "Project ID")
244+
riskManagementCmd.PersistentFlags().String(commonParams.ScanIDFlag, "", "Scan ID")
244245
riskManagementCmd.PersistentFlags().Int(commonParams.LimitFlag, -1, "Limit")
245246

246247
addFormatFlag(riskManagementCmd, printer.FormatJSON, printer.FormatTable, printer.FormatList)
@@ -355,14 +356,16 @@ func runRiskManagementCommand(riskManagement wrappers.RiskManagementWrapper, fea
355356
) func(cmd *cobra.Command, args []string) error {
356357
return func(cmd *cobra.Command, args []string) error {
357358
projectID, _ := cmd.Flags().GetString(commonParams.ProjectIDFlag)
359+
scanID, _ := cmd.Flags().GetString(commonParams.ScanIDFlag)
360+
358361
limit, _ := cmd.Flags().GetInt(commonParams.LimitFlag)
359362

360363
flagResponse, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, wrappers.RiskManagementEnabled)
361364
ASPMEnabled := flagResponse.Status
362365
if !ASPMEnabled {
363366
return errors.Errorf("%s", "Risk management results are currently unavailable for your tenant.")
364367
}
365-
results, err := getRiskManagementResults(riskManagement, projectID)
368+
results, err := getRiskManagementResults(riskManagement, projectID, scanID)
366369
if err != nil {
367370
return err
368371
}
@@ -372,8 +375,8 @@ func runRiskManagementCommand(riskManagement wrappers.RiskManagementWrapper, fea
372375
}
373376
}
374377

375-
func getRiskManagementResults(riskManagement wrappers.RiskManagementWrapper, projectID string) (*wrappers.ASPMResult, error) {
376-
ASPMResult, errorModel, err := riskManagement.GetTopVulnerabilitiesByProjectID(projectID)
378+
func getRiskManagementResults(riskManagement wrappers.RiskManagementWrapper, projectID, scanID string) (*wrappers.ASPMResult, error) {
379+
ASPMResult, errorModel, err := riskManagement.GetTopVulnerabilitiesByProjectID(projectID, scanID)
377380
if err != nil {
378381
return nil, errors.Wrapf(err, "%s", failedListingResults)
379382
}

internal/wrappers/mock/risk-management-mock.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import (
66

77
type RiskManagementMockWrapper struct{}
88

9-
func (r *RiskManagementMockWrapper) GetTopVulnerabilitiesByProjectID(projectID string) (*wrappers.ASPMResult, *wrappers.WebError, error) {
9+
func (r *RiskManagementMockWrapper) GetTopVulnerabilitiesByProjectID(projectID string, scanID string) (*wrappers.ASPMResult, *wrappers.WebError, error) {
1010
mockResults := []wrappers.RiskManagementResult{
11-
{ID: "1", Name: "Vuln1", Severity: "High", Traits: map[string]string{wrappers.ExplPathKey: wrappers.ExplPathValue}},
11+
{ID: "1", Name: "Vuln1", Severity: "High", Traits: map[string]string{wrappers.ExpPathKey: wrappers.ExpPathValue}},
1212
{ID: "2", Name: "Vuln2", Severity: "Medium", Traits: map[string]string{wrappers.SuspMalwareKey: wrappers.SuspMalwareValue}},
1313
}
1414

1515
mockASPMResult := &wrappers.ASPMResult{
1616
ProjectID: projectID,
17+
ScanID: scanID,
1718
Results: mockResults,
1819
}
1920

internal/wrappers/risk-management-http.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package wrappers
22

33
import (
4+
"bytes"
45
"encoding/json"
56
"fmt"
67
"net/http"
@@ -20,14 +21,14 @@ func NewHTTPRiskManagementWrapper(path string) RiskManagementWrapper {
2021
}
2122
}
2223

23-
func (r *RiskManagementHTTPWrapper) GetTopVulnerabilitiesByProjectID(projectID string) (
24-
*ASPMResult,
25-
*WebError,
26-
error,
27-
) {
24+
func (r *RiskManagementHTTPWrapper) GetTopVulnerabilitiesByProjectID(projectID string, scanID string) (*ASPMResult, *WebError, error) {
2825
clientTimeout := viper.GetUint(commonParams.ClientTimeoutKey)
26+
27+
model := GetASPMResultRequest{ScanId: scanID}
28+
jsonBytes, err := json.Marshal(model)
29+
2930
path := fmt.Sprintf(r.path, projectID)
30-
resp, err := SendHTTPRequest(http.MethodGet, path, http.NoBody, true, clientTimeout)
31+
resp, err := SendHTTPRequest(http.MethodGet, path, bytes.NewBuffer(jsonBytes), true, clientTimeout)
3132
if err != nil {
3233
return nil, nil, err
3334
}

internal/wrappers/risk-management.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,22 @@ import "time"
44

55
const (
66
SuspMalwareKey = "suspMalware"
7-
ExplPathKey = "explPath"
8-
PubExposedKey = "pubExposed"
9-
RuntimeKey = "runtime"
7+
ExpPathKey = "explPath"
8+
//PubExposedKey = "pubExposed"
9+
//RuntimeKey = "runtime"
1010

1111
SuspMalwareValue = "Suspected Malware"
12-
ExplPathValue = "Exploitable Path"
13-
PubExposedValue = "Public Exposed"
14-
RuntimeValue = "Runtime"
12+
ExpPathValue = "Exploitable Path"
13+
//PubExposedValue = "Public Exposed"
14+
//RuntimeValue = "Runtime"
1515
)
1616

1717
type RiskManagementWrapper interface {
18-
GetTopVulnerabilitiesByProjectID(projectID string) (*ASPMResult, *WebError, error)
18+
GetTopVulnerabilitiesByProjectID(projectID string, scanID string) (*ASPMResult, *WebError, error)
19+
}
20+
21+
type GetASPMResultRequest struct {
22+
ScanId string `json:"scanID"`
1923
}
2024

2125
type ApplicationScore struct {

0 commit comments

Comments
 (0)