Plugins: Set grafana config, plugin version and user agent on plugin requests (#75171)

* first pass

* fixup

* remove test line

* fix tests

* use new fields

* fix imports + formatting

* fix tests

* rollback changes

* undo whitespace

* apply pr feedback
This commit is contained in:
Will Browne
2023-09-21 11:33:31 +02:00
committed by GitHub
parent dd8f88b194
commit 7fca1bde54
37 changed files with 248 additions and 102 deletions

View File

@ -20,6 +20,7 @@ import (
"github.com/grafana/grafana/pkg/plugins/backendplugin"
"github.com/grafana/grafana/pkg/plugins/config"
pluginClient "github.com/grafana/grafana/pkg/plugins/manager/client"
pluginFakes "github.com/grafana/grafana/pkg/plugins/manager/fakes"
"github.com/grafana/grafana/pkg/plugins/manager/registry"
"github.com/grafana/grafana/pkg/services/datasources"
fakeDatasources "github.com/grafana/grafana/pkg/services/datasources/fakes"
@ -52,8 +53,9 @@ func (rv *fakePluginRequestValidator) Validate(dsURL string, req *http.Request)
// `/ds/query` endpoint test
func TestAPIEndpoint_Metrics_QueryMetricsV2(t *testing.T) {
cfg := setting.NewCfg()
qds := query.ProvideService(
setting.NewCfg(),
cfg,
nil,
nil,
&fakePluginRequestValidator{},
@ -67,7 +69,7 @@ func TestAPIEndpoint_Metrics_QueryMetricsV2(t *testing.T) {
return &backend.QueryDataResponse{Responses: resp}, nil
},
},
plugincontext.ProvideService(localcache.ProvideService(), &pluginstore.FakePluginStore{
plugincontext.ProvideService(cfg, localcache.ProvideService(), &pluginstore.FakePluginStore{
PluginList: []pluginstore.Plugin{
{
JSONData: plugins.JSONData{
@ -76,8 +78,7 @@ func TestAPIEndpoint_Metrics_QueryMetricsV2(t *testing.T) {
},
},
}, &fakeDatasources.FakeDataSourceService{}, pluginSettings.ProvideService(dbtest.NewFakeDB(),
secretstest.NewFakeSecretsService()),
),
secretstest.NewFakeSecretsService()), pluginFakes.NewFakeLicensingService(), &config.Cfg{}),
)
serverFeatureEnabled := SetupAPITestServer(t, func(hs *HTTPServer) {
hs.queryDataService = qds
@ -110,9 +111,10 @@ func TestAPIEndpoint_Metrics_QueryMetricsV2(t *testing.T) {
}
func TestAPIEndpoint_Metrics_PluginDecryptionFailure(t *testing.T) {
cfg := setting.NewCfg()
ds := &fakeDatasources.FakeDataSourceService{SimulatePluginFailure: true}
db := &dbtest.FakeDB{ExpectedError: pluginsettings.ErrPluginSettingNotFound}
pcp := plugincontext.ProvideService(localcache.ProvideService(),
pcp := plugincontext.ProvideService(cfg, localcache.ProvideService(),
&pluginstore.FakePluginStore{
PluginList: []pluginstore.Plugin{
{
@ -122,10 +124,10 @@ func TestAPIEndpoint_Metrics_PluginDecryptionFailure(t *testing.T) {
},
},
},
ds, pluginSettings.ProvideService(db, secretstest.NewFakeSecretsService()),
ds, pluginSettings.ProvideService(db, secretstest.NewFakeSecretsService()), pluginFakes.NewFakeLicensingService(), &config.Cfg{},
)
qds := query.ProvideService(
setting.NewCfg(),
cfg,
nil,
nil,
&fakePluginRequestValidator{},
@ -284,22 +286,22 @@ func TestDataSourceQueryError(t *testing.T) {
},
})
srv := SetupAPITestServer(t, func(hs *HTTPServer) {
cfg := setting.NewCfg()
r := registry.NewInMemory()
err := r.Add(context.Background(), p)
require.NoError(t, err)
ds := &fakeDatasources.FakeDataSourceService{}
hs.queryDataService = query.ProvideService(
setting.NewCfg(),
cfg,
&fakeDatasources.FakeCacheService{},
nil,
&fakePluginRequestValidator{},
pluginClient.ProvideService(r, &config.Cfg{}),
plugincontext.ProvideService(localcache.ProvideService(), &pluginstore.FakePluginStore{
plugincontext.ProvideService(cfg, localcache.ProvideService(), &pluginstore.FakePluginStore{
PluginList: []pluginstore.Plugin{pluginstore.ToGrafanaDTO(p)},
},
ds, pluginSettings.ProvideService(dbtest.NewFakeDB(),
secretstest.NewFakeSecretsService()),
),
secretstest.NewFakeSecretsService()), pluginFakes.NewFakeLicensingService(), &config.Cfg{}),
)
hs.QuotaService = quotatest.New(false, nil)
})