Skip to content

Commit e7c9e94

Browse files
committed
Add webhook heads test
1 parent 75005c8 commit e7c9e94

File tree

1 file changed

+42
-33
lines changed

1 file changed

+42
-33
lines changed

tests/integration/repo_webhook_test.go

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,11 @@ type mockWebhookProvider struct {
8484
server *httptest.Server
8585
}
8686

87-
func newMockWebhookProvider(callback func(content string)) *mockWebhookProvider {
87+
func newMockWebhookProvider(callback func(r *http.Request), status int) *mockWebhookProvider {
8888
m := &mockWebhookProvider{}
8989
m.server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
90-
bs, err := io.ReadAll(r.Body)
91-
if err != nil {
92-
w.WriteHeader(http.StatusInternalServerError)
93-
return
94-
}
95-
96-
callback(string(bs))
97-
w.WriteHeader(http.StatusOK)
90+
callback(r)
91+
w.WriteHeader(status)
9892
}))
9993
return m
10094
}
@@ -117,13 +111,14 @@ func (m *mockWebhookProvider) Close() {
117111
func Test_WebhookCreate(t *testing.T) {
118112
var payloads []api.CreatePayload
119113
var triggeredEvent string
120-
provider := newMockWebhookProvider(func(content string) {
114+
provider := newMockWebhookProvider(func(r *http.Request) {
115+
content, _ := io.ReadAll(r.Body)
121116
var payload api.CreatePayload
122117
err := json.Unmarshal([]byte(content), &payload)
123118
assert.NoError(t, err)
124119
payloads = append(payloads, payload)
125120
triggeredEvent = string(webhook_module.HookEventCreate)
126-
})
121+
}, http.StatusOK)
127122
defer provider.Close()
128123

129124
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -148,13 +143,14 @@ func Test_WebhookCreate(t *testing.T) {
148143
func Test_WebhookDelete(t *testing.T) {
149144
var payloads []api.DeletePayload
150145
var triggeredEvent string
151-
provider := newMockWebhookProvider(func(content string) {
146+
provider := newMockWebhookProvider(func(r *http.Request) {
147+
content, _ := io.ReadAll(r.Body)
152148
var payload api.DeletePayload
153149
err := json.Unmarshal([]byte(content), &payload)
154150
assert.NoError(t, err)
155151
payloads = append(payloads, payload)
156152
triggeredEvent = "delete"
157-
})
153+
}, http.StatusOK)
158154
defer provider.Close()
159155

160156
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -180,13 +176,14 @@ func Test_WebhookDelete(t *testing.T) {
180176
func Test_WebhookFork(t *testing.T) {
181177
var payloads []api.ForkPayload
182178
var triggeredEvent string
183-
provider := newMockWebhookProvider(func(content string) {
179+
provider := newMockWebhookProvider(func(r *http.Request) {
180+
content, _ := io.ReadAll(r.Body)
184181
var payload api.ForkPayload
185182
err := json.Unmarshal([]byte(content), &payload)
186183
assert.NoError(t, err)
187184
payloads = append(payloads, payload)
188185
triggeredEvent = "fork"
189-
})
186+
}, http.StatusOK)
190187
defer provider.Close()
191188

192189
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -211,13 +208,14 @@ func Test_WebhookFork(t *testing.T) {
211208
func Test_WebhookIssueComment(t *testing.T) {
212209
var payloads []api.IssueCommentPayload
213210
var triggeredEvent string
214-
provider := newMockWebhookProvider(func(content string) {
211+
provider := newMockWebhookProvider(func(r *http.Request) {
212+
content, _ := io.ReadAll(r.Body)
215213
var payload api.IssueCommentPayload
216214
err := json.Unmarshal([]byte(content), &payload)
217215
assert.NoError(t, err)
218216
payloads = append(payloads, payload)
219217
triggeredEvent = "issue_comment"
220-
})
218+
}, http.StatusOK)
221219
defer provider.Close()
222220

223221
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -245,13 +243,14 @@ func Test_WebhookIssueComment(t *testing.T) {
245243
func Test_WebhookRelease(t *testing.T) {
246244
var payloads []api.ReleasePayload
247245
var triggeredEvent string
248-
provider := newMockWebhookProvider(func(content string) {
246+
provider := newMockWebhookProvider(func(r *http.Request) {
247+
content, _ := io.ReadAll(r.Body)
249248
var payload api.ReleasePayload
250249
err := json.Unmarshal([]byte(content), &payload)
251250
assert.NoError(t, err)
252251
payloads = append(payloads, payload)
253252
triggeredEvent = "release"
254-
})
253+
}, http.StatusOK)
255254
defer provider.Close()
256255

257256
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -277,13 +276,14 @@ func Test_WebhookRelease(t *testing.T) {
277276
func Test_WebhookPush(t *testing.T) {
278277
var payloads []api.PushPayload
279278
var triggeredEvent string
280-
provider := newMockWebhookProvider(func(content string) {
279+
provider := newMockWebhookProvider(func(r *http.Request) {
280+
content, _ := io.ReadAll(r.Body)
281281
var payload api.PushPayload
282282
err := json.Unmarshal([]byte(content), &payload)
283283
assert.NoError(t, err)
284284
payloads = append(payloads, payload)
285285
triggeredEvent = "push"
286-
})
286+
}, http.StatusOK)
287287
defer provider.Close()
288288

289289
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -308,13 +308,14 @@ func Test_WebhookPush(t *testing.T) {
308308
func Test_WebhookIssue(t *testing.T) {
309309
var payloads []api.IssuePayload
310310
var triggeredEvent string
311-
provider := newMockWebhookProvider(func(content string) {
311+
provider := newMockWebhookProvider(func(r *http.Request) {
312+
content, _ := io.ReadAll(r.Body)
312313
var payload api.IssuePayload
313314
err := json.Unmarshal([]byte(content), &payload)
314315
assert.NoError(t, err)
315316
payloads = append(payloads, payload)
316317
triggeredEvent = "issues"
317-
})
318+
}, http.StatusOK)
318319
defer provider.Close()
319320

320321
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -340,13 +341,14 @@ func Test_WebhookIssue(t *testing.T) {
340341
func Test_WebhookPullRequest(t *testing.T) {
341342
var payloads []api.PullRequestPayload
342343
var triggeredEvent string
343-
provider := newMockWebhookProvider(func(content string) {
344+
provider := newMockWebhookProvider(func(r *http.Request) {
345+
content, _ := io.ReadAll(r.Body)
344346
var payload api.PullRequestPayload
345347
err := json.Unmarshal([]byte(content), &payload)
346348
assert.NoError(t, err)
347349
payloads = append(payloads, payload)
348350
triggeredEvent = "pull_request"
349-
})
351+
}, http.StatusOK)
350352
defer provider.Close()
351353

352354
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -374,13 +376,14 @@ func Test_WebhookPullRequest(t *testing.T) {
374376
func Test_WebhookWiki(t *testing.T) {
375377
var payloads []api.WikiPayload
376378
var triggeredEvent string
377-
provider := newMockWebhookProvider(func(content string) {
379+
provider := newMockWebhookProvider(func(r *http.Request) {
380+
content, _ := io.ReadAll(r.Body)
378381
var payload api.WikiPayload
379382
err := json.Unmarshal([]byte(content), &payload)
380383
assert.NoError(t, err)
381384
payloads = append(payloads, payload)
382385
triggeredEvent = "wiki"
383-
})
386+
}, http.StatusOK)
384387
defer provider.Close()
385388

386389
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -405,13 +408,14 @@ func Test_WebhookWiki(t *testing.T) {
405408
func Test_WebhookRepository(t *testing.T) {
406409
var payloads []api.RepositoryPayload
407410
var triggeredEvent string
408-
provider := newMockWebhookProvider(func(content string) {
411+
provider := newMockWebhookProvider(func(r *http.Request) {
412+
content, _ := io.ReadAll(r.Body)
409413
var payload api.RepositoryPayload
410414
err := json.Unmarshal([]byte(content), &payload)
411415
assert.NoError(t, err)
412416
payloads = append(payloads, payload)
413417
triggeredEvent = "repository"
414-
})
418+
}, http.StatusOK)
415419
defer provider.Close()
416420

417421
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -436,13 +440,14 @@ func Test_WebhookRepository(t *testing.T) {
436440
func Test_WebhookPackage(t *testing.T) {
437441
var payloads []api.PackagePayload
438442
var triggeredEvent string
439-
provider := newMockWebhookProvider(func(content string) {
443+
provider := newMockWebhookProvider(func(r *http.Request) {
444+
content, _ := io.ReadAll(r.Body)
440445
var payload api.PackagePayload
441446
err := json.Unmarshal([]byte(content), &payload)
442447
assert.NoError(t, err)
443448
payloads = append(payloads, payload)
444449
triggeredEvent = "package"
445-
})
450+
}, http.StatusOK)
446451
defer provider.Close()
447452

448453
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
@@ -472,13 +477,17 @@ func Test_WebhookPackage(t *testing.T) {
472477
func Test_WebhookStatus(t *testing.T) {
473478
var payloads []api.CommitStatusPayload
474479
var triggeredEvent string
475-
provider := newMockWebhookProvider(func(content string) {
480+
provider := newMockWebhookProvider(func(r *http.Request) {
481+
assert.Contains(t, r.Header["X-Github-Event-Type"], "status", "X-GitHub-Event-Type should contain status")
482+
assert.Contains(t, r.Header["X-Gitea-Event-Type"], "status", "X-Gitea-Event-Type should contain status")
483+
assert.Contains(t, r.Header["X-Gogs-Event-Type"], "status", "X-Gogs-Event-Type should contain status")
484+
content, _ := io.ReadAll(r.Body)
476485
var payload api.CommitStatusPayload
477486
err := json.Unmarshal([]byte(content), &payload)
478487
assert.NoError(t, err)
479488
payloads = append(payloads, payload)
480489
triggeredEvent = "status"
481-
})
490+
}, http.StatusOK)
482491
defer provider.Close()
483492

484493
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {

0 commit comments

Comments
 (0)