63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package featuremgmt
|
|
|
|
import (
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
gofeatureflag "github.com/open-feature/go-sdk-contrib/providers/go-feature-flag/pkg"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestProvideOpenFeatureManager(t *testing.T) {
|
|
u, err := url.Parse("http://localhost:1031")
|
|
require.NoError(t, err)
|
|
|
|
testCases := []struct {
|
|
name string
|
|
cfg setting.OpenFeatureSettings
|
|
expectedProvider string
|
|
}{
|
|
{
|
|
name: "static provider",
|
|
expectedProvider: setting.StaticProviderType,
|
|
},
|
|
{
|
|
name: "goff provider",
|
|
cfg: setting.OpenFeatureSettings{
|
|
ProviderType: setting.GOFFProviderType,
|
|
URL: u,
|
|
TargetingKey: "grafana",
|
|
},
|
|
expectedProvider: setting.GOFFProviderType,
|
|
},
|
|
{
|
|
name: "invalid provider",
|
|
cfg: setting.OpenFeatureSettings{
|
|
ProviderType: "some_provider",
|
|
},
|
|
expectedProvider: setting.StaticProviderType,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
cfg := setting.NewCfg()
|
|
cfg.OpenFeature = tc.cfg
|
|
|
|
p, err := ProvideOpenFeatureService(cfg)
|
|
require.NoError(t, err)
|
|
|
|
if tc.expectedProvider == setting.GOFFProviderType {
|
|
_, ok := p.provider.(*gofeatureflag.Provider)
|
|
assert.True(t, ok, "expected provider to be of type goff.Provider")
|
|
} else {
|
|
_, ok := p.provider.(*inMemoryBulkProvider)
|
|
assert.True(t, ok, "expected provider to be of type memprovider.InMemoryProvider")
|
|
}
|
|
})
|
|
}
|
|
}
|