Files
narratio/internal/artifactpolicy/policy_fuzz_test.go

33 lines
1.0 KiB
Go

package artifactpolicy
import "testing"
func FuzzArtifactSourceParsers(f *testing.F) {
for _, seed := range []string{
"narratio.artifact.session_recap",
"narratio.extraction.npc_registry",
"narratio.previous_session.artifact.session_recap",
"narratio.artifact../escape",
`narratio.artifact.key\name`,
"narratio.artifact.café",
} {
f.Add(seed)
}
f.Fuzz(func(t *testing.T, source string) {
for _, parse := range []func(string) (string, bool){ParseConfiguredSource, ParseExtractionSource, ParsePreviousSessionSource} {
if key, ok := parse(source); ok && !IsConfiguredKey(key) {
t.Fatalf("parser accepted non-configured key %q from %q", key, source)
}
}
classified, err := ClassifySource(source)
if err == nil {
if classified.ID == "" {
t.Fatalf("ClassifySource(%q) returned an empty identifier", source)
}
if classified.ConfiguredKey != "" && !IsConfiguredKey(classified.ConfiguredKey) {
t.Fatalf("ClassifySource(%q) returned invalid configured key %q", source, classified.ConfiguredKey)
}
}
})
}