mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	Add a webhook push test for dev branch (#34421)
This commit is contained in:
		@@ -56,8 +56,12 @@ func TestNewWebHookLink(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func testAPICreateWebhookForRepo(t *testing.T, session *TestSession, userName, repoName, url, event string) {
 | 
			
		||||
func testAPICreateWebhookForRepo(t *testing.T, session *TestSession, userName, repoName, url, event string, branchFilter ...string) {
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeAll)
 | 
			
		||||
	var branchFilterString string
 | 
			
		||||
	if len(branchFilter) > 0 {
 | 
			
		||||
		branchFilterString = branchFilter[0]
 | 
			
		||||
	}
 | 
			
		||||
	req := NewRequestWithJSON(t, "POST", "/api/v1/repos/"+userName+"/"+repoName+"/hooks", api.CreateHookOption{
 | 
			
		||||
		Type: "gitea",
 | 
			
		||||
		Config: api.CreateHookOptionConfig{
 | 
			
		||||
@@ -66,6 +70,7 @@ func testAPICreateWebhookForRepo(t *testing.T, session *TestSession, userName, r
 | 
			
		||||
		},
 | 
			
		||||
		Events:       []string{event},
 | 
			
		||||
		Active:       true,
 | 
			
		||||
		BranchFilter: branchFilterString,
 | 
			
		||||
	}).AddTokenAuth(token)
 | 
			
		||||
	MakeRequest(t, req, http.StatusCreated)
 | 
			
		||||
}
 | 
			
		||||
@@ -371,6 +376,45 @@ func Test_WebhookPush(t *testing.T) {
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Test_WebhookPushDevBranch(t *testing.T) {
 | 
			
		||||
	var payloads []api.PushPayload
 | 
			
		||||
	var triggeredEvent string
 | 
			
		||||
	provider := newMockWebhookProvider(func(r *http.Request) {
 | 
			
		||||
		content, _ := io.ReadAll(r.Body)
 | 
			
		||||
		var payload api.PushPayload
 | 
			
		||||
		err := json.Unmarshal(content, &payload)
 | 
			
		||||
		assert.NoError(t, err)
 | 
			
		||||
		payloads = append(payloads, payload)
 | 
			
		||||
		triggeredEvent = "push"
 | 
			
		||||
	}, http.StatusOK)
 | 
			
		||||
	defer provider.Close()
 | 
			
		||||
 | 
			
		||||
	onGiteaRun(t, func(t *testing.T, giteaURL *url.URL) {
 | 
			
		||||
		// 1. create a new webhook with special webhook for repo1
 | 
			
		||||
		session := loginUser(t, "user2")
 | 
			
		||||
 | 
			
		||||
		// only for dev branch
 | 
			
		||||
		testAPICreateWebhookForRepo(t, session, "user2", "repo1", provider.URL(), "push", "develop")
 | 
			
		||||
 | 
			
		||||
		// 2. this should not trigger the webhook
 | 
			
		||||
		testCreateFile(t, session, "user2", "repo1", "master", "test_webhook_push.md", "# a test file for webhook push")
 | 
			
		||||
		assert.Empty(t, triggeredEvent)
 | 
			
		||||
		assert.Empty(t, payloads)
 | 
			
		||||
 | 
			
		||||
		// 3. trigger the webhook
 | 
			
		||||
		testCreateFile(t, session, "user2", "repo1", "develop", "test_webhook_push.md", "# a test file for webhook push")
 | 
			
		||||
 | 
			
		||||
		// 4. validate the webhook is triggered
 | 
			
		||||
		assert.Equal(t, "push", triggeredEvent)
 | 
			
		||||
		assert.Len(t, payloads, 1)
 | 
			
		||||
		assert.Equal(t, "repo1", payloads[0].Repo.Name)
 | 
			
		||||
		assert.Equal(t, "develop", payloads[0].Branch())
 | 
			
		||||
		assert.Equal(t, "user2/repo1", payloads[0].Repo.FullName)
 | 
			
		||||
		assert.Len(t, payloads[0].Commits, 1)
 | 
			
		||||
		assert.Equal(t, []string{"test_webhook_push.md"}, payloads[0].Commits[0].Added)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Test_WebhookIssue(t *testing.T) {
 | 
			
		||||
	var payloads []api.IssuePayload
 | 
			
		||||
	var triggeredEvent string
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user