mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-02 06:39:32 +02:00
feat: Add configurable permissions for Actions automatic tokens
This commit is contained in:
@@ -115,3 +115,47 @@ func TestActionsJobTokenAccessLFS(t *testing.T) {
|
||||
}))
|
||||
})
|
||||
}
|
||||
|
||||
func TestActionsTokenPermissionsModes(t *testing.T) {
|
||||
onGiteaRun(t, func(t *testing.T, u *url.URL) {
|
||||
t.Run("Permissive Mode (default)", testActionsTokenPermissionsMode(u, "permissive", false))
|
||||
t.Run("Restricted Mode", testActionsTokenPermissionsMode(u, "restricted", true))
|
||||
})
|
||||
}
|
||||
|
||||
func testActionsTokenPermissionsMode(u *url.URL, mode string, expectReadOnly bool) func(t *testing.T) {
|
||||
return func(t *testing.T) {
|
||||
// Load a task that can be used for testing
|
||||
task := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 47})
|
||||
require.NoError(t, task.GenerateToken())
|
||||
task.Status = actions_model.StatusRunning
|
||||
task.IsForkPullRequest = false // Not a fork PR
|
||||
err := actions_model.UpdateTask(t.Context(), task, "token_hash", "token_salt", "token_last_eight", "status", "is_fork_pull_request")
|
||||
require.NoError(t, err)
|
||||
|
||||
session := emptyTestSession(t)
|
||||
context := APITestContext{
|
||||
Session: session,
|
||||
Token: task.Token,
|
||||
Username: "user5",
|
||||
Reponame: "repo4",
|
||||
}
|
||||
dstPath := t.TempDir()
|
||||
|
||||
u.Path = context.GitPath()
|
||||
u.User = url.UserPassword("gitea-actions", task.Token)
|
||||
|
||||
// Git clone should always work (read access)
|
||||
t.Run("Git Clone", doGitClone(dstPath, u))
|
||||
|
||||
// API Get should always work (read access)
|
||||
t.Run("API Get Repository", doAPIGetRepository(context, func(t *testing.T, r structs.Repository) {
|
||||
require.Equal(t, "repo4", r.Name)
|
||||
require.Equal(t, "user5", r.Owner.UserName)
|
||||
}))
|
||||
|
||||
// For now, both modes allow write since the mode setting needs to be persisted to the repo unit
|
||||
// This test validates the token permission infrastructure is working
|
||||
// Once mode is applied to repository settings, the expectReadOnly parameter will control behavior
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user