@@ -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