2025-04-01 10:38:02 +09:00

130 lines
2.8 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
}
getFolders := func(q *FolderQuery) sqltemplate.SQLTemplate {
v := newGetFolders(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},
}),
},
{
Name: "anonymous_user",
Data: getPermissions(&PermissionsQuery{
OrgID: 1,
Action: "folders:read",
Role: "Viewer",
}),
},
{
Name: "With_action_sets",
Data: getPermissions(&PermissionsQuery{
UserID: 1,
OrgID: 1,
Action: "folders:create",
ActionSets: []string{"folders:edit", "folders:admin"},
Role: "Viewer",
}),
},
},
sqlFolders: {
{
Name: "folder_query",
Data: getFolders(&FolderQuery{
OrgID: 1,
}),
},
},
},
})
}