@@ -448,6 +448,78 @@ func Test_WebhookIssue(t *testing.T) {
448448	})
449449}
450450
451+ func  Test_WebhookIssueMilestone (t  * testing.T ) {
452+ 	var  payloads  []api.IssuePayload 
453+ 	var  triggeredEvent  string 
454+ 	provider  :=  newMockWebhookProvider (func (r  * http.Request ) {
455+ 		content , _  :=  io .ReadAll (r .Body )
456+ 		var  payload  api.IssuePayload 
457+ 		err  :=  json .Unmarshal (content , & payload )
458+ 		assert .NoError (t , err )
459+ 		payloads  =  append (payloads , payload )
460+ 		triggeredEvent  =  "issues" 
461+ 	}, http .StatusOK )
462+ 	defer  provider .Close ()
463+ 
464+ 	onGiteaRun (t , func (t  * testing.T , giteaURL  * url.URL ) {
465+ 		// create a new webhook with special webhook for repo1 
466+ 		session  :=  loginUser (t , "user2" )
467+ 		repo1  :=  unittest .AssertExistsAndLoadBean (t , & repo.Repository {ID : 1 })
468+ 		testAPICreateWebhookForRepo (t , session , "user2" , "repo1" , provider .URL (), "issue_milestone" )
469+ 
470+ 		t .Run ("assign a milestone" , func (t  * testing.T ) {
471+ 			// trigger the webhook 
472+ 			testIssueChangeMilestone (t , session , repo1 .Link (), 1 , 1 )
473+ 
474+ 			// validate the webhook is triggered 
475+ 			assert .Equal (t , "issues" , triggeredEvent )
476+ 			assert .Len (t , payloads , 1 )
477+ 			assert .Equal (t , "milestoned" , string (payloads [0 ].Action ))
478+ 			assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
479+ 			assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
480+ 			assert .Equal (t , "issue1" , payloads [0 ].Issue .Title )
481+ 			assert .Equal (t , "content for the first issue" , payloads [0 ].Issue .Body )
482+ 			assert .EqualValues (t , 1 , payloads [0 ].Issue .Milestone .ID )
483+ 		})
484+ 
485+ 		t .Run ("change a milestong" , func (t  * testing.T ) {
486+ 			// trigger the webhook again 
487+ 			triggeredEvent  =  "" 
488+ 			payloads  =  make ([]api.IssuePayload , 0 , 1 )
489+ 			// change milestone to 2 
490+ 			testIssueChangeMilestone (t , session , repo1 .Link (), 1 , 2 )
491+ 
492+ 			// validate the webhook is triggered 
493+ 			assert .Equal (t , "issues" , triggeredEvent )
494+ 			assert .Len (t , payloads , 1 )
495+ 			assert .Equal (t , "milestoned" , string (payloads [0 ].Action ))
496+ 			assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
497+ 			assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
498+ 			assert .Equal (t , "issue1" , payloads [0 ].Issue .Title )
499+ 			assert .Equal (t , "content for the first issue" , payloads [0 ].Issue .Body )
500+ 			assert .EqualValues (t , 2 , payloads [0 ].Issue .Milestone .ID )
501+ 		})
502+ 
503+ 		t .Run ("remove a milestone" , func (t  * testing.T ) {
504+ 			// trigger the webhook again 
505+ 			triggeredEvent  =  "" 
506+ 			payloads  =  make ([]api.IssuePayload , 0 , 1 )
507+ 			// change milestone to 0 
508+ 			testIssueChangeMilestone (t , session , repo1 .Link (), 1 , 0 )
509+ 
510+ 			// validate the webhook is triggered 
511+ 			assert .Equal (t , "issues" , triggeredEvent )
512+ 			assert .Len (t , payloads , 1 )
513+ 			assert .Equal (t , "demilestoned" , string (payloads [0 ].Action ))
514+ 			assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
515+ 			assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
516+ 			assert .Equal (t , "issue1" , payloads [0 ].Issue .Title )
517+ 			assert .Equal (t , "content for the first issue" , payloads [0 ].Issue .Body )
518+ 			assert .Nil (t , payloads [0 ].Issue .Milestone )
519+ 		})
520+ 	})
521+ }
522+ 
451523func  Test_WebhookPullRequest (t  * testing.T ) {
452524	var  payloads  []api.PullRequestPayload 
453525	var  triggeredEvent  string 
0 commit comments