Validate portable workspace identifiers
This commit is contained in:
32
internal/artifactpolicy/policy_fuzz_test.go
Normal file
32
internal/artifactpolicy/policy_fuzz_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user