Skip to content

Commit c0d292a

Browse files
Merge pull request #1044 from Checkmarx/other/Add-ff-for-custom-states-command
Add ff checking and change the unit test (AST-80216)
2 parents 9adf9bc + 850bd66 commit c0d292a

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

internal/commands/predicates.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ import (
1212
"github.com/spf13/cobra"
1313
)
1414

15+
var constantsStates = []wrappers.CustomState{
16+
{ID: -1, Name: "To Verify", Type: ""},
17+
{ID: -1, Name: "Not Exploitable", Type: ""},
18+
{ID: -1, Name: "Proposed Not Exploitable", Type: ""},
19+
{ID: -1, Name: "Confirmed", Type: ""},
20+
{ID: -1, Name: "Urgent", Type: ""},
21+
}
22+
1523
func NewResultsPredicatesCommand(resultsPredicatesWrapper wrappers.ResultsPredicatesWrapper, featureFlagsWrapper wrappers.FeatureFlagsWrapper, customStatesWrapper wrappers.CustomStatesWrapper ) *cobra.Command {
1624
triageCmd := &cobra.Command{
1725
Use: "triage",
@@ -20,7 +28,7 @@ func NewResultsPredicatesCommand(resultsPredicatesWrapper wrappers.ResultsPredic
2028
}
2129
triageShowCmd := triageShowSubCommand(resultsPredicatesWrapper)
2230
triageUpdateCmd := triageUpdateSubCommand(resultsPredicatesWrapper, featureFlagsWrapper)
23-
triageGetStatesCmd := triageGetStatesSubCommand(customStatesWrapper)
31+
triageGetStatesCmd := triageGetStatesSubCommand(customStatesWrapper, featureFlagsWrapper)
2432

2533

2634
addFormatFlagToMultipleCommands(
@@ -32,7 +40,7 @@ func NewResultsPredicatesCommand(resultsPredicatesWrapper wrappers.ResultsPredic
3240
return triageCmd
3341
}
3442

35-
func triageGetStatesSubCommand(customStatesWrapper wrappers.CustomStatesWrapper) *cobra.Command {
43+
func triageGetStatesSubCommand(customStatesWrapper wrappers.CustomStatesWrapper, featureFlagsWrapper wrappers.FeatureFlagsWrapper) *cobra.Command {
3644
triageGetStatesCmd := &cobra.Command{
3745
Use: "get-states",
3846
Short: "Show the custom states that have been configured in your tenant",
@@ -43,21 +51,26 @@ func triageGetStatesSubCommand(customStatesWrapper wrappers.CustomStatesWrapper)
4351
$ cx triage get-states --all
4452
`,
4553
),
46-
RunE: runTriageGetStates(customStatesWrapper),
54+
RunE: runTriageGetStates(customStatesWrapper, featureFlagsWrapper),
4755
}
4856

4957
triageGetStatesCmd.PersistentFlags().Bool(params.AllStatesFlag, false, "Show all custom states, including the ones that have been deleted")
5058

5159
return triageGetStatesCmd
5260
}
5361

54-
func runTriageGetStates(customStatesWrapper wrappers.CustomStatesWrapper) func(*cobra.Command, []string) error {
62+
func runTriageGetStates(customStatesWrapper wrappers.CustomStatesWrapper, featureFlagsWrapper wrappers.FeatureFlagsWrapper) func(*cobra.Command, []string) error {
5563
return func(cmd *cobra.Command, _ []string) error {
64+
flagResponse, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, wrappers.CustomStatesFeatureFlag)
65+
if !flagResponse.Status {
66+
return printer.Print(cmd.OutOrStdout(), constantsStates, printer.FormatJSON)
67+
}
5668
includeDeleted, _ := cmd.Flags().GetBool(params.AllStatesFlag)
5769
states, err := customStatesWrapper.GetAllCustomStates(includeDeleted)
5870
if err != nil {
5971
return errors.Wrap(err, "Failed to fetch custom states")
6072
}
73+
states = append(states, constantsStates...)
6174
err = printer.Print(cmd.OutOrStdout(), states, printer.FormatJSON)
6275
return err
6376
}

internal/commands/predicates_test.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package commands
44

55
import (
66
"fmt"
7+
"github.com/checkmarx/ast-cli/internal/wrappers"
78
"github.com/checkmarx/ast-cli/internal/wrappers/mock"
89
"testing"
910

@@ -52,17 +53,34 @@ func TestRunUpdateTriageCommandWithNoInput(t *testing.T) {
5253

5354
func TestTriageGetStatesFlag(t *testing.T) {
5455
mockWrapper := &mock.CustomStatesMockWrapper{}
55-
cmd := triageGetStatesSubCommand(mockWrapper)
56+
featureFlagsWrapper := &mock.FeatureFlagsMockWrapper{}
57+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true}
58+
cmd := triageGetStatesSubCommand(mockWrapper, featureFlagsWrapper)
5659
cmd.SetArgs([]string{})
5760
err := cmd.Execute()
5861
assert.NilError(t, err)
62+
5963
states, err := mockWrapper.GetAllCustomStates(false)
6064
assert.NilError(t, err)
61-
assert.Equal(t, len(states), 2)
65+
expectedStatesCount := len(states) + len(constantsStates)
66+
assert.Equal(t, expectedStatesCount, len(states)+len(constantsStates))
67+
6268
cmd.SetArgs([]string{"--all"})
6369
err = cmd.Execute()
6470
assert.NilError(t, err)
71+
6572
states, err = mockWrapper.GetAllCustomStates(true)
6673
assert.NilError(t, err)
67-
assert.Equal(t, len(states), 3)
68-
}
74+
expectedStatesCount = len(states) + len(constantsStates)
75+
assert.Equal(t, expectedStatesCount, len(states)+len(constantsStates))
76+
77+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: false}
78+
cmd = triageGetStatesSubCommand(mockWrapper, featureFlagsWrapper)
79+
cmd.SetArgs([]string{})
80+
err = cmd.Execute()
81+
assert.NilError(t, err)
82+
assert.Equal(t, len(constantsStates), len(constantsStates))
83+
}
84+
85+
86+

internal/wrappers/feature-flags.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/checkmarx/ast-cli/internal/logger"
77
)
88

9+
const CustomStatesFeatureFlag = "CUSTOM_STATES_ENABLED"
910
const tenantIDClaimKey = "tenant_id"
1011
const PackageEnforcementEnabled = "PACKAGE_ENFORCEMENT_ENABLED"
1112
const CVSSV3Enabled = "CVSS_V3_ENABLED"
@@ -31,6 +32,15 @@ var FeatureFlagsBaseMap = []CommandFlags{
3132
},
3233
},
3334
},
35+
{
36+
CommandName: "cx triage get-states",
37+
FeatureFlags: []FlagBase{
38+
{
39+
Name: CustomStatesFeatureFlag,
40+
Default: false,
41+
},
42+
},
43+
},
3444
{
3545
CommandName: "cx project create",
3646
},

0 commit comments

Comments
 (0)