Files
grafana/pkg/services/ssosettings/ssosettingstests/service_fake.go
Mihai Doarna 3f40947cd6 IAM: Add a local cache for the SSO settings service (#112152)
* add a local cache for the SSO settings service

* add unit tests for GetForProviderFromCache() func

* append sso settings on update if not found
2025-10-08 18:04:24 +03:00

128 lines
4.0 KiB
Go

package ssosettingstests
import (
context "context"
"github.com/grafana/grafana/pkg/apimachinery/identity"
"github.com/grafana/grafana/pkg/services/ssosettings"
models "github.com/grafana/grafana/pkg/services/ssosettings/models"
)
var _ ssosettings.Service = (*FakeService)(nil)
type FakeService struct {
ExpectedSSOSetting *models.SSOSettings
ExpectedSSOSettings []*models.SSOSettings
ExpectedError error
ExpectedReloadablesRegistry map[string]ssosettings.Reloadable
ActualSSOSettings models.SSOSettings
ActualPatchData map[string]any
ActualProvider string
ActualRequester identity.Requester
ListFn func(ctx context.Context) ([]*models.SSOSettings, error)
ListWithRedactedSecretsFn func(ctx context.Context) ([]*models.SSOSettings, error)
GetForProviderFn func(ctx context.Context, provider string) (*models.SSOSettings, error)
GetForProviderWithRedactedSecretsFn func(ctx context.Context, provider string) (*models.SSOSettings, error)
UpsertFn func(ctx context.Context, settings *models.SSOSettings, requester identity.Requester) error
DeleteFn func(ctx context.Context, provider string) error
PatchFn func(ctx context.Context, provider string, data map[string]any) error
RegisterReloadableFn func(provider string, reloadable ssosettings.Reloadable)
ReloadFn func(ctx context.Context, provider string)
}
func NewFakeService() *FakeService {
return &FakeService{
ExpectedReloadablesRegistry: make(map[string]ssosettings.Reloadable),
}
}
func (f *FakeService) List(ctx context.Context) ([]*models.SSOSettings, error) {
if f.ListFn != nil {
return f.ListFn(ctx)
}
return f.ExpectedSSOSettings, f.ExpectedError
}
func (f *FakeService) ListWithRedactedSecrets(ctx context.Context) ([]*models.SSOSettings, error) {
if f.ListWithRedactedSecretsFn != nil {
return f.ListWithRedactedSecretsFn(ctx)
}
return f.ExpectedSSOSettings, f.ExpectedError
}
func (f *FakeService) GetForProvider(ctx context.Context, provider string) (*models.SSOSettings, error) {
if f.GetForProviderFn != nil {
return f.GetForProviderFn(ctx, provider)
}
f.ActualProvider = provider
return f.ExpectedSSOSetting, f.ExpectedError
}
func (f *FakeService) GetForProviderFromCache(ctx context.Context, provider string) (*models.SSOSettings, error) {
if f.GetForProviderFn != nil {
return f.GetForProviderFn(ctx, provider)
}
f.ActualProvider = provider
return f.ExpectedSSOSetting, f.ExpectedError
}
func (f *FakeService) GetForProviderWithRedactedSecrets(ctx context.Context, provider string) (*models.SSOSettings, error) {
if f.GetForProviderWithRedactedSecretsFn != nil {
return f.GetForProviderWithRedactedSecretsFn(ctx, provider)
}
f.ActualProvider = provider
return f.ExpectedSSOSetting, f.ExpectedError
}
func (f *FakeService) Upsert(ctx context.Context, settings *models.SSOSettings, requester identity.Requester) error {
if f.UpsertFn != nil {
return f.UpsertFn(ctx, settings, requester)
}
f.ActualSSOSettings = *settings
f.ActualRequester = requester
return f.ExpectedError
}
func (f *FakeService) Delete(ctx context.Context, provider string) error {
if f.DeleteFn != nil {
return f.DeleteFn(ctx, provider)
}
f.ActualProvider = provider
return f.ExpectedError
}
func (f *FakeService) Patch(ctx context.Context, provider string, data map[string]any) error {
if f.PatchFn != nil {
return f.PatchFn(ctx, provider, data)
}
f.ActualProvider = provider
f.ActualPatchData = data
return f.ExpectedError
}
func (f *FakeService) RegisterReloadable(provider string, reloadable ssosettings.Reloadable) {
if f.RegisterReloadableFn != nil {
f.RegisterReloadableFn(provider, reloadable)
return
}
f.ExpectedReloadablesRegistry[provider] = reloadable
}
func (f *FakeService) Reload(ctx context.Context, provider string) {
if f.ReloadFn != nil {
f.ReloadFn(ctx, provider)
return
}
f.ActualProvider = provider
}