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