@@ -358,6 +358,78 @@ func TestEditGroupHook(t *testing.T) {
358358 }
359359}
360360
361+ func TestTriggerTestGroupHook (t * testing.T ) {
362+ mux , client := setup (t )
363+
364+ mux .HandleFunc ("/api/v4/groups/1/hooks/1/test/push_events" , func (w http.ResponseWriter , r * http.Request ) {
365+ testMethod (t , r , http .MethodPost )
366+ w .WriteHeader (http .StatusCreated )
367+ fmt .Fprint (w , `{"message":"201 Created"}` )
368+ })
369+
370+ mux .HandleFunc ("/api/v4/groups/1/hooks/1/test/invalid_trigger" , func (w http.ResponseWriter , r * http.Request ) {
371+ testMethod (t , r , http .MethodPost )
372+ w .WriteHeader (http .StatusBadRequest )
373+ fmt .Fprint (w , `{"error": "trigger does not have a valid value"}` )
374+ })
375+
376+ tests := []struct {
377+ name string
378+ groupID interface {}
379+ hookID int
380+ trigger GroupHookTrigger
381+ wantErr bool
382+ wantStatus int
383+ wantErrMsg string
384+ }{
385+ {
386+ name : "Valid trigger" ,
387+ groupID : 1 ,
388+ hookID : 1 ,
389+ trigger : GroupHookTriggerPush ,
390+ wantErr : false ,
391+ wantStatus : http .StatusCreated ,
392+ },
393+ {
394+ name : "Invalid group ID" ,
395+ groupID : "invalid" ,
396+ hookID : 1 ,
397+ trigger : GroupHookTriggerPush ,
398+ wantErr : true ,
399+ wantStatus : http .StatusNotFound ,
400+ },
401+ {
402+ name : "Invalid trigger type" ,
403+ groupID : 1 ,
404+ hookID : 1 ,
405+ trigger : "invalid_trigger" ,
406+ wantErr : true ,
407+ wantStatus : http .StatusBadRequest ,
408+ wantErrMsg : "trigger does not have a valid value" ,
409+ },
410+ }
411+
412+ for _ , tt := range tests {
413+ t .Run (tt .name , func (t * testing.T ) {
414+ resp , err := client .Groups .TriggerTestGroupHook (tt .groupID , tt .hookID , tt .trigger )
415+
416+ if tt .wantErr {
417+ assert .Error (t , err )
418+ if tt .wantStatus != 0 {
419+ assert .Equal (t , tt .wantStatus , resp .StatusCode )
420+ }
421+ if tt .wantErrMsg != "" {
422+ assert .Contains (t , err .Error (), tt .wantErrMsg )
423+ }
424+ } else {
425+ assert .NoError (t , err )
426+ assert .NotNil (t , resp )
427+ assert .Equal (t , tt .wantStatus , resp .StatusCode )
428+ }
429+ })
430+ }
431+ }
432+
361433func TestDeleteGroupHook (t * testing.T ) {
362434 mux , client := setup (t )
363435
0 commit comments