mirror of
https://github.com/luxfi/mpc.git
synced 2026-09-24 00:26:24 +00:00
92 lines
1.7 KiB
Go
92 lines
1.7 KiB
Go
package pathutil
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestValidateFilePath(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
path string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "valid simple path",
|
|
path: "test.json",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "valid relative path",
|
|
path: "config/test.json",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "path traversal attempt",
|
|
path: "../../../etc/passwd",
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "path traversal with clean",
|
|
path: "config/../../../etc/passwd",
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "valid absolute path",
|
|
path: "/tmp/test.json",
|
|
wantErr: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := ValidateFilePath(tt.path)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("ValidateFilePath() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSafePath(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
baseDir string
|
|
filename string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "valid file in base dir",
|
|
baseDir: "/tmp",
|
|
filename: "test.json",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "path traversal attempt",
|
|
baseDir: "/tmp",
|
|
filename: "../../../etc/passwd",
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "path traversal with clean",
|
|
baseDir: "/tmp",
|
|
filename: "config/../../../etc/passwd",
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "valid subdirectory",
|
|
baseDir: "/tmp",
|
|
filename: "config/test.json",
|
|
wantErr: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
_, err := SafePath(tt.baseDir, tt.filename)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("SafePath() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
})
|
|
}
|
|
}
|