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) } } }) }