@@ -134,3 +134,173 @@ func TestIsCustomState(t *testing.T) {
134134 })
135135 }
136136}
137+ func TestRunTriageUpdateWithNotFoundCustomState (t * testing.T ) {
138+ mockResultsPredicatesWrapper := & mock.ResultsPredicatesMockWrapper {}
139+ mockFeatureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
140+ mockCustomStatesWrapper := & mock.CustomStatesMockWrapper {}
141+ mock .Flag = wrappers.FeatureFlagResponseModel {
142+ Name : "test-flag" ,
143+ Status : true ,
144+ }
145+ cmd := triageUpdateSubCommand (mockResultsPredicatesWrapper , mockFeatureFlagsWrapper , mockCustomStatesWrapper )
146+ cmd .SetArgs ([]string {
147+ "--similarity-id" , "MOCK" ,
148+ "--project-id" , "MOCK" ,
149+ "--severity" , "low" ,
150+ "--state" , "CUSTOM_STATE_1" ,
151+ "--scan-type" , "sast" ,
152+ })
153+
154+ err := cmd .Execute ()
155+ assert .ErrorContains (t , err , "Failed to get custom state ID for state: CUSTOM_STATE_1: No matching state found for CUSTOM_STATE_1" )
156+ }
157+
158+ func TestRunTriageUpdateWithCustomState (t * testing.T ) {
159+ mockResultsPredicatesWrapper := & mock.ResultsPredicatesMockWrapper {}
160+ mockFeatureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
161+ mockCustomStatesWrapper := & mock.CustomStatesMockWrapper {}
162+ mock .Flag = wrappers.FeatureFlagResponseModel {
163+ Name : "test-flag" ,
164+ Status : true ,
165+ }
166+ cmd := triageUpdateSubCommand (mockResultsPredicatesWrapper , mockFeatureFlagsWrapper , mockCustomStatesWrapper )
167+ cmd .SetArgs ([]string {
168+ "--similarity-id" , "MOCK" ,
169+ "--project-id" , "MOCK" ,
170+ "--severity" , "low" ,
171+ "--state" , "demo2" ,
172+ "--scan-type" , "sast" ,
173+ })
174+
175+ err := cmd .Execute ()
176+ assert .NilError (t , err )
177+ }
178+
179+ func TestRunTriageUpdateWithSystemState (t * testing.T ) {
180+ mockResultsPredicatesWrapper := & mock.ResultsPredicatesMockWrapper {}
181+ mockFeatureFlagsWrapper := & mock.FeatureFlagsMockWrapper {}
182+ mockCustomStatesWrapper := & mock.CustomStatesMockWrapper {}
183+
184+ cmd := triageUpdateSubCommand (mockResultsPredicatesWrapper , mockFeatureFlagsWrapper , mockCustomStatesWrapper )
185+ cmd .SetArgs ([]string {
186+ "--similarity-id" , "MOCK" ,
187+ "--project-id" , "MOCK" ,
188+ "--severity" , "low" ,
189+ "--state" , "TO_VERIFY" ,
190+ "--scan-type" , "sast" ,
191+ })
192+
193+ err := cmd .Execute ()
194+ assert .NilError (t , err )
195+ }
196+
197+ func TestDetermineSystemOrCustomState (t * testing.T ) {
198+ tests := []struct {
199+ name string
200+ state string
201+ customStateID string
202+ mockWrapper wrappers.CustomStatesWrapper
203+ mockFeatureFlags wrappers.FeatureFlagsWrapper
204+ flag wrappers.FeatureFlagResponseModel
205+ expectedState string
206+ expectedCustomState string
207+ expectedError string
208+ }{
209+ {
210+ name : "Custom state with valid state name" ,
211+ state : "demo2" ,
212+ customStateID : "" ,
213+ mockWrapper : & mock.CustomStatesMockWrapper {},
214+ mockFeatureFlags : & mock.FeatureFlagsMockWrapper {},
215+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
216+ expectedState : "" ,
217+ expectedCustomState : "2" ,
218+ expectedError : "" ,
219+ },
220+ {
221+ name : "Custom state with valid state ID" ,
222+ state : "" ,
223+ customStateID : "2" ,
224+ mockWrapper : & mock.CustomStatesMockWrapper {},
225+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
226+ expectedState : "" ,
227+ expectedCustomState : "2" ,
228+ expectedError : "" ,
229+ },
230+ {
231+ name : "System state" ,
232+ state : "TO_VERIFY" ,
233+ customStateID : "" ,
234+ mockWrapper : & mock.CustomStatesMockWrapper {},
235+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
236+ expectedState : "TO_VERIFY" ,
237+ expectedCustomState : "" ,
238+ expectedError : "" ,
239+ },
240+ {
241+ name : "State ID required when state is not provided" ,
242+ state : "" ,
243+ customStateID : "" ,
244+ mockWrapper : & mock.CustomStatesMockWrapper {},
245+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
246+ expectedState : "" ,
247+ expectedCustomState : "" ,
248+ expectedError : "state-id is required when state is not provided" ,
249+ },
250+ {
251+ name : "Failed to get custom state ID" ,
252+ state : "INVALID_STATE" ,
253+ customStateID : "" ,
254+ mockWrapper : & mock.CustomStatesMockWrapperWithError {},
255+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
256+ expectedState : "" ,
257+ expectedCustomState : "" ,
258+ expectedError : "Failed to get custom state ID for state: INVALID_STATE" ,
259+ },
260+ {
261+ name : "Both state and state ID provided - valid custom state" ,
262+ state : "demo2" ,
263+ customStateID : "2" ,
264+ mockWrapper : & mock.CustomStatesMockWrapper {},
265+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
266+ expectedState : "" ,
267+ expectedCustomState : "2" ,
268+ expectedError : "" ,
269+ },
270+ {
271+ name : "Both state and state ID provided - valid system state" ,
272+ state : "TO_VERIFY" ,
273+ customStateID : "2" ,
274+ mockWrapper : & mock.CustomStatesMockWrapper {},
275+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
276+ expectedState : "TO_VERIFY" ,
277+ expectedCustomState : "" ,
278+ expectedError : "" ,
279+ },
280+ {
281+ name : "Both state and state ID provided - invalid state" ,
282+ state : "INVALID_STATE" ,
283+ customStateID : "2" ,
284+ mockWrapper : & mock.CustomStatesMockWrapperWithError {},
285+ flag : wrappers.FeatureFlagResponseModel {Name : "test-flag" , Status : true },
286+ expectedState : "" ,
287+ expectedCustomState : "2" ,
288+ expectedError : "" ,
289+ },
290+ }
291+
292+ for _ , tt := range tests {
293+ tt := tt
294+ t .Run (tt .name , func (t * testing.T ) {
295+ mock .Flag = tt .flag
296+ state , customStateID , err := determineSystemOrCustomState (tt .mockWrapper , tt .mockFeatureFlags , tt .state , tt .customStateID )
297+ if tt .expectedError != "" {
298+ assert .ErrorContains (t , err , tt .expectedError )
299+ } else {
300+ assert .NilError (t , err )
301+ }
302+ assert .Equal (t , state , tt .expectedState )
303+ assert .Equal (t , customStateID , tt .expectedCustomState )
304+ })
305+ }
306+ }
0 commit comments