@@ -353,6 +353,78 @@ func Test_WebhookIssue(t *testing.T) {
353353	})
354354}
355355
356+ func  Test_WebhookIssueMilestone (t  * testing.T ) {
357+ 	var  payloads  []api.IssuePayload 
358+ 	var  triggeredEvent  string 
359+ 	provider  :=  newMockWebhookProvider (func (r  * http.Request ) {
360+ 		content , _  :=  io .ReadAll (r .Body )
361+ 		var  payload  api.IssuePayload 
362+ 		err  :=  json .Unmarshal (content , & payload )
363+ 		assert .NoError (t , err )
364+ 		payloads  =  append (payloads , payload )
365+ 		triggeredEvent  =  "issues" 
366+ 	}, http .StatusOK )
367+ 	defer  provider .Close ()
368+ 
369+ 	onGiteaRun (t , func (t  * testing.T , giteaURL  * url.URL ) {
370+ 		// create a new webhook with special webhook for repo1 
371+ 		session  :=  loginUser (t , "user2" )
372+ 		repo1  :=  unittest .AssertExistsAndLoadBean (t , & repo.Repository {ID : 1 })
373+ 		testAPICreateWebhookForRepo (t , session , "user2" , "repo1" , provider .URL (), "issue_milestone" )
374+ 
375+ 		t .Run ("assign a milestone" , func (t  * testing.T ) {
376+ 			// trigger the webhook 
377+ 			testIssueChangeMilestone (t , session , repo1 .Link (), 1 , 1 )
378+ 
379+ 			// validate the webhook is triggered 
380+ 			assert .Equal (t , "issues" , triggeredEvent )
381+ 			assert .Len (t , payloads , 1 )
382+ 			assert .Equal (t , "milestoned" , string (payloads [0 ].Action ))
383+ 			assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
384+ 			assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
385+ 			assert .Equal (t , "issue1" , payloads [0 ].Issue .Title )
386+ 			assert .Equal (t , "content for the first issue" , payloads [0 ].Issue .Body )
387+ 			assert .EqualValues (t , 1 , payloads [0 ].Issue .Milestone .ID )
388+ 		})
389+ 
390+ 		t .Run ("change a milestong" , func (t  * testing.T ) {
391+ 			// trigger the webhook again 
392+ 			triggeredEvent  =  "" 
393+ 			payloads  =  make ([]api.IssuePayload , 0 , 1 )
394+ 			// change milestone to 2 
395+ 			testIssueChangeMilestone (t , session , repo1 .Link (), 1 , 2 )
396+ 
397+ 			// validate the webhook is triggered 
398+ 			assert .Equal (t , "issues" , triggeredEvent )
399+ 			assert .Len (t , payloads , 1 )
400+ 			assert .Equal (t , "milestoned" , string (payloads [0 ].Action ))
401+ 			assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
402+ 			assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
403+ 			assert .Equal (t , "issue1" , payloads [0 ].Issue .Title )
404+ 			assert .Equal (t , "content for the first issue" , payloads [0 ].Issue .Body )
405+ 			assert .EqualValues (t , 2 , payloads [0 ].Issue .Milestone .ID )
406+ 		})
407+ 
408+ 		t .Run ("remove a milestone" , func (t  * testing.T ) {
409+ 			// trigger the webhook again 
410+ 			triggeredEvent  =  "" 
411+ 			payloads  =  make ([]api.IssuePayload , 0 , 1 )
412+ 			// change milestone to 0 
413+ 			testIssueChangeMilestone (t , session , repo1 .Link (), 1 , 0 )
414+ 
415+ 			// validate the webhook is triggered 
416+ 			assert .Equal (t , "issues" , triggeredEvent )
417+ 			assert .Len (t , payloads , 1 )
418+ 			assert .Equal (t , "demilestoned" , string (payloads [0 ].Action ))
419+ 			assert .Equal (t , "repo1" , payloads [0 ].Issue .Repo .Name )
420+ 			assert .Equal (t , "user2/repo1" , payloads [0 ].Issue .Repo .FullName )
421+ 			assert .Equal (t , "issue1" , payloads [0 ].Issue .Title )
422+ 			assert .Equal (t , "content for the first issue" , payloads [0 ].Issue .Body )
423+ 			assert .Nil (t , payloads [0 ].Issue .Milestone )
424+ 		})
425+ 	})
426+ }
427+ 
356428func  Test_WebhookPullRequest (t  * testing.T ) {
357429	var  payloads  []api.PullRequestPayload 
358430	var  triggeredEvent  string 
0 commit comments