|
9 | 9 | "net/http"
|
10 | 10 | "net/http/httptest"
|
11 | 11 | "net/url"
|
| 12 | + "path" |
12 | 13 | "strings"
|
13 | 14 | "testing"
|
14 | 15 |
|
@@ -450,6 +451,39 @@ func Test_WebhookIssue(t *testing.T) {
|
450 | 451 | })
|
451 | 452 | }
|
452 | 453 |
|
| 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 | + |
453 | 487 | func Test_WebhookIssueAssign(t *testing.T) {
|
454 | 488 | onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
455 | 489 | var payloads []api.PullRequestPayload
|
@@ -596,6 +630,44 @@ func Test_WebhookPullRequest(t *testing.T) {
|
596 | 630 | })
|
597 | 631 | }
|
598 | 632 |
|
| 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 | + |
599 | 671 | func Test_WebhookPullRequestComment(t *testing.T) {
|
600 | 672 | onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
601 | 673 | var payloads []api.IssueCommentPayload
|
|
0 commit comments