@@ -231,15 +231,67 @@ func TestWebhooks(t *testing.T) {
231231				"X-Gitlab-Event" : []string {"Build Hook" },
232232			},
233233		},
234+ 	}
235+ 
236+ 	for  _ , tt  :=  range  tests  {
237+ 		tc  :=  tt 
238+ 		client  :=  & http.Client {}
239+ 		t .Run (tt .name , func (t  * testing.T ) {
240+ 			t .Parallel ()
241+ 			payload , err  :=  os .Open (tc .filename )
242+ 			assert .NoError (err )
243+ 			defer  func () {
244+ 				_  =  payload .Close ()
245+ 			}()
246+ 
247+ 			var  parseError  error 
248+ 			var  results  interface {}
249+ 			server  :=  newServer (func (w  http.ResponseWriter , r  * http.Request ) {
250+ 				results , parseError  =  hook .Parse (r , tc .event )
251+ 			})
252+ 			defer  server .Close ()
253+ 			req , err  :=  http .NewRequest (http .MethodPost , server .URL + path , payload )
254+ 			assert .NoError (err )
255+ 			req .Header  =  tc .headers 
256+ 			req .Header .Set ("Content-Type" , "application/json" )
257+ 			req .Header .Set ("X-Gitlab-Token" , "sampleToken!" )
258+ 
259+ 			resp , err  :=  client .Do (req )
260+ 			assert .NoError (err )
261+ 			assert .Equal (http .StatusOK , resp .StatusCode )
262+ 			assert .NoError (parseError )
263+ 			assert .Equal (reflect .TypeOf (tc .typ ), reflect .TypeOf (results ))
264+ 		})
265+ 	}
266+ }
267+ 
268+ func  TestJobHooks (t  * testing.T ) {
269+ 	assert  :=  require .New (t )
270+ 	tests  :=  []struct  {
271+ 		name      string 
272+ 		events    []Event 
273+ 		typ       interface {}
274+ 		filename  string 
275+ 		headers   http.Header 
276+ 	}{
234277		{
235278			name :     "JobEvent" ,
236- 			event :     JobEvents ,
279+ 			events :   [] Event { JobEvents } ,
237280			typ :      JobEventPayload {},
238281			filename : "../testdata/gitlab/job-event.json" ,
239282			headers : http.Header {
240283				"X-Gitlab-Event" : []string {"Job Hook" },
241284			},
242285		},
286+ 		{
287+ 			name :     "JobEvent" ,
288+ 			events :   []Event {JobEvents , BuildEvents },
289+ 			typ :      BuildEventPayload {},
290+ 			filename : "../testdata/gitlab/build-event.json" ,
291+ 			headers : http.Header {
292+ 				"X-Gitlab-Event" : []string {"Job Hook" },
293+ 			},
294+ 		},
243295	}
244296
245297	for  _ , tt  :=  range  tests  {
@@ -256,7 +308,7 @@ func TestWebhooks(t *testing.T) {
256308			var  parseError  error 
257309			var  results  interface {}
258310			server  :=  newServer (func (w  http.ResponseWriter , r  * http.Request ) {
259- 				results , parseError  =  hook .Parse (r , tc .event )
311+ 				results , parseError  =  hook .Parse (r , tc .events ... )
260312			})
261313			defer  server .Close ()
262314			req , err  :=  http .NewRequest (http .MethodPost , server .URL + path , payload )
0 commit comments