package prometheus import ( "context" "testing" "github.com/grafana/grafana-azure-sdk-go/v2/azsettings" "github.com/grafana/grafana-plugin-sdk-go/backend" sdkhttpclient "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/grafana/grafana-plugin-sdk-go/backend/log" "github.com/stretchr/testify/require" ) func TestExtendClientOpts(t *testing.T) { t.Run("add azure credentials if configured", func(t *testing.T) { cfg := backend.NewGrafanaCfg(map[string]string{ azsettings.AzureCloud: azsettings.AzurePublic, azsettings.AzureAuthEnabled: "true", }) settings := backend.DataSourceInstanceSettings{ BasicAuthEnabled: false, BasicAuthUser: "", JSONData: []byte(`{ "azureCredentials": { "authType": "msi" } }`), DecryptedSecureJSONData: map[string]string{}, } ctx := backend.WithGrafanaConfig(context.Background(), cfg) opts := &sdkhttpclient.Options{} err := extendClientOpts(ctx, settings, opts, log.NewNullLogger()) require.NoError(t, err) require.Equal(t, 1, len(opts.Middlewares)) }) t.Run("add sigV4 auth if opts has SigV4 configured", func(t *testing.T) { settings := backend.DataSourceInstanceSettings{ BasicAuthEnabled: false, BasicAuthUser: "", JSONData: []byte(""), DecryptedSecureJSONData: map[string]string{}, } opts := &sdkhttpclient.Options{ SigV4: &sdkhttpclient.SigV4Config{ AuthType: "test", AccessKey: "accesskey", SecretKey: "secretkey", }, } err := extendClientOpts(context.Background(), settings, opts, log.NewNullLogger()) require.NoError(t, err) require.Equal(t, "aps", opts.SigV4.Service) }) }