| 
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