|
|
|
|
@ -9,8 +9,10 @@ import ( |
|
|
|
|
"github.com/stretchr/testify/require" |
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/apimachinery/identity" |
|
|
|
|
"github.com/grafana/grafana/pkg/bus" |
|
|
|
|
"github.com/grafana/grafana/pkg/components/simplejson" |
|
|
|
|
"github.com/grafana/grafana/pkg/infra/db" |
|
|
|
|
"github.com/grafana/grafana/pkg/infra/tracing" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol/actest" |
|
|
|
|
accesscontrolmock "github.com/grafana/grafana/pkg/services/accesscontrol/mock" |
|
|
|
|
@ -19,10 +21,10 @@ import ( |
|
|
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/folder" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/folder/folderimpl" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/folder/foldertest" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/guardian" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/org" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/quota/quotatest" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/supportbundles/supportbundlestest" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/tag/tagimpl" |
|
|
|
|
"github.com/grafana/grafana/pkg/services/user" |
|
|
|
|
"github.com/grafana/grafana/pkg/setting" |
|
|
|
|
@ -860,6 +862,7 @@ func permissionScenario(t *testing.T, desc string, canSave bool, fn permissionSc |
|
|
|
|
|
|
|
|
|
guardianMock := &guardian.FakeDashboardGuardian{ |
|
|
|
|
CanSaveValue: canSave, |
|
|
|
|
CanViewValue: true, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
t.Run(desc, func(t *testing.T) { |
|
|
|
|
@ -873,6 +876,9 @@ func permissionScenario(t *testing.T, desc string, canSave bool, fn permissionSc |
|
|
|
|
folderStore := folderimpl.ProvideDashboardFolderStore(sqlStore) |
|
|
|
|
folderPermissions := accesscontrolmock.NewMockedPermissionsService() |
|
|
|
|
folderPermissions.On("SetPermissions", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return([]accesscontrol.ResourcePermission{}, nil) |
|
|
|
|
tracer := tracing.InitializeTracerForTest() |
|
|
|
|
folderStore2 := folderimpl.ProvideStore(sqlStore) |
|
|
|
|
folderService := folderimpl.ProvideService(folderStore2, actest.FakeAccessControl{ExpectedEvaluate: true}, bus.ProvideBus(tracer), dashboardStore, folderStore, sqlStore, features, supportbundlestest.NewFakeBundleService(), cfg, nil, tracer) |
|
|
|
|
dashboardPermissions := accesscontrolmock.NewMockedPermissionsService() |
|
|
|
|
dashboardService, err := ProvideDashboardServiceImpl( |
|
|
|
|
cfg, dashboardStore, folderStore, |
|
|
|
|
@ -880,7 +886,7 @@ func permissionScenario(t *testing.T, desc string, canSave bool, fn permissionSc |
|
|
|
|
folderPermissions, |
|
|
|
|
dashboardPermissions, |
|
|
|
|
ac, |
|
|
|
|
foldertest.NewFakeService(), |
|
|
|
|
folderService, |
|
|
|
|
folder.NewFakeStore(), |
|
|
|
|
nil, |
|
|
|
|
nil, |
|
|
|
|
@ -942,7 +948,9 @@ func callSaveWithResult(t *testing.T, cmd dashboards.SaveDashboardCommand, sqlSt |
|
|
|
|
folderStore := folderimpl.ProvideDashboardFolderStore(sqlStore) |
|
|
|
|
folderPermissions := accesscontrolmock.NewMockedPermissionsService() |
|
|
|
|
folderPermissions.On("SetPermissions", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return([]accesscontrol.ResourcePermission{}, nil) |
|
|
|
|
|
|
|
|
|
tracer := tracing.InitializeTracerForTest() |
|
|
|
|
folderStore2 := folderimpl.ProvideStore(sqlStore) |
|
|
|
|
folderService := folderimpl.ProvideService(folderStore2, actest.FakeAccessControl{ExpectedEvaluate: true}, bus.ProvideBus(tracer), dashboardStore, folderStore, sqlStore, features, supportbundlestest.NewFakeBundleService(), cfg, nil, tracer) |
|
|
|
|
dashboardPermissions := accesscontrolmock.NewMockedPermissionsService() |
|
|
|
|
dashboardPermissions.On("SetPermissions", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return([]accesscontrol.ResourcePermission{}, nil) |
|
|
|
|
service, err := ProvideDashboardServiceImpl( |
|
|
|
|
@ -951,7 +959,7 @@ func callSaveWithResult(t *testing.T, cmd dashboards.SaveDashboardCommand, sqlSt |
|
|
|
|
folderPermissions, |
|
|
|
|
dashboardPermissions, |
|
|
|
|
actest.FakeAccessControl{}, |
|
|
|
|
foldertest.NewFakeService(), |
|
|
|
|
folderService, |
|
|
|
|
folder.NewFakeStore(), |
|
|
|
|
nil, |
|
|
|
|
nil, |
|
|
|
|
@ -975,13 +983,16 @@ func callSaveWithError(t *testing.T, cmd dashboards.SaveDashboardCommand, sqlSto |
|
|
|
|
dashboardStore, err := database.ProvideDashboardStore(sqlStore, cfg, features, tagimpl.ProvideService(sqlStore)) |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
folderStore := folderimpl.ProvideDashboardFolderStore(sqlStore) |
|
|
|
|
tracer := tracing.InitializeTracerForTest() |
|
|
|
|
folderStore2 := folderimpl.ProvideStore(sqlStore) |
|
|
|
|
folderService := folderimpl.ProvideService(folderStore2, actest.FakeAccessControl{ExpectedEvaluate: true}, bus.ProvideBus(tracer), dashboardStore, folderStore, sqlStore, features, supportbundlestest.NewFakeBundleService(), cfg, nil, tracer) |
|
|
|
|
service, err := ProvideDashboardServiceImpl( |
|
|
|
|
cfg, dashboardStore, folderStore, |
|
|
|
|
featuremgmt.WithFeatures(), |
|
|
|
|
accesscontrolmock.NewMockedPermissionsService(), |
|
|
|
|
accesscontrolmock.NewMockedPermissionsService(), |
|
|
|
|
actest.FakeAccessControl{}, |
|
|
|
|
foldertest.NewFakeService(), |
|
|
|
|
folderService, |
|
|
|
|
folder.NewFakeStore(), |
|
|
|
|
nil, |
|
|
|
|
nil, |
|
|
|
|
@ -1024,13 +1035,16 @@ func saveTestDashboard(t *testing.T, title string, orgID int64, folderUID string |
|
|
|
|
folderStore := folderimpl.ProvideDashboardFolderStore(sqlStore) |
|
|
|
|
dashboardPermissions := accesscontrolmock.NewMockedPermissionsService() |
|
|
|
|
dashboardPermissions.On("SetPermissions", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return([]accesscontrol.ResourcePermission{}, nil) |
|
|
|
|
tracer := tracing.InitializeTracerForTest() |
|
|
|
|
folderStore2 := folderimpl.ProvideStore(sqlStore) |
|
|
|
|
folderService := folderimpl.ProvideService(folderStore2, actest.FakeAccessControl{ExpectedEvaluate: true}, bus.ProvideBus(tracer), dashboardStore, folderStore, sqlStore, features, supportbundlestest.NewFakeBundleService(), cfg, nil, tracer) |
|
|
|
|
service, err := ProvideDashboardServiceImpl( |
|
|
|
|
cfg, dashboardStore, folderStore, |
|
|
|
|
features, |
|
|
|
|
accesscontrolmock.NewMockedPermissionsService(), |
|
|
|
|
dashboardPermissions, |
|
|
|
|
actest.FakeAccessControl{}, |
|
|
|
|
foldertest.NewFakeService(), |
|
|
|
|
folderService, |
|
|
|
|
folder.NewFakeStore(), |
|
|
|
|
nil, |
|
|
|
|
nil, |
|
|
|
|
@ -1079,6 +1093,9 @@ func saveTestFolder(t *testing.T, title string, orgID int64, sqlStore db.DB) *da |
|
|
|
|
require.NoError(t, err) |
|
|
|
|
folderStore := folderimpl.ProvideDashboardFolderStore(sqlStore) |
|
|
|
|
folderPermissions := accesscontrolmock.NewMockedPermissionsService() |
|
|
|
|
tracer := tracing.InitializeTracerForTest() |
|
|
|
|
folderStore2 := folderimpl.ProvideStore(sqlStore) |
|
|
|
|
folderService := folderimpl.ProvideService(folderStore2, actest.FakeAccessControl{ExpectedEvaluate: true}, bus.ProvideBus(tracer), dashboardStore, folderStore, sqlStore, features, supportbundlestest.NewFakeBundleService(), cfg, nil, tracer) |
|
|
|
|
folderPermissions.On("SetPermissions", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return([]accesscontrol.ResourcePermission{}, nil) |
|
|
|
|
service, err := ProvideDashboardServiceImpl( |
|
|
|
|
cfg, dashboardStore, folderStore, |
|
|
|
|
@ -1086,7 +1103,7 @@ func saveTestFolder(t *testing.T, title string, orgID int64, sqlStore db.DB) *da |
|
|
|
|
folderPermissions, |
|
|
|
|
accesscontrolmock.NewMockedPermissionsService(), |
|
|
|
|
actest.FakeAccessControl{}, |
|
|
|
|
foldertest.NewFakeService(), |
|
|
|
|
folderService, |
|
|
|
|
folder.NewFakeStore(), |
|
|
|
|
nil, |
|
|
|
|
nil, |
|
|
|
|
|