31 lines
704 B
Go
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)
|
|
}
|
|
}
|
|
}
|