Validate portable workspace identifiers

This commit is contained in:
2026-08-10 17:35:52 +00:00
parent 0b40cf8026
commit 1dccf5f140
31 changed files with 490 additions and 48 deletions

View File

@@ -0,0 +1,32 @@
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)
}
}
})
}