79 lines
2.7 KiB
Go
79 lines
2.7 KiB
Go
package fakes
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"github.com/grafana/grafana/pkg/services/ngalert/models"
|
|
)
|
|
|
|
type FakeProvisioningStore struct {
|
|
Calls []Call
|
|
Records map[int64]map[string]models.Provenance
|
|
GetProvenanceFunc func(ctx context.Context, o models.Provisionable, org int64) (models.Provenance, error)
|
|
GetProvenancesFunc func(ctx context.Context, orgID int64, resourceType string) (map[string]models.Provenance, error)
|
|
SetProvenanceFunc func(ctx context.Context, o models.Provisionable, org int64, p models.Provenance) error
|
|
DeleteProvenanceFunc func(ctx context.Context, o models.Provisionable, org int64) error
|
|
}
|
|
|
|
func NewFakeProvisioningStore() *FakeProvisioningStore {
|
|
return &FakeProvisioningStore{
|
|
Records: map[int64]map[string]models.Provenance{},
|
|
}
|
|
}
|
|
|
|
func (f *FakeProvisioningStore) GetProvenance(ctx context.Context, o models.Provisionable, org int64) (models.Provenance, error) {
|
|
f.Calls = append(f.Calls, Call{MethodName: "GetProvenance", Arguments: []any{ctx, o, org}})
|
|
if f.GetProvenanceFunc != nil {
|
|
return f.GetProvenanceFunc(ctx, o, org)
|
|
}
|
|
if val, ok := f.Records[org]; ok {
|
|
if prov, ok := val[o.ResourceID()+o.ResourceType()]; ok {
|
|
return prov, nil
|
|
}
|
|
}
|
|
return models.ProvenanceNone, nil
|
|
}
|
|
|
|
func (f *FakeProvisioningStore) GetProvenances(ctx context.Context, orgID int64, resourceType string) (map[string]models.Provenance, error) {
|
|
f.Calls = append(f.Calls, Call{MethodName: "GetProvenances", Arguments: []any{ctx, orgID, resourceType}})
|
|
if f.GetProvenancesFunc != nil {
|
|
return f.GetProvenancesFunc(ctx, orgID, resourceType)
|
|
}
|
|
results := make(map[string]models.Provenance)
|
|
if val, ok := f.Records[orgID]; ok {
|
|
for k, v := range val {
|
|
if strings.HasSuffix(k, resourceType) {
|
|
results[strings.TrimSuffix(k, resourceType)] = v
|
|
}
|
|
}
|
|
}
|
|
return results, nil
|
|
}
|
|
|
|
func (f *FakeProvisioningStore) SetProvenance(ctx context.Context, o models.Provisionable, org int64, p models.Provenance) error {
|
|
f.Calls = append(f.Calls, Call{MethodName: "SetProvenance", Arguments: []any{ctx, o, org, p}})
|
|
if f.SetProvenanceFunc != nil {
|
|
return f.SetProvenanceFunc(ctx, o, org, p)
|
|
}
|
|
if _, ok := f.Records[org]; !ok {
|
|
f.Records[org] = map[string]models.Provenance{}
|
|
}
|
|
if val, ok := f.Records[org]; ok {
|
|
delete(val, o.ResourceID()+o.ResourceType())
|
|
}
|
|
f.Records[org][o.ResourceID()+o.ResourceType()] = p
|
|
return nil
|
|
}
|
|
|
|
func (f *FakeProvisioningStore) DeleteProvenance(ctx context.Context, o models.Provisionable, org int64) error {
|
|
f.Calls = append(f.Calls, Call{MethodName: "DeleteProvenance", Arguments: []any{ctx, o, org}})
|
|
if f.DeleteProvenanceFunc != nil {
|
|
return f.DeleteProvenanceFunc(ctx, o, org)
|
|
}
|
|
if val, ok := f.Records[org]; ok {
|
|
delete(val, o.ResourceID()+o.ResourceType())
|
|
}
|
|
return nil
|
|
}
|