mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-09-30 19:22:08 +00:00
79 lines
2.7 KiB
Go
79 lines
2.7 KiB
Go
|
package access_test
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
actions_model "forgejo.org/models/actions"
|
||
|
"forgejo.org/models/db"
|
||
|
perm_model "forgejo.org/models/perm"
|
||
|
"forgejo.org/models/perm/access"
|
||
|
repo_model "forgejo.org/models/repo"
|
||
|
"forgejo.org/models/unittest"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func assertAccess(t *testing.T, expectedMode perm_model.AccessMode, perm *access.Permission) {
|
||
|
assert.Equal(t, expectedMode, perm.AccessMode)
|
||
|
|
||
|
for _, unit := range perm.Units {
|
||
|
assert.Equal(t, expectedMode, perm.UnitAccessMode(unit.Type))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestActionTaskCanAccessOwnRepo(t *testing.T) {
|
||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||
|
|
||
|
actionTask := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 47})
|
||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: actionTask.RepoID})
|
||
|
|
||
|
perm, err := access.GetActionRepoPermission(db.DefaultContext, repo, actionTask)
|
||
|
require.NoError(t, err)
|
||
|
assertAccess(t, perm_model.AccessModeWrite, &perm)
|
||
|
}
|
||
|
|
||
|
func TestActionTaskCanAccessPublicRepo(t *testing.T) {
|
||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||
|
|
||
|
actionTask := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 47})
|
||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1})
|
||
|
|
||
|
perm, err := access.GetActionRepoPermission(db.DefaultContext, repo, actionTask)
|
||
|
require.NoError(t, err)
|
||
|
assertAccess(t, perm_model.AccessModeRead, &perm)
|
||
|
}
|
||
|
|
||
|
func TestActionTaskCanAccessPublicRepoOfLimitedOrg(t *testing.T) {
|
||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||
|
|
||
|
actionTask := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 47})
|
||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 38})
|
||
|
|
||
|
perm, err := access.GetActionRepoPermission(db.DefaultContext, repo, actionTask)
|
||
|
require.NoError(t, err)
|
||
|
assertAccess(t, perm_model.AccessModeRead, &perm)
|
||
|
}
|
||
|
|
||
|
func TestActionTaskNoAccessPublicRepoOfPrivateOrg(t *testing.T) {
|
||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||
|
|
||
|
actionTask := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 47})
|
||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 40})
|
||
|
|
||
|
perm, err := access.GetActionRepoPermission(db.DefaultContext, repo, actionTask)
|
||
|
require.NoError(t, err)
|
||
|
assertAccess(t, perm_model.AccessModeNone, &perm)
|
||
|
}
|
||
|
|
||
|
func TestActionTaskNoAccessPrivateRepo(t *testing.T) {
|
||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||
|
|
||
|
actionTask := unittest.AssertExistsAndLoadBean(t, &actions_model.ActionTask{ID: 47})
|
||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
|
||
|
|
||
|
perm, err := access.GetActionRepoPermission(db.DefaultContext, repo, actionTask)
|
||
|
require.NoError(t, err)
|
||
|
assertAccess(t, perm_model.AccessModeNone, &perm)
|
||
|
}
|