Skip to content

Commit 306922c

Browse files
committed
add webhook test for requestreviwer
1 parent 7669760 commit 306922c

File tree

4 files changed

+82
-15
lines changed

4 files changed

+82
-15
lines changed

tests/integration/pull_compare_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,15 @@ func TestPullCompare_EnableAllowEditsFromMaintainer(t *testing.T) {
103103

104104
// user4 creates a new branch and a PR
105105
testEditFileToNewBranch(t, user4Session, "user4", forkedRepoName, "master", "user4/update-readme", "README.md", "Hello, World\n(Edited by user4)\n")
106-
resp := testPullCreateDirectly(t, user4Session, repo3.OwnerName, repo3.Name, "master", "user4", forkedRepoName, "user4/update-readme", "PR for user4 forked repo3")
106+
resp := testPullCreateDirectly(t, user4Session, createPullRequestOptions{
107+
BaseRepoOwner: repo3.OwnerName,
108+
BaseRepoName: repo3.Name,
109+
BaseBranch: "master",
110+
HeadRepoOwner: "user4",
111+
HeadRepoName: forkedRepoName,
112+
HeadBranch: "user4/update-readme",
113+
Title: "PR for user4 forked repo3",
114+
})
107115
prURL := test.RedirectURL(resp)
108116

109117
// user2 (admin of repo3) goes to the PR files page

tests/integration/pull_create_test.go

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,26 +60,50 @@ func testPullCreate(t *testing.T, session *TestSession, user, repo string, toSel
6060
return resp
6161
}
6262

63-
func testPullCreateDirectly(t *testing.T, session *TestSession, baseRepoOwner, baseRepoName, baseBranch, headRepoOwner, headRepoName, headBranch, title string) *httptest.ResponseRecorder {
64-
headCompare := headBranch
65-
if headRepoOwner != "" {
66-
if headRepoName != "" {
67-
headCompare = fmt.Sprintf("%s/%s:%s", headRepoOwner, headRepoName, headBranch)
63+
type createPullRequestOptions struct {
64+
BaseRepoOwner string
65+
BaseRepoName string
66+
BaseBranch string
67+
HeadRepoOwner string
68+
HeadRepoName string
69+
HeadBranch string
70+
Title string
71+
ReviewerIDs string // comma-separated list of user IDs
72+
}
73+
74+
func (opts createPullRequestOptions) IsValid() bool {
75+
return opts.BaseRepoOwner != "" && opts.BaseRepoName != "" && opts.BaseBranch != "" &&
76+
opts.HeadBranch != "" && opts.Title != ""
77+
}
78+
79+
func testPullCreateDirectly(t *testing.T, session *TestSession, opts createPullRequestOptions) *httptest.ResponseRecorder {
80+
if !opts.IsValid() {
81+
t.Fatal("Invalid pull request options")
82+
}
83+
84+
headCompare := opts.HeadBranch
85+
if opts.HeadRepoOwner != "" {
86+
if opts.HeadRepoName != "" {
87+
headCompare = fmt.Sprintf("%s/%s:%s", opts.HeadRepoOwner, opts.HeadRepoName, opts.HeadBranch)
6888
} else {
69-
headCompare = fmt.Sprintf("%s:%s", headRepoOwner, headBranch)
89+
headCompare = fmt.Sprintf("%s:%s", opts.HeadRepoOwner, opts.HeadBranch)
7090
}
7191
}
72-
req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/compare/%s...%s", baseRepoOwner, baseRepoName, baseBranch, headCompare))
92+
req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s/compare/%s...%s", opts.BaseRepoOwner, opts.BaseRepoName, opts.BaseBranch, headCompare))
7393
resp := session.MakeRequest(t, req, http.StatusOK)
7494

7595
// Submit the form for creating the pull
7696
htmlDoc := NewHTMLParser(t, resp.Body)
7797
link, exists := htmlDoc.doc.Find("form.ui.form").Attr("action")
7898
assert.True(t, exists, "The template has changed")
79-
req = NewRequestWithValues(t, "POST", link, map[string]string{
99+
params := map[string]string{
80100
"_csrf": htmlDoc.GetCSRF(),
81-
"title": title,
82-
})
101+
"title": opts.Title,
102+
}
103+
if opts.ReviewerIDs != "" {
104+
params["reviewer_ids"] = opts.ReviewerIDs
105+
}
106+
req = NewRequestWithValues(t, "POST", link, params)
83107
resp = session.MakeRequest(t, req, http.StatusOK)
84108
return resp
85109
}
@@ -246,7 +270,15 @@ func TestPullCreatePrFromBaseToFork(t *testing.T) {
246270
testEditFile(t, sessionBase, "user2", "repo1", "master", "README.md", "Hello, World (Edited)\n")
247271

248272
// Create a PR
249-
resp := testPullCreateDirectly(t, sessionFork, "user1", "repo1", "master", "user2", "repo1", "master", "This is a pull title")
273+
resp := testPullCreateDirectly(t, sessionFork, createPullRequestOptions{
274+
BaseRepoOwner: "user1",
275+
BaseRepoName: "repo1",
276+
BaseBranch: "master",
277+
HeadRepoOwner: "user2",
278+
HeadRepoName: "repo1",
279+
HeadBranch: "master",
280+
Title: "This is a pull title",
281+
})
250282
// check the redirected URL
251283
url := test.RedirectURL(resp)
252284
assert.Regexp(t, "^/user1/repo1/pulls/[0-9]*$", url)

tests/integration/pull_review_test.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,29 @@ func TestPullView_CodeOwner(t *testing.T) {
185185
session := loginUser(t, "user5")
186186

187187
// create a pull request on the forked repository, code reviewers should not be mentioned
188-
testPullCreateDirectly(t, session, "user5", "test_codeowner", forkedRepo.DefaultBranch, "", "", "codeowner-basebranch-forked", "Test Pull Request on Forked Repository")
188+
testPullCreateDirectly(t, session, createPullRequestOptions{
189+
BaseRepoOwner: "user5",
190+
BaseRepoName: "test_codeowner",
191+
BaseBranch: forkedRepo.DefaultBranch,
192+
HeadRepoOwner: "",
193+
HeadRepoName: "",
194+
HeadBranch: "codeowner-basebranch-forked",
195+
Title: "Test Pull Request on Forked Repository",
196+
})
189197

190198
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"})
191199
unittest.AssertNotExistsBean(t, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8})
192200

193201
// create a pull request to base repository, code reviewers should be mentioned
194-
testPullCreateDirectly(t, session, repo.OwnerName, repo.Name, repo.DefaultBranch, forkedRepo.OwnerName, forkedRepo.Name, "codeowner-basebranch-forked", "Test Pull Request3")
202+
testPullCreateDirectly(t, session, createPullRequestOptions{
203+
BaseRepoOwner: repo.OwnerName,
204+
BaseRepoName: repo.Name,
205+
BaseBranch: repo.DefaultBranch,
206+
HeadRepoOwner: forkedRepo.OwnerName,
207+
HeadRepoName: forkedRepo.Name,
208+
HeadBranch: "codeowner-basebranch-forked",
209+
Title: "Test Pull Request3",
210+
})
195211

196212
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{BaseRepoID: repo.ID, HeadRepoID: forkedRepo.ID, HeadBranch: "codeowner-basebranch-forked"})
197213
unittest.AssertExistsAndLoadBean(t, &issues_model.Review{IssueID: pr.IssueID, Type: issues_model.ReviewTypeRequest, ReviewerID: 8})

tests/integration/repo_webhook_test.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,16 @@ func Test_WebhookPullRequest(t *testing.T) {
686686
testAPICreateBranch(t, session, "user2", "repo1", "master", "master2", http.StatusCreated)
687687
// 2. trigger the webhook
688688
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
689-
testCreatePullToDefaultBranch(t, session, repo1, repo1, "master2", "first pull request")
689+
testPullCreateDirectly(t, session, createPullRequestOptions{
690+
BaseRepoOwner: repo1.OwnerName,
691+
BaseRepoName: repo1.Name,
692+
BaseBranch: repo1.DefaultBranch,
693+
HeadRepoOwner: "",
694+
HeadRepoName: "",
695+
HeadBranch: "master2",
696+
Title: "first pull request",
697+
ReviewerIDs: "1",
698+
})
690699

691700
// 3. validate the webhook is triggered
692701
assert.Equal(t, "pull_request", triggeredEvent)
@@ -698,6 +707,8 @@ func Test_WebhookPullRequest(t *testing.T) {
698707
assert.Equal(t, 0, *payloads[0].PullRequest.Additions)
699708
assert.Equal(t, 0, *payloads[0].PullRequest.ChangedFiles)
700709
assert.Equal(t, 0, *payloads[0].PullRequest.Deletions)
710+
assert.Len(t, payloads[0].PullRequest.RequestedReviewers, 1)
711+
assert.Equal(t, int64(1), payloads[0].PullRequest.RequestedReviewers[0].ID)
701712
})
702713
}
703714

0 commit comments

Comments
 (0)