Skip to content

Commit e729fc9

Browse files
committed
add test cases for issue delete and pull request delete webhooks
1 parent 2ba9a24 commit e729fc9

File tree

3 files changed

+81
-2
lines changed

3 files changed

+81
-2
lines changed

options/locale/locale_en-US.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2371,7 +2371,7 @@ settings.event_repository = Repository
23712371
settings.event_repository_desc = Repository created or deleted.
23722372
settings.event_header_issue = Issue Events
23732373
settings.event_issues = Issues
2374-
settings.event_issues_desc = Issue opened, closed, reopened, or edited.
2374+
settings.event_issues_desc = Issue opened, closed, reopened, edited or deleted.
23752375
settings.event_issue_assign = Issue Assigned
23762376
settings.event_issue_assign_desc = Issue assigned or unassigned.
23772377
settings.event_issue_label = Issue Labeled
@@ -2382,7 +2382,7 @@ settings.event_issue_comment = Issue Comment
23822382
settings.event_issue_comment_desc = Issue comment created, edited, or deleted.
23832383
settings.event_header_pull_request = Pull Request Events
23842384
settings.event_pull_request = Pull Request
2385-
settings.event_pull_request_desc = Pull request opened, closed, reopened, or edited.
2385+
settings.event_pull_request_desc = Pull request opened, closed, reopened, edited or deleted.
23862386
settings.event_pull_request_assign = Pull Request Assigned
23872387
settings.event_pull_request_assign_desc = Pull request assigned or unassigned.
23882388
settings.event_pull_request_label = Pull Request Labeled

tests/integration/issue_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@ func testNewIssue(t *testing.T, session *TestSession, user, repo, title, content
151151
return issueURL
152152
}
153153

154+
func testIssueDelete(t *testing.T, session *TestSession, issueUrl string) {
155+
req := NewRequestWithValues(t, "POST", path.Join(issueUrl, "delete"), map[string]string{
156+
"_csrf": GetUserCSRFToken(t, session),
157+
})
158+
session.MakeRequest(t, req, http.StatusSeeOther)
159+
}
160+
154161
func testIssueAssign(t *testing.T, session *TestSession, repoLink string, issueID, assigneeID int64) {
155162
req := NewRequestWithValues(t, "POST", fmt.Sprintf(repoLink+"/issues/assignee?issue_ids=%d", issueID), map[string]string{
156163
"_csrf": GetUserCSRFToken(t, session),

tests/integration/repo_webhook_test.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"net/http/httptest"
1111
"net/url"
12+
"path"
1213
"strings"
1314
"testing"
1415
"time"
@@ -450,6 +451,39 @@ func Test_WebhookIssue(t *testing.T) {
450451
})
451452
}
452453

454+
func Test_WebhookIssueDelete(t *testing.T) {
455+
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
456+
var payloads []api.IssuePayload
457+
var triggeredEvent string
458+
provider := newMockWebhookProvider(func(r *http.Request) {
459+
content, _ := io.ReadAll(r.Body)
460+
var payload api.IssuePayload
461+
err := json.Unmarshal(content, &payload)
462+
assert.NoError(t, err)
463+
payloads = append(payloads, payload)
464+
triggeredEvent = "issue"
465+
}, http.StatusOK)
466+
defer provider.Close()
467+
468+
// 1. create a new webhook with special webhook for repo1
469+
session := loginUser(t, "user2")
470+
testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "issues")
471+
issueUrl := testNewIssue(t, session, "user2", "repo1", "Title1", "Description1")
472+
473+
// 2. trigger the webhook
474+
testIssueDelete(t, session, issueUrl)
475+
476+
// 3. validate the webhook is triggered
477+
assert.Equal(t, "issue", triggeredEvent)
478+
require.Len(t, payloads, 2)
479+
assert.EqualValues(t, "deleted", payloads[1].Action)
480+
assert.Equal(t, "repo1", payloads[1].Issue.Repo.Name)
481+
assert.Equal(t, "user2/repo1", payloads[1].Issue.Repo.FullName)
482+
assert.Equal(t, "Title1", payloads[1].Issue.Title)
483+
assert.Equal(t, "Description1", payloads[1].Issue.Body)
484+
})
485+
}
486+
453487
func Test_WebhookIssueAssign(t *testing.T) {
454488
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
455489
var payloads []api.PullRequestPayload
@@ -596,6 +630,44 @@ func Test_WebhookPullRequest(t *testing.T) {
596630
})
597631
}
598632

633+
func Test_WebhookPullRequestDelete(t *testing.T) {
634+
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
635+
var payloads []api.PullRequestPayload
636+
var triggeredEvent string
637+
provider := newMockWebhookProvider(func(r *http.Request) {
638+
content, _ := io.ReadAll(r.Body)
639+
var payload api.PullRequestPayload
640+
err := json.Unmarshal(content, &payload)
641+
assert.NoError(t, err)
642+
payloads = append(payloads, payload)
643+
triggeredEvent = "pull_request"
644+
}, http.StatusOK)
645+
defer provider.Close()
646+
647+
// 1. create a new webhook with special webhook for repo1
648+
session := loginUser(t, "user2")
649+
testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "pull_request")
650+
651+
testAPICreateBranch(t, session, "user2", "repo1", "master", "master2", http.StatusCreated)
652+
653+
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
654+
issueUrl := testCreatePullToDefaultBranch(t, session, repo1, repo1, "master2", "first pull request")
655+
656+
// 2. trigger the webhook
657+
testIssueDelete(t, session, path.Join(repo1.Link(), "pulls", issueUrl))
658+
659+
// 3. validate the webhook is triggered
660+
assert.Equal(t, "pull_request", triggeredEvent)
661+
require.Len(t, payloads, 2)
662+
assert.EqualValues(t, "deleted", payloads[1].Action)
663+
assert.Equal(t, "repo1", payloads[1].PullRequest.Base.Repository.Name)
664+
assert.Equal(t, "user2/repo1", payloads[1].PullRequest.Base.Repository.FullName)
665+
assert.Equal(t, 0, *payloads[1].PullRequest.Additions)
666+
assert.Equal(t, 0, *payloads[1].PullRequest.ChangedFiles)
667+
assert.Equal(t, 0, *payloads[1].PullRequest.Deletions)
668+
})
669+
}
670+
599671
func Test_WebhookPullRequestComment(t *testing.T) {
600672
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
601673
var payloads []api.IssueCommentPayload

0 commit comments

Comments
 (0)