2025-04-01 10:38:02 +09:00

52 lines
1.4 KiB
Go

package validation
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/grafana/grafana/pkg/services/ngalert/models"
"github.com/grafana/grafana/pkg/util"
)
func TestValidateProvenanceRelaxed(t *testing.T) {
all := []models.Provenance{
models.ProvenanceNone,
models.ProvenanceAPI,
models.ProvenanceFile,
models.Provenance(fmt.Sprintf("random-%s", util.GenerateShortUID())),
}
t.Run("all transitions from 'none' are allowed", func(t *testing.T) {
for _, provenance := range all {
assert.NoError(t, ValidateProvenanceRelaxed(models.ProvenanceNone, provenance))
}
})
t.Run("noop transitions are allowed", func(t *testing.T) {
for _, provenance := range all {
assert.NoError(t, ValidateProvenanceRelaxed(provenance, provenance))
}
})
t.Run("no transitions to 'none' are allowed", func(t *testing.T) {
for _, from := range all {
if from == models.ProvenanceNone {
continue
}
assert.ErrorIsf(t, ErrProvenanceChangeNotAllowed.Base, ValidateProvenanceRelaxed(from, models.ProvenanceNone), "transition %s -> 'none' is allowed but should not", from)
}
})
t.Run("transitions between others are are allowed", func(t *testing.T) {
for _, from := range all {
if from == models.ProvenanceNone {
continue
}
for _, to := range all {
if to == models.ProvenanceNone || from == to {
continue
}
assert.NoError(t, ValidateProvenanceRelaxed(from, to))
}
}
})
}