Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit34281bc

Browse files
lunnysilverwind
andauthored
Fix bug webhook milestone is not right. (#34419)
Fix#34400---------Co-authored-by: silverwind <me@silverwind.io>
1 parent780e92e commit34281bc

File tree

5 files changed

+105
-0
lines changed

5 files changed

+105
-0
lines changed

‎routers/api/v1/repo/issue.go‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,15 @@ func EditIssue(ctx *context.APIContext) {
895895
issue.MilestoneID!=*form.Milestone {
896896
oldMilestoneID:=issue.MilestoneID
897897
issue.MilestoneID=*form.Milestone
898+
ifissue.MilestoneID>0 {
899+
issue.Milestone,err=issues_model.GetMilestoneByRepoID(ctx,ctx.Repo.Repository.ID,*form.Milestone)
900+
iferr!=nil {
901+
ctx.APIErrorInternal(err)
902+
return
903+
}
904+
}else {
905+
issue.Milestone=nil
906+
}
898907
iferr=issue_service.ChangeMilestoneAssign(ctx,issue,ctx.Doer,oldMilestoneID);err!=nil {
899908
ctx.APIErrorInternal(err)
900909
return

‎routers/api/v1/repo/pull.go‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,11 @@ func EditPullRequest(ctx *context.APIContext) {
706706
issue.MilestoneID!=form.Milestone {
707707
oldMilestoneID:=issue.MilestoneID
708708
issue.MilestoneID=form.Milestone
709+
issue.Milestone,err=issues_model.GetMilestoneByRepoID(ctx,ctx.Repo.Repository.ID,form.Milestone)
710+
iferr!=nil {
711+
ctx.APIErrorInternal(err)
712+
return
713+
}
709714
iferr=issue_service.ChangeMilestoneAssign(ctx,issue,ctx.Doer,oldMilestoneID);err!=nil {
710715
ctx.APIErrorInternal(err)
711716
return

‎routers/web/repo/issue.go‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,16 @@ func UpdateIssueMilestone(ctx *context.Context) {
418418
continue
419419
}
420420
issue.MilestoneID=milestoneID
421+
ifmilestoneID>0 {
422+
varerrerror
423+
issue.Milestone,err=issues_model.GetMilestoneByRepoID(ctx,ctx.Repo.Repository.ID,milestoneID)
424+
iferr!=nil {
425+
ctx.ServerError("GetMilestoneByRepoID",err)
426+
return
427+
}
428+
}else {
429+
issue.Milestone=nil
430+
}
421431
iferr:=issue_service.ChangeMilestoneAssign(ctx,issue,ctx.Doer,oldMilestoneID);err!=nil {
422432
ctx.ServerError("ChangeMilestoneAssign",err)
423433
return

‎tests/integration/issue_test.go‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,15 @@ func testIssueAddComment(t *testing.T, session *TestSession, issueURL, content,
184184
returnint64(id)
185185
}
186186

187+
functestIssueChangeMilestone(t*testing.T,session*TestSession,repoLinkstring,issueID,milestoneIDint64) {
188+
req:=NewRequestWithValues(t,"POST",fmt.Sprintf(repoLink+"/issues/milestone?issue_ids=%d",issueID),map[string]string{
189+
"_csrf":GetUserCSRFToken(t,session),
190+
"id":strconv.FormatInt(milestoneID,10),
191+
})
192+
resp:=session.MakeRequest(t,req,http.StatusOK)
193+
assert.Equal(t,`{"ok":true}`,strings.TrimSpace(resp.Body.String()))
194+
}
195+
187196
funcTestNewIssue(t*testing.T) {
188197
defertests.PrepareTestEnv(t)()
189198
session:=loginUser(t,"user2")

‎tests/integration/repo_webhook_test.go‎

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,78 @@ func Test_WebhookIssue(t *testing.T) {
404404
})
405405
}
406406

407+
funcTest_WebhookIssueMilestone(t*testing.T) {
408+
varpayloads []api.IssuePayload
409+
vartriggeredEventstring
410+
provider:=newMockWebhookProvider(func(r*http.Request) {
411+
content,_:=io.ReadAll(r.Body)
412+
varpayload api.IssuePayload
413+
err:=json.Unmarshal(content,&payload)
414+
assert.NoError(t,err)
415+
payloads=append(payloads,payload)
416+
triggeredEvent="issues"
417+
},http.StatusOK)
418+
deferprovider.Close()
419+
420+
onGiteaRun(t,func(t*testing.T,giteaURL*url.URL) {
421+
// create a new webhook with special webhook for repo1
422+
session:=loginUser(t,"user2")
423+
repo1:=unittest.AssertExistsAndLoadBean(t,&repo.Repository{ID:1})
424+
testAPICreateWebhookForRepo(t,session,"user2","repo1",provider.URL(),"issue_milestone")
425+
426+
t.Run("assign a milestone",func(t*testing.T) {
427+
// trigger the webhook
428+
testIssueChangeMilestone(t,session,repo1.Link(),1,1)
429+
430+
// validate the webhook is triggered
431+
assert.Equal(t,"issues",triggeredEvent)
432+
assert.Len(t,payloads,1)
433+
assert.Equal(t,"milestoned",string(payloads[0].Action))
434+
assert.Equal(t,"repo1",payloads[0].Issue.Repo.Name)
435+
assert.Equal(t,"user2/repo1",payloads[0].Issue.Repo.FullName)
436+
assert.Equal(t,"issue1",payloads[0].Issue.Title)
437+
assert.Equal(t,"content for the first issue",payloads[0].Issue.Body)
438+
assert.EqualValues(t,1,payloads[0].Issue.Milestone.ID)
439+
})
440+
441+
t.Run("change a milestong",func(t*testing.T) {
442+
// trigger the webhook again
443+
triggeredEvent=""
444+
payloads=make([]api.IssuePayload,0,1)
445+
// change milestone to 2
446+
testIssueChangeMilestone(t,session,repo1.Link(),1,2)
447+
448+
// validate the webhook is triggered
449+
assert.Equal(t,"issues",triggeredEvent)
450+
assert.Len(t,payloads,1)
451+
assert.Equal(t,"milestoned",string(payloads[0].Action))
452+
assert.Equal(t,"repo1",payloads[0].Issue.Repo.Name)
453+
assert.Equal(t,"user2/repo1",payloads[0].Issue.Repo.FullName)
454+
assert.Equal(t,"issue1",payloads[0].Issue.Title)
455+
assert.Equal(t,"content for the first issue",payloads[0].Issue.Body)
456+
assert.EqualValues(t,2,payloads[0].Issue.Milestone.ID)
457+
})
458+
459+
t.Run("remove a milestone",func(t*testing.T) {
460+
// trigger the webhook again
461+
triggeredEvent=""
462+
payloads=make([]api.IssuePayload,0,1)
463+
// change milestone to 0
464+
testIssueChangeMilestone(t,session,repo1.Link(),1,0)
465+
466+
// validate the webhook is triggered
467+
assert.Equal(t,"issues",triggeredEvent)
468+
assert.Len(t,payloads,1)
469+
assert.Equal(t,"demilestoned",string(payloads[0].Action))
470+
assert.Equal(t,"repo1",payloads[0].Issue.Repo.Name)
471+
assert.Equal(t,"user2/repo1",payloads[0].Issue.Repo.FullName)
472+
assert.Equal(t,"issue1",payloads[0].Issue.Title)
473+
assert.Equal(t,"content for the first issue",payloads[0].Issue.Body)
474+
assert.Nil(t,payloads[0].Issue.Milestone)
475+
})
476+
})
477+
}
478+
407479
funcTest_WebhookPullRequest(t*testing.T) {
408480
varpayloads []api.PullRequestPayload
409481
vartriggeredEventstring

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp