|
|
|
|
@ -404,6 +404,78 @@ func Test_WebhookIssue(t *testing.T) {
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Test_WebhookIssueMilestone(t *testing.T) {
|
|
|
|
|
var payloads []api.IssuePayload
|
|
|
|
|
var triggeredEvent string
|
|
|
|
|
provider := newMockWebhookProvider(func(r *http.Request) {
|
|
|
|
|
content, _ := io.ReadAll(r.Body)
|
|
|
|
|
var payload api.IssuePayload
|
|
|
|
|
err := json.Unmarshal(content, &payload)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
payloads = append(payloads, payload)
|
|
|
|
|
triggeredEvent = "issues"
|
|
|
|
|
}, http.StatusOK)
|
|
|
|
|
defer provider.Close()
|
|
|
|
|
|
|
|
|
|
onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
|
|
|
|
|
// create a new webhook with special webhook for repo1
|
|
|
|
|
session := loginUser(t, "user2")
|
|
|
|
|
repo1 := unittest.AssertExistsAndLoadBean(t, &repo.Repository{ID: 1})
|
|
|
|
|
testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "issue_milestone")
|
|
|
|
|
|
|
|
|
|
t.Run("assign a milestone", func(t *testing.T) {
|
|
|
|
|
// trigger the webhook
|
|
|
|
|
testIssueChangeMilestone(t, session, repo1.Link(), 1, 1)
|
|
|
|
|
|
|
|
|
|
// validate the webhook is triggered
|
|
|
|
|
assert.Equal(t, "issues", triggeredEvent)
|
|
|
|
|
assert.Len(t, payloads, 1)
|
|
|
|
|
assert.Equal(t, "milestoned", string(payloads[0].Action))
|
|
|
|
|
assert.Equal(t, "repo1", payloads[0].Issue.Repo.Name)
|
|
|
|
|
assert.Equal(t, "user2/repo1", payloads[0].Issue.Repo.FullName)
|
|
|
|
|
assert.Equal(t, "issue1", payloads[0].Issue.Title)
|
|
|
|
|
assert.Equal(t, "content for the first issue", payloads[0].Issue.Body)
|
|
|
|
|
assert.EqualValues(t, 1, payloads[0].Issue.Milestone.ID)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("change a milestong", func(t *testing.T) {
|
|
|
|
|
// trigger the webhook again
|
|
|
|
|
triggeredEvent = ""
|
|
|
|
|
payloads = make([]api.IssuePayload, 0, 1)
|
|
|
|
|
// change milestone to 2
|
|
|
|
|
testIssueChangeMilestone(t, session, repo1.Link(), 1, 2)
|
|
|
|
|
|
|
|
|
|
// validate the webhook is triggered
|
|
|
|
|
assert.Equal(t, "issues", triggeredEvent)
|
|
|
|
|
assert.Len(t, payloads, 1)
|
|
|
|
|
assert.Equal(t, "milestoned", string(payloads[0].Action))
|
|
|
|
|
assert.Equal(t, "repo1", payloads[0].Issue.Repo.Name)
|
|
|
|
|
assert.Equal(t, "user2/repo1", payloads[0].Issue.Repo.FullName)
|
|
|
|
|
assert.Equal(t, "issue1", payloads[0].Issue.Title)
|
|
|
|
|
assert.Equal(t, "content for the first issue", payloads[0].Issue.Body)
|
|
|
|
|
assert.EqualValues(t, 2, payloads[0].Issue.Milestone.ID)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
t.Run("remove a milestone", func(t *testing.T) {
|
|
|
|
|
// trigger the webhook again
|
|
|
|
|
triggeredEvent = ""
|
|
|
|
|
payloads = make([]api.IssuePayload, 0, 1)
|
|
|
|
|
// change milestone to 0
|
|
|
|
|
testIssueChangeMilestone(t, session, repo1.Link(), 1, 0)
|
|
|
|
|
|
|
|
|
|
// validate the webhook is triggered
|
|
|
|
|
assert.Equal(t, "issues", triggeredEvent)
|
|
|
|
|
assert.Len(t, payloads, 1)
|
|
|
|
|
assert.Equal(t, "demilestoned", string(payloads[0].Action))
|
|
|
|
|
assert.Equal(t, "repo1", payloads[0].Issue.Repo.Name)
|
|
|
|
|
assert.Equal(t, "user2/repo1", payloads[0].Issue.Repo.FullName)
|
|
|
|
|
assert.Equal(t, "issue1", payloads[0].Issue.Title)
|
|
|
|
|
assert.Equal(t, "content for the first issue", payloads[0].Issue.Body)
|
|
|
|
|
assert.Nil(t, payloads[0].Issue.Milestone)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Test_WebhookPullRequest(t *testing.T) {
|
|
|
|
|
var payloads []api.PullRequestPayload
|
|
|
|
|
var triggeredEvent string
|
|
|
|
|
|