Files

31 lines
704 B
Go

package files
import "testing"
func TestSafeUploadName(t *testing.T) {
t.Parallel()
cases := map[string]bool{
"notes.txt": true,
"../evil.exe": true, // basename keeps evil.exe
"..": false,
".": false,
"": false,
`C:\temp\foo.txt`: true,
}
for name, wantOK := range cases {
got, err := SafeUploadName(name)
if wantOK {
if err != nil {
t.Fatalf("SafeUploadName(%q) err = %v", name, err)
}
if got == "" || got == "." || got == ".." {
t.Fatalf("SafeUploadName(%q) = %q", name, got)
}
continue
}
if err == nil {
t.Fatalf("SafeUploadName(%q) = %q, want error", name, got)
}
}
}