mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Fix #25088 This PR adds the support for [`pull_request_target`](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target) workflow trigger. `pull_request_target` is similar to `pull_request`, but the workflow triggered by the `pull_request_target` event runs in the context of the base branch of the pull request rather than the head branch. Since the workflow from the base is considered trusted, it can access the secrets and doesn't need approvals to run.
		
			
				
	
	
		
			114 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2023 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package actions
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	webhook_module "code.gitea.io/gitea/modules/webhook"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestCanGithubEventMatch(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc           string
 | |
| 		eventName      string
 | |
| 		triggeredEvent webhook_module.HookEventType
 | |
| 		expected       bool
 | |
| 	}{
 | |
| 		// registry_package event
 | |
| 		{
 | |
| 			"registry_package matches",
 | |
| 			GithubEventRegistryPackage,
 | |
| 			webhook_module.HookEventPackage,
 | |
| 			true,
 | |
| 		},
 | |
| 		{
 | |
| 			"registry_package cannot match",
 | |
| 			GithubEventRegistryPackage,
 | |
| 			webhook_module.HookEventPush,
 | |
| 			false,
 | |
| 		},
 | |
| 		// issues event
 | |
| 		{
 | |
| 			"issue matches",
 | |
| 			GithubEventIssues,
 | |
| 			webhook_module.HookEventIssueLabel,
 | |
| 			true,
 | |
| 		},
 | |
| 		{
 | |
| 			"issue cannot match",
 | |
| 			GithubEventIssues,
 | |
| 			webhook_module.HookEventIssueComment,
 | |
| 			false,
 | |
| 		},
 | |
| 		// issue_comment event
 | |
| 		{
 | |
| 			"issue_comment matches",
 | |
| 			GithubEventIssueComment,
 | |
| 			webhook_module.HookEventIssueComment,
 | |
| 			true,
 | |
| 		},
 | |
| 		{
 | |
| 			"issue_comment cannot match",
 | |
| 			GithubEventIssueComment,
 | |
| 			webhook_module.HookEventIssues,
 | |
| 			false,
 | |
| 		},
 | |
| 		// pull_request event
 | |
| 		{
 | |
| 			"pull_request matches",
 | |
| 			GithubEventPullRequest,
 | |
| 			webhook_module.HookEventPullRequestSync,
 | |
| 			true,
 | |
| 		},
 | |
| 		{
 | |
| 			"pull_request cannot match",
 | |
| 			GithubEventPullRequest,
 | |
| 			webhook_module.HookEventPullRequestComment,
 | |
| 			false,
 | |
| 		},
 | |
| 		// pull_request_target event
 | |
| 		{
 | |
| 			"pull_request_target matches",
 | |
| 			GithubEventPullRequest,
 | |
| 			webhook_module.HookEventPullRequest,
 | |
| 			true,
 | |
| 		},
 | |
| 		{
 | |
| 			"pull_request_target cannot match",
 | |
| 			GithubEventPullRequest,
 | |
| 			webhook_module.HookEventPullRequestComment,
 | |
| 			false,
 | |
| 		},
 | |
| 		// pull_request_review event
 | |
| 		{
 | |
| 			"pull_request_review matches",
 | |
| 			GithubEventPullRequestReview,
 | |
| 			webhook_module.HookEventPullRequestReviewComment,
 | |
| 			true,
 | |
| 		},
 | |
| 		{
 | |
| 			"pull_request_review cannot match",
 | |
| 			GithubEventPullRequestReview,
 | |
| 			webhook_module.HookEventPullRequestComment,
 | |
| 			false,
 | |
| 		},
 | |
| 		// other events
 | |
| 		{
 | |
| 			"create event",
 | |
| 			GithubEventCreate,
 | |
| 			webhook_module.HookEventCreate,
 | |
| 			true,
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, tc := range testCases {
 | |
| 		t.Run(tc.desc, func(t *testing.T) {
 | |
| 			assert.Equalf(t, tc.expected, canGithubEventMatch(tc.eventName, tc.triggeredEvent), "canGithubEventMatch(%v, %v)", tc.eventName, tc.triggeredEvent)
 | |
| 		})
 | |
| 	}
 | |
| }
 |