Skip to content

Commit 87d86e8

Browse files
Zanzana: Evaluate permissions alongside with RBAC engine (grafana#90064)
* Zanzana: Evaluate permissions if feature flag enabled * Fix tests * adjust logs * fix spelling * remove unused * only evaluate implemented resources * refactor
1 parent 48e6e9a commit 87d86e8

File tree

44 files changed

+295
-98
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+295
-98
lines changed

pkg/api/annotations_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
1616
"github.com/grafana/grafana/pkg/services/annotations"
1717
"github.com/grafana/grafana/pkg/services/annotations/annotationstest"
18+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
1819
"github.com/grafana/grafana/pkg/services/dashboards"
1920
"github.com/grafana/grafana/pkg/services/featuremgmt"
2021
"github.com/grafana/grafana/pkg/services/folder"
@@ -401,7 +402,7 @@ func TestAPI_Annotations(t *testing.T) {
401402
folderDB.On("GetFolderByID", mock.Anything, mock.Anything, mock.Anything).Return(&folder.Folder{UID: folderUID, ID: 1}, nil)
402403
hs.DashboardService = dashService
403404
hs.folderService = folderService
404-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
405+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
405406
hs.AccessControl.RegisterScopeAttributeResolver(AnnotationTypeScopeResolver(hs.annotationsRepo, hs.Features, dashService, folderService))
406407
hs.AccessControl.RegisterScopeAttributeResolver(dashboards.NewDashboardIDScopeResolver(folderDB, dashService, folderService))
407408
})

pkg/api/common_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/grafana/grafana/pkg/services/auth/authtest"
2727
"github.com/grafana/grafana/pkg/services/authn"
2828
"github.com/grafana/grafana/pkg/services/authn/authntest"
29+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
2930
"github.com/grafana/grafana/pkg/services/contexthandler"
3031
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
3132
dashver "github.com/grafana/grafana/pkg/services/dashboardversion"
@@ -269,7 +270,7 @@ func setupSimpleHTTPServer(features featuremgmt.FeatureToggles) *HTTPServer {
269270
Cfg: cfg,
270271
Features: features,
271272
License: &licensing.OSSLicensingService{},
272-
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures()),
273+
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()),
273274
annotationsRepo: annotationstest.NewFakeAnnotationsRepo(),
274275
authInfoService: &authinfotest.FakeService{
275276
ExpectedLabels: map[int64]string{int64(1): login.GetAuthProviderLabel(login.LDAPAuthModule)},
@@ -312,7 +313,7 @@ func SetupAPITestServer(t *testing.T, opts ...APITestServerOption) *webtest.Serv
312313
}
313314

314315
if hs.AccessControl == nil {
315-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
316+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
316317
}
317318

318319
hs.registerRoutes()

pkg/api/dashboard_snapshot_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/grafana/grafana/pkg/infra/db/dbtest"
1818
"github.com/grafana/grafana/pkg/services/accesscontrol"
1919
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
20+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
2021
"github.com/grafana/grafana/pkg/services/dashboards"
2122
"github.com/grafana/grafana/pkg/services/dashboardsnapshots"
2223
"github.com/grafana/grafana/pkg/services/featuremgmt"
@@ -39,7 +40,7 @@ func TestHTTPServer_DeleteDashboardSnapshot(t *testing.T) {
3940

4041
hs.DashboardService = svc
4142

42-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
43+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
4344
guardian.InitAccessControlGuardian(hs.Cfg, hs.AccessControl, hs.DashboardService)
4445
})
4546
}

pkg/api/dashboard_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/grafana/grafana/pkg/services/accesscontrol/actest"
3131
accesscontrolmock "github.com/grafana/grafana/pkg/services/accesscontrol/mock"
3232
"github.com/grafana/grafana/pkg/services/annotations/annotationstest"
33+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
3334
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
3435
"github.com/grafana/grafana/pkg/services/dashboards"
3536
"github.com/grafana/grafana/pkg/services/dashboards/database"
@@ -130,7 +131,7 @@ func newTestLive(t *testing.T, store db.DB) *live.GrafanaLive {
130131
nil,
131132
&usagestats.UsageStatsMock{T: t},
132133
nil,
133-
features, acimpl.ProvideAccessControl(features), &dashboards.FakeDashboardService{}, annotationstest.NewFakeAnnotationsRepo(), nil)
134+
features, acimpl.ProvideAccessControl(features, zanzana.NewNoopClient()), &dashboards.FakeDashboardService{}, annotationstest.NewFakeAnnotationsRepo(), nil)
134135
require.NoError(t, err)
135136
return gLive
136137
}
@@ -147,7 +148,7 @@ func TestHTTPServer_GetDashboard_AccessControl(t *testing.T) {
147148
hs.DashboardService = dashSvc
148149

149150
hs.Cfg = setting.NewCfg()
150-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
151+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
151152
hs.starService = startest.NewStarServiceFake()
152153
hs.dashboardProvisioningService = mockDashboardProvisioningService{}
153154

@@ -266,7 +267,7 @@ func TestHTTPServer_DeleteDashboardByUID_AccessControl(t *testing.T) {
266267
hs.DashboardService = dashSvc
267268

268269
hs.Cfg = setting.NewCfg()
269-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
270+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
270271
hs.starService = startest.NewStarServiceFake()
271272

272273
hs.LibraryPanelService = &mockLibraryPanelService{}
@@ -322,7 +323,7 @@ func TestHTTPServer_GetDashboardVersions_AccessControl(t *testing.T) {
322323
hs.DashboardService = dashSvc
323324

324325
hs.Cfg = setting.NewCfg()
325-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
326+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
326327
hs.starService = startest.NewStarServiceFake()
327328

328329
hs.dashboardVersionService = &dashvertest.FakeDashboardVersionService{

pkg/api/datasources_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
2020
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
2121
"github.com/grafana/grafana/pkg/services/accesscontrol/actest"
22+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
2223
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
2324
"github.com/grafana/grafana/pkg/services/datasources"
2425
"github.com/grafana/grafana/pkg/services/datasources/guardian"
@@ -115,7 +116,7 @@ func TestAddDataSource_URLWithoutProtocol(t *testing.T) {
115116
expectedDatasource: &datasources.DataSource{},
116117
},
117118
Cfg: setting.NewCfg(),
118-
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures()),
119+
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()),
119120
accesscontrolService: actest.FakeService{},
120121
}
121122

@@ -332,7 +333,7 @@ func TestUpdateDataSource_URLWithoutProtocol(t *testing.T) {
332333
expectedDatasource: &datasources.DataSource{},
333334
},
334335
Cfg: setting.NewCfg(),
335-
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures()),
336+
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()),
336337
accesscontrolService: actest.FakeService{},
337338
}
338339

@@ -365,7 +366,7 @@ func TestUpdateDataSourceByID_DataSourceNameExists(t *testing.T) {
365366
},
366367
},
367368
Cfg: setting.NewCfg(),
368-
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures()),
369+
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()),
369370
accesscontrolService: actest.FakeService{},
370371
Live: newTestLive(t, nil),
371372
}

pkg/api/folder_bench_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ func setupServer(b testing.TB, sc benchScenario, features featuremgmt.FeatureTog
456456

457457
folderStore := folderimpl.ProvideDashboardFolderStore(sc.db)
458458

459-
ac := acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
459+
ac := acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
460460
folderServiceWithFlagOn := folderimpl.ProvideService(ac, bus.ProvideBus(tracing.InitializeTracerForTest()), dashStore, folderStore, sc.db, features, supportbundlestest.NewFakeBundleService(), nil)
461461

462462
cfg := setting.NewCfg()
@@ -494,7 +494,7 @@ func setupServer(b testing.TB, sc benchScenario, features featuremgmt.FeatureTog
494494
DashboardService: dashboardSvc,
495495
}
496496

497-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
497+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
498498
guardian.InitAccessControlGuardian(hs.Cfg, hs.AccessControl, hs.DashboardService)
499499

500500
m.Get("/api/folders", hs.GetFolders)

pkg/api/pluginproxy/ds_proxy_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
3333
"github.com/grafana/grafana/pkg/services/accesscontrol/actest"
3434
"github.com/grafana/grafana/pkg/services/authn"
35+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
3536
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
3637
"github.com/grafana/grafana/pkg/services/datasources"
3738
datasourceservice "github.com/grafana/grafana/pkg/services/datasources/service"
@@ -844,7 +845,7 @@ func getDatasourceProxiedRequest(t *testing.T, ctx *contextmodel.ReqContext, cfg
844845
secretsStore := secretskvs.NewSQLSecretsKVStore(sqlStore, secretsService, log.New("test.logger"))
845846
features := featuremgmt.WithFeatures()
846847
quotaService := quotatest.New(false, nil)
847-
dsService, err := datasourceservice.ProvideService(nil, secretsService, secretsStore, cfg, features, acimpl.ProvideAccessControl(features),
848+
dsService, err := datasourceservice.ProvideService(nil, secretsService, secretsStore, cfg, features, acimpl.ProvideAccessControl(features, zanzana.NewNoopClient()),
848849
&actest.FakePermissionsService{}, quotaService, &pluginstore.FakePluginStore{}, &pluginfakes.FakePluginClient{},
849850
plugincontext.ProvideBaseService(cfg, pluginconfig.NewFakePluginRequestConfigProvider()))
850851
require.NoError(t, err)
@@ -966,7 +967,7 @@ func runDatasourceAuthTest(t *testing.T, secretsService secrets.Service, secrets
966967
var routes []*plugins.Route
967968
features := featuremgmt.WithFeatures()
968969
quotaService := quotatest.New(false, nil)
969-
dsService, err := datasourceservice.ProvideService(nil, secretsService, secretsStore, cfg, features, acimpl.ProvideAccessControl(features),
970+
dsService, err := datasourceservice.ProvideService(nil, secretsService, secretsStore, cfg, features, acimpl.ProvideAccessControl(features, zanzana.NewNoopClient()),
970971
&actest.FakePermissionsService{}, quotaService, &pluginstore.FakePluginStore{}, &pluginfakes.FakePluginClient{},
971972
plugincontext.ProvideBaseService(cfg, pluginconfig.NewFakePluginRequestConfigProvider()))
972973
require.NoError(t, err)
@@ -1022,7 +1023,7 @@ func setupDSProxyTest(t *testing.T, ctx *contextmodel.ReqContext, ds *datasource
10221023
secretsService := secretsmng.SetupTestService(t, fakes.NewFakeSecretsStore())
10231024
secretsStore := secretskvs.NewSQLSecretsKVStore(dbtest.NewFakeDB(), secretsService, log.NewNopLogger())
10241025
features := featuremgmt.WithFeatures()
1025-
dsService, err := datasourceservice.ProvideService(nil, secretsService, secretsStore, cfg, features, acimpl.ProvideAccessControl(features),
1026+
dsService, err := datasourceservice.ProvideService(nil, secretsService, secretsStore, cfg, features, acimpl.ProvideAccessControl(features, zanzana.NewNoopClient()),
10261027
&actest.FakePermissionsService{}, quotatest.New(false, nil), &pluginstore.FakePluginStore{}, &pluginfakes.FakePluginClient{},
10271028
plugincontext.ProvideBaseService(cfg, pluginconfig.NewFakePluginRequestConfigProvider()))
10281029
require.NoError(t, err)

pkg/api/pluginproxy/pluginproxy_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/grafana/grafana/pkg/plugins"
1717
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
1818
"github.com/grafana/grafana/pkg/services/authn"
19+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
1920
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
2021
"github.com/grafana/grafana/pkg/services/featuremgmt"
2122
"github.com/grafana/grafana/pkg/services/org"
@@ -265,7 +266,7 @@ func TestPluginProxy(t *testing.T) {
265266
SecureJSONData: map[string][]byte{},
266267
}
267268
cfg := &setting.Cfg{}
268-
proxy, err := NewPluginProxy(ps, routes, ctx, "", cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures()), featuremgmt.WithFeatures())
269+
proxy, err := NewPluginProxy(ps, routes, ctx, "", cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()), featuremgmt.WithFeatures())
269270
require.NoError(t, err)
270271
proxy.HandleRequest()
271272

@@ -421,7 +422,7 @@ func TestPluginProxyRoutes(t *testing.T) {
421422
SecureJSONData: map[string][]byte{},
422423
}
423424
cfg := &setting.Cfg{}
424-
proxy, err := NewPluginProxy(ps, testRoutes, ctx, tc.proxyPath, cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures()), featuremgmt.WithFeatures(tc.withFeatures...))
425+
proxy, err := NewPluginProxy(ps, testRoutes, ctx, tc.proxyPath, cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()), featuremgmt.WithFeatures(tc.withFeatures...))
425426
require.NoError(t, err)
426427
proxy.HandleRequest()
427428

@@ -536,7 +537,7 @@ func TestPluginProxyRoutesAccessControl(t *testing.T) {
536537
SecureJSONData: map[string][]byte{},
537538
}
538539
cfg := &setting.Cfg{}
539-
proxy, err := NewPluginProxy(ps, testRoutes, ctx, tc.proxyPath, cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures()), featuremgmt.WithFeatures(featuremgmt.FlagAccessControlOnCall))
540+
proxy, err := NewPluginProxy(ps, testRoutes, ctx, tc.proxyPath, cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()), featuremgmt.WithFeatures(featuremgmt.FlagAccessControlOnCall))
540541
require.NoError(t, err)
541542
proxy.HandleRequest()
542543

@@ -567,7 +568,7 @@ func getPluginProxiedRequest(t *testing.T, ps *pluginsettings.DTO, secretsServic
567568
ReqRole: org.RoleEditor,
568569
}
569570
}
570-
proxy, err := NewPluginProxy(ps, []*plugins.Route{}, ctx, "", cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures()), featuremgmt.WithFeatures())
571+
proxy, err := NewPluginProxy(ps, []*plugins.Route{}, ctx, "", cfg, secretsService, tracing.InitializeTracerForTest(), &http.Transport{}, acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()), featuremgmt.WithFeatures())
571572
require.NoError(t, err)
572573

573574
req, err := http.NewRequest(http.MethodGet, "/api/plugin-proxy/grafana-simple-app/api/v4/alerts", nil)

pkg/api/plugins_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"github.com/grafana/grafana/pkg/services/accesscontrol/actest"
3535
"github.com/grafana/grafana/pkg/services/authn"
3636
"github.com/grafana/grafana/pkg/services/authn/authntest"
37+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
3738
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
3839
"github.com/grafana/grafana/pkg/services/featuremgmt"
3940
"github.com/grafana/grafana/pkg/services/org"
@@ -746,7 +747,7 @@ func TestHTTPServer_hasPluginRequestedPermissions(t *testing.T) {
746747
}
747748
hs.log = logger
748749
hs.accesscontrolService = actest.FakeService{}
749-
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
750+
hs.AccessControl = acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
750751

751752
expectedIdentity := &authn.Identity{
752753
OrgID: tt.orgID,

pkg/api/user_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
2929
acmock "github.com/grafana/grafana/pkg/services/accesscontrol/mock"
3030
"github.com/grafana/grafana/pkg/services/auth/idtest"
31+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
3132
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
3233
"github.com/grafana/grafana/pkg/services/featuremgmt"
3334
"github.com/grafana/grafana/pkg/services/login"
@@ -60,7 +61,7 @@ func TestUserAPIEndpoint_userLoggedIn(t *testing.T) {
6061
hs := &HTTPServer{
6162
Cfg: settings,
6263
SQLStore: sqlStore,
63-
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures()),
64+
AccessControl: acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()),
6465
}
6566

6667
mockResult := user.SearchUserQueryResult{

pkg/infra/usagestats/service/usage_stats_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/grafana/grafana/pkg/infra/tracing"
2424
"github.com/grafana/grafana/pkg/infra/usagestats"
2525
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
26+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
2627
"github.com/grafana/grafana/pkg/services/featuremgmt"
2728
"github.com/grafana/grafana/pkg/services/supportbundles/supportbundlestest"
2829
"github.com/grafana/grafana/pkg/setting"
@@ -247,7 +248,7 @@ func createService(t *testing.T, sqlStore db.DB, withDB bool) *UsageStats {
247248
kvstore.ProvideService(sqlStore),
248249
routing.NewRouteRegister(),
249250
tracing.InitializeTracerForTest(),
250-
acimpl.ProvideAccessControl(featuremgmt.WithFeatures()),
251+
acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient()),
251252
supportbundlestest.NewFakeBundleService(),
252253
)
253254

pkg/login/social/socialimpl/service_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/grafana/grafana/pkg/login/social"
1414
"github.com/grafana/grafana/pkg/login/social/connectors"
1515
"github.com/grafana/grafana/pkg/services/accesscontrol/acimpl"
16+
"github.com/grafana/grafana/pkg/services/authz/zanzana"
1617
"github.com/grafana/grafana/pkg/services/featuremgmt"
1718
"github.com/grafana/grafana/pkg/services/licensing"
1819
secretsfake "github.com/grafana/grafana/pkg/services/secrets/fakes"
@@ -67,7 +68,7 @@ func TestSocialService_ProvideService(t *testing.T) {
6768
cfg.Raw = iniFile
6869

6970
secrets := secretsfake.NewMockService(t)
70-
accessControl := acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
71+
accessControl := acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
7172
sqlStore := db.InitTestDB(t)
7273

7374
ssoSettingsSvc := ssosettingsimpl.ProvideService(
@@ -179,7 +180,7 @@ func TestSocialService_ProvideService_GrafanaComGrafanaNet(t *testing.T) {
179180

180181
cfg := setting.NewCfg()
181182
secrets := secretsfake.NewMockService(t)
182-
accessControl := acimpl.ProvideAccessControl(featuremgmt.WithFeatures())
183+
accessControl := acimpl.ProvideAccessControl(featuremgmt.WithFeatures(), zanzana.NewNoopClient())
183184
sqlStore := db.InitTestDB(t)
184185

185186
ssoSettingsSvc := ssosettingsimpl.ProvideService(

pkg/services/accesscontrol/accesscontrol.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ import (
66
"fmt"
77
"strings"
88

9+
"go.opentelemetry.io/otel"
10+
"go.opentelemetry.io/otel/attribute"
11+
"go.opentelemetry.io/otel/trace"
12+
913
"github.com/grafana/grafana/pkg/apimachinery/identity"
1014
"github.com/grafana/grafana/pkg/registry"
1115
"github.com/grafana/grafana/pkg/services/authn"
1216
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
1317
"github.com/grafana/grafana/pkg/services/org"
1418
"github.com/grafana/grafana/pkg/services/user"
15-
"go.opentelemetry.io/otel"
16-
"go.opentelemetry.io/otel/attribute"
17-
"go.opentelemetry.io/otel/trace"
1819
)
1920

2021
var tracer = otel.Tracer("github.com/grafana/grafana/pkg/services/accesscontrol")

0 commit comments

Comments
 (0)