103 lines
3.2 KiB
Go
103 lines
3.2 KiB
Go
package options
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
)
|
|
|
|
func TestStorageOptions_CheckFeatureToggle(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
StorageType StorageType
|
|
UnifiedStorageConfig map[string]setting.UnifiedStorageConfig
|
|
features any
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "with legacy storage",
|
|
StorageType: StorageTypeLegacy, // nolint:staticcheck
|
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{"playlists.playlist.grafana.app": {DualWriterMode: 2}},
|
|
features: featuremgmt.WithFeatures(),
|
|
},
|
|
{
|
|
name: "with unified storage and without config for resource",
|
|
StorageType: StorageTypeUnified,
|
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{},
|
|
features: featuremgmt.WithFeatures(),
|
|
},
|
|
{
|
|
name: "with unified storage, mode > 1 and with toggle for resource",
|
|
StorageType: StorageTypeUnified,
|
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{"playlists.playlist.grafana.app": {DualWriterMode: 2}},
|
|
features: featuremgmt.WithFeatures(featuremgmt.FlagKubernetesPlaylists),
|
|
},
|
|
{
|
|
name: "with unified storage, mode > 1 and without toggle for resource",
|
|
StorageType: StorageTypeUnified,
|
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{"playlists.playlist.grafana.app": {DualWriterMode: 2}},
|
|
features: featuremgmt.WithFeatures(),
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "with unified storage and mode = 1",
|
|
StorageType: StorageTypeUnified,
|
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{"playlists.playlist.grafana.app": {DualWriterMode: 1}},
|
|
features: featuremgmt.WithFeatures(),
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
o := &StorageOptions{
|
|
StorageType: tt.StorageType,
|
|
UnifiedStorageConfig: tt.UnifiedStorageConfig,
|
|
}
|
|
err := o.EnforceFeatureToggleAfterMode1(tt.features.(featuremgmt.FeatureToggles))
|
|
if tt.wantErr {
|
|
return
|
|
}
|
|
assert.NoError(t, err)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestStorageOptions_Validate(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
Opts StorageOptions
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "with unified storage grpc and no auth token",
|
|
Opts: StorageOptions{
|
|
StorageType: StorageTypeUnifiedGrpc,
|
|
},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "with unified storage grpc and auth info",
|
|
Opts: StorageOptions{
|
|
StorageType: StorageTypeUnifiedGrpc,
|
|
Address: "localhost:10000",
|
|
GrpcClientAuthenticationToken: "1234",
|
|
GrpcClientAuthenticationTokenExchangeURL: "http://localhost:8080",
|
|
GrpcClientAuthenticationTokenNamespace: "*",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
errs := tt.Opts.Validate()
|
|
if tt.wantErr {
|
|
assert.NotEmpty(t, errs)
|
|
return
|
|
}
|
|
assert.Empty(t, errs)
|
|
})
|
|
}
|
|
}
|