@@ -231,15 +231,67 @@ func TestWebhooks(t *testing.T) {
231
231
"X-Gitlab-Event" : []string {"Build Hook" },
232
232
},
233
233
},
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
+ }{
234
277
{
235
278
name : "JobEvent" ,
236
- event : JobEvents ,
279
+ events : [] Event { JobEvents } ,
237
280
typ : JobEventPayload {},
238
281
filename : "../testdata/gitlab/job-event.json" ,
239
282
headers : http.Header {
240
283
"X-Gitlab-Event" : []string {"Job Hook" },
241
284
},
242
285
},
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
+ },
243
295
}
244
296
245
297
for _ , tt := range tests {
@@ -256,7 +308,7 @@ func TestWebhooks(t *testing.T) {
256
308
var parseError error
257
309
var results interface {}
258
310
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 ... )
260
312
})
261
313
defer server .Close ()
262
314
req , err := http .NewRequest (http .MethodPost , server .URL + path , payload )
0 commit comments