mirror of
https://github.com/go-gitea/gitea.git
synced 2026-02-22 14:37:31 +01:00
In #32562, I incorrectly assigned mismatched `repo_id` values to the `action_run` and `action_run_job` fixtures used in `TestActionsCollaborativeOwner`. The changes introduced in #36173 will cause the test to fail. This PR removes the incorrect fixtures and switches to using mock workflows to test the relevant functionality.
82 lines
3.1 KiB
Go
82 lines
3.1 KiB
Go
// Copyright 2025 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package integration
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
"testing"
|
|
|
|
auth_model "code.gitea.io/gitea/models/auth"
|
|
repo_model "code.gitea.io/gitea/models/repo"
|
|
"code.gitea.io/gitea/models/unittest"
|
|
user_model "code.gitea.io/gitea/models/user"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestActionsCollaborativeOwner(t *testing.T) {
|
|
onGiteaRun(t, func(t *testing.T, u *url.URL) {
|
|
// user2 is the owner of the private "reusable_workflow" repo
|
|
user2Session := loginUser(t, "user2")
|
|
user2Token := getTokenForLoggedInUser(t, user2Session, auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser)
|
|
apiReusableWorkflowRepo := createActionsTestRepo(t, user2Token, "reusable_workflow", true)
|
|
reusableWorkflowRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: apiReusableWorkflowRepo.ID})
|
|
|
|
// user4 is the owner of the private caller repo
|
|
user4 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
|
|
user4Session := loginUser(t, user4.Name)
|
|
user4Token := getTokenForLoggedInUser(t, user4Session, auth_model.AccessTokenScopeWriteRepository, auth_model.AccessTokenScopeWriteUser)
|
|
apiCallerRepo := createActionsTestRepo(t, user4Token, "caller_workflow", true)
|
|
callerRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: apiCallerRepo.ID})
|
|
|
|
// create a mock runner for caller
|
|
runner := newMockRunner()
|
|
runner.registerAsRepoRunner(t, callerRepo.OwnerName, callerRepo.Name, "mock-runner", []string{"ubuntu-latest"}, false)
|
|
|
|
// init the workflow for caller
|
|
wfTreePath := ".gitea/workflows/test_collaborative_owner.yml"
|
|
wfFileContent := `name: Test Collaborative Owner
|
|
on: push
|
|
jobs:
|
|
job1:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- run: echo 'test collaborative owner'
|
|
`
|
|
opts := getWorkflowCreateFileOptions(user4, callerRepo.DefaultBranch, "create "+wfTreePath, wfFileContent)
|
|
createWorkflowFile(t, user4Token, callerRepo.OwnerName, callerRepo.Name, wfTreePath, opts)
|
|
|
|
// fetch the task and get its token
|
|
task := runner.fetchTask(t)
|
|
taskToken := task.Secrets["GITEA_TOKEN"]
|
|
assert.NotEmpty(t, taskToken)
|
|
|
|
// prepare for clone
|
|
dstPath := t.TempDir()
|
|
u.Path = fmt.Sprintf("%s/%s.git", "user2", "reusable_workflow")
|
|
u.User = url.UserPassword("gitea-actions", taskToken)
|
|
|
|
// the git clone will fail
|
|
doGitCloneFail(u)(t)
|
|
|
|
// add user10 to the list of collaborative owners
|
|
req := NewRequestWithValues(t, "POST", fmt.Sprintf("/%s/%s/settings/actions/general/collaborative_owner/add", reusableWorkflowRepo.OwnerName, reusableWorkflowRepo.Name), map[string]string{
|
|
"collaborative_owner": user4.Name,
|
|
})
|
|
user2Session.MakeRequest(t, req, http.StatusOK)
|
|
|
|
// the git clone will be successful
|
|
doGitClone(dstPath, u)(t)
|
|
|
|
// remove user10 from the list of collaborative owners
|
|
req = NewRequest(t, "POST", fmt.Sprintf("/%s/%s/settings/actions/general/collaborative_owner/delete?id=%d", reusableWorkflowRepo.OwnerName, reusableWorkflowRepo.Name, user4.ID))
|
|
user2Session.MakeRequest(t, req, http.StatusOK)
|
|
|
|
// the git clone will fail
|
|
doGitCloneFail(u)(t)
|
|
})
|
|
}
|