Skip to content

Commit af93a78

Browse files
added-ut
1 parent f1b82b8 commit af93a78

File tree

2 files changed

+189
-12
lines changed

2 files changed

+189
-12
lines changed

internal/commands/predicates.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,27 +69,23 @@ func runTriageGetStates(customStatesWrapper wrappers.CustomStatesWrapper, featur
6969
return printer.Print(cmd.OutOrStdout(), systemStates, printer.FormatJSON)
7070
}
7171

72-
if scanType == params.SastType || scanType == "" {
73-
sastCustomStates, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, "SAST_CUSTOM_STATES_ENABLED")
74-
if !sastCustomStates.Status {
75-
return printer.Print(cmd.OutOrStdout(), systemStates, printer.FormatJSON)
76-
}
77-
}
78-
79-
if scanType == params.KicsType {
72+
switch scanType {
73+
case params.KicsType:
8074
kicsCustomStates, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, "KICS_CUSTOM_STATES_ENABLED")
8175
if !kicsCustomStates.Status {
8276
return printer.Print(cmd.OutOrStdout(), systemStates, printer.FormatJSON)
8377
}
84-
}
85-
86-
if scanType == params.ScaType {
78+
case params.ScaType:
8779
scaCustomStates, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, "SCA_CUSTOM_STATES")
8880
if !scaCustomStates.Status {
8981
return printer.Print(cmd.OutOrStdout(), systemStates, printer.FormatJSON)
9082
}
83+
default:
84+
sastCustomStates, _ := wrappers.GetSpecificFeatureFlag(featureFlagsWrapper, "SAST_CUSTOM_STATES_ENABLED")
85+
if !sastCustomStates.Status {
86+
return printer.Print(cmd.OutOrStdout(), systemStates, printer.FormatJSON)
87+
}
9188
}
92-
9389
includeDeleted, _ := cmd.Flags().GetBool(params.AllStatesFlag)
9490
states, err := customStatesWrapper.GetAllCustomStates(includeDeleted)
9591
if err != nil {

internal/commands/predicates_test.go

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,187 @@ func TestRunTriageUpdateWithSystemState(t *testing.T) {
210210
assert.NilError(t, err)
211211
}
212212

213+
func TestRunTriageGetStates_ScanTypeSwitch(t *testing.T) {
214+
tests := []struct {
215+
name string
216+
scanType string
217+
customStatesFeatureFlag wrappers.FeatureFlagResponseModel
218+
scanTypeFeatureFlag wrappers.FeatureFlagResponseModel
219+
expectedError bool
220+
description string
221+
}{
222+
{
223+
name: "KICS scan type with KICS custom states enabled",
224+
scanType: "kics",
225+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
226+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "KICS_CUSTOM_STATES_ENABLED", Status: true},
227+
expectedError: false,
228+
description: "Should successfully get custom states for KICS when feature flag is enabled",
229+
},
230+
{
231+
name: "KICS scan type with KICS custom states disabled",
232+
scanType: "kics",
233+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
234+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "KICS_CUSTOM_STATES_ENABLED", Status: false},
235+
expectedError: false,
236+
description: "Should return system states for KICS when feature flag is disabled",
237+
},
238+
{
239+
name: "SCA scan type with SCA custom states enabled",
240+
scanType: "sca",
241+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
242+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "SCA_CUSTOM_STATES", Status: true},
243+
expectedError: false,
244+
description: "Should successfully get custom states for SCA when feature flag is enabled",
245+
},
246+
{
247+
name: "SCA scan type with SCA custom states disabled",
248+
scanType: "sca",
249+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
250+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "SCA_CUSTOM_STATES", Status: false},
251+
expectedError: false,
252+
description: "Should return system states for SCA when feature flag is disabled",
253+
},
254+
{
255+
name: "SAST scan type with SAST custom states enabled",
256+
scanType: "sast",
257+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
258+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "SAST_CUSTOM_STATES_ENABLED", Status: true},
259+
expectedError: false,
260+
description: "Should successfully get custom states for SAST when feature flag is enabled",
261+
},
262+
{
263+
name: "SAST scan type with SAST custom states disabled",
264+
scanType: "sast",
265+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
266+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "SAST_CUSTOM_STATES_ENABLED", Status: false},
267+
expectedError: false,
268+
description: "Should return system states for SAST when feature flag is disabled",
269+
},
270+
{
271+
name: "Unknown scan type defaults to SAST behavior",
272+
scanType: "unknown",
273+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
274+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "SAST_CUSTOM_STATES_ENABLED", Status: true},
275+
expectedError: false,
276+
description: "Should default to SAST logic for unknown scan types",
277+
},
278+
{
279+
name: "KICS with uppercase scan type",
280+
scanType: "KICS",
281+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
282+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "KICS_CUSTOM_STATES_ENABLED", Status: true},
283+
expectedError: false,
284+
description: "Should handle uppercase scan type correctly",
285+
},
286+
{
287+
name: "SCA with mixed case scan type",
288+
scanType: "ScA",
289+
customStatesFeatureFlag: wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true},
290+
scanTypeFeatureFlag: wrappers.FeatureFlagResponseModel{Name: "SCA_CUSTOM_STATES", Status: true},
291+
expectedError: false,
292+
description: "Should handle mixed case scan type correctly",
293+
},
294+
}
295+
296+
for _, tt := range tests {
297+
tt := tt
298+
t.Run(tt.name, func(t *testing.T) {
299+
clearFlags()
300+
mockCustomStatesWrapper := &mock.CustomStatesMockWrapper{}
301+
mockFeatureFlagsWrapper := &mock.FeatureFlagsMockWrapper{}
302+
303+
// First, set the custom states feature flag
304+
mock.Flag = tt.customStatesFeatureFlag
305+
cmd := triageGetStatesSubCommand(mockCustomStatesWrapper, mockFeatureFlagsWrapper)
306+
307+
// Then set the scan-type specific feature flag for the actual execution
308+
mock.Flag = tt.scanTypeFeatureFlag
309+
cmd.SetArgs([]string{"--scan-type", tt.scanType})
310+
311+
err := cmd.Execute()
312+
313+
if tt.expectedError {
314+
assert.Assert(t, err != nil, tt.description)
315+
} else {
316+
assert.NilError(t, err, tt.description)
317+
}
318+
})
319+
}
320+
}
321+
322+
func TestRunTriageGetStates_OverallFeatureFlagDisabled(t *testing.T) {
323+
clearFlags()
324+
mockCustomStatesWrapper := &mock.CustomStatesMockWrapper{}
325+
mockFeatureFlagsWrapper := &mock.FeatureFlagsMockWrapper{}
326+
327+
// Set the overall custom states feature flag to disabled
328+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: false}
329+
330+
cmd := triageGetStatesSubCommand(mockCustomStatesWrapper, mockFeatureFlagsWrapper)
331+
cmd.SetArgs([]string{"--scan-type", "sast"})
332+
333+
err := cmd.Execute()
334+
assert.NilError(t, err, "Should return system states when overall custom states feature flag is disabled")
335+
}
336+
337+
func TestRunTriageGetStates_WithAllFlag(t *testing.T) {
338+
clearFlags()
339+
mockCustomStatesWrapper := &mock.CustomStatesMockWrapper{}
340+
mockFeatureFlagsWrapper := &mock.FeatureFlagsMockWrapper{}
341+
342+
tests := []struct {
343+
name string
344+
scanType string
345+
allFlag bool
346+
}{
347+
{
348+
name: "KICS with all flag true",
349+
scanType: "kics",
350+
allFlag: true,
351+
},
352+
{
353+
name: "SCA with all flag false",
354+
scanType: "sca",
355+
allFlag: false,
356+
},
357+
{
358+
name: "SAST with all flag true",
359+
scanType: "sast",
360+
allFlag: true,
361+
},
362+
}
363+
364+
for _, tt := range tests {
365+
tt := tt
366+
t.Run(tt.name, func(t *testing.T) {
367+
clearFlags()
368+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: wrappers.CustomStatesFeatureFlag, Status: true}
369+
370+
cmd := triageGetStatesSubCommand(mockCustomStatesWrapper, mockFeatureFlagsWrapper)
371+
372+
// Set the scan-type specific feature flag to enabled
373+
switch tt.scanType {
374+
case "kics":
375+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: "KICS_CUSTOM_STATES_ENABLED", Status: true}
376+
case "sca":
377+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: "SCA_CUSTOM_STATES", Status: true}
378+
default:
379+
mock.Flag = wrappers.FeatureFlagResponseModel{Name: "SAST_CUSTOM_STATES_ENABLED", Status: true}
380+
}
381+
382+
args := []string{"--scan-type", tt.scanType}
383+
if tt.allFlag {
384+
args = append(args, "--all")
385+
}
386+
cmd.SetArgs(args)
387+
388+
err := cmd.Execute()
389+
assert.NilError(t, err)
390+
})
391+
}
392+
}
393+
213394
func TestDetermineSystemOrCustomState(t *testing.T) {
214395
tests := []struct {
215396
name string

0 commit comments

Comments
 (0)