30 lines
851 B
Go
30 lines
851 B
Go
package pathutil_test
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"proxyctl/internal/pathutil"
|
|
)
|
|
|
|
func TestWithinUsesComponentBoundaries(t *testing.T) {
|
|
parent := filepath.Join(string(filepath.Separator), "home", "alice")
|
|
for _, test := range []struct {
|
|
name string
|
|
path string
|
|
want bool
|
|
}{
|
|
{name: "same", path: parent, want: true},
|
|
{name: "child", path: filepath.Join(parent, ".config", "proxyctl"), want: true},
|
|
{name: "cleaned child", path: filepath.Join(parent, "tmp", "..", ".config"), want: true},
|
|
{name: "parent", path: filepath.Dir(parent), want: false},
|
|
{name: "sibling prefix", path: parent + "-backup", want: false},
|
|
} {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
if got := pathutil.Within(test.path, parent); got != test.want {
|
|
t.Fatalf("Within(%q, %q) = %v, want %v", test.path, parent, got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|