Files
grafana/pkg/services/authz/rbac/store/sql_test.go
T
Ieva ded90fa28d App platform: Implement perm check with direct db access (#97579)
* implement perm check with direct db access

* add tests

* more tests

* Update pkg/services/authz/rbac/service.go

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

* Update pkg/services/authz/rbac/service.go

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>

* allow fetching permissions for a user who is not a member of the org

* linting

* fix typo

---------

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2024-12-12 08:52:14 +00:00

98 lines
2.1 KiB
Go

package store
import (
"testing"
"text/template"
"github.com/grafana/grafana/pkg/storage/legacysql"
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate"
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks"
)
func TestIdentityQueries(t *testing.T) {
// prefix tables with grafana
nodb := &legacysql.LegacyDatabaseHelper{
Table: func(n string) string {
return "grafana." + n
},
}
getIdentifiers := func(q *UserIdentifierQuery) sqltemplate.SQLTemplate {
v := newGetUserIdentifiers(nodb, q)
v.SQLTemplate = mocks.NewTestingSQLTemplate()
return &v
}
getBasicRoles := func(q *BasicRoleQuery) sqltemplate.SQLTemplate {
v := newGetBasicRoles(nodb, q)
v.SQLTemplate = mocks.NewTestingSQLTemplate()
return &v
}
getPermissions := func(q *PermissionsQuery) sqltemplate.SQLTemplate {
v := newGetPermissions(nodb, q)
v.SQLTemplate = mocks.NewTestingSQLTemplate()
return &v
}
mocks.CheckQuerySnapshots(t, mocks.TemplateTestSetup{
RootDir: "testdata",
Templates: map[*template.Template][]mocks.TemplateTestCase{
sqlUserIdentifiers: {
{
Name: "id_specified",
Data: getIdentifiers(&UserIdentifierQuery{
UserID: 1,
}),
},
{
Name: "uid_specified",
Data: getIdentifiers(&UserIdentifierQuery{
UserUID: "some_uid",
}),
},
},
sqlQueryBasicRoles: {
{
Name: "basic_roles",
Data: getBasicRoles(&BasicRoleQuery{
UserID: 1,
OrgID: 1,
}),
},
},
sqlUserPerms: {
{
Name: "viewer_user",
Data: getPermissions(&PermissionsQuery{
UserID: 1,
OrgID: 1,
Action: "folders:read",
Role: "Viewer",
}),
},
{
Name: "admin_user",
Data: getPermissions(&PermissionsQuery{
UserID: 1,
OrgID: 1,
Action: "folders:read",
Role: "Admin",
IsServerAdmin: true,
}),
},
{
Name: "user_with_teams",
Data: getPermissions(&PermissionsQuery{
UserID: 1,
OrgID: 1,
Action: "folders:read",
Role: "None",
TeamIDs: []int64{1, 2},
}),
},
},
},
})
}