33 lines
1.0 KiB
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)
|
|
}
|
|
}
|
|
})
|
|
}
|