package main import "testing" func TestValidateKey(t *testing.T) { cases := []struct { name string key string wantErr bool }{ {"happy path", "data/workers_500k.parquet", false}, {"deeply nested", "a/b/c/d/e/f/g.txt", false}, {"empty", "", true}, {"too long", string(make([]byte, 1025)), true}, {"NUL byte", "foo\x00bar", true}, {"leading slash", "/foo/bar", true}, {"dotdot component", "data/../etc/passwd", true}, {"dotdot at end", "data/..", true}, {"dotdot at start", "../etc", true}, {"single dot is fine", "data/./x.txt", false}, {"dotdot embedded is fine", "data/.. /x.txt", false}, // not a path component {"newline", "foo\nbar", true}, {"carriage return", "foo\rbar", true}, {"tab", "foo\tbar", true}, {"unicode is fine", "résumé/data.txt", false}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { err := validateKey(tc.key) if tc.wantErr && err == nil { t.Errorf("expected error for %q, got nil", tc.key) } if !tc.wantErr && err != nil { t.Errorf("expected ok for %q, got %v", tc.key, err) } }) } }