filebrowser/users/users_test.go

43 lines
1.2 KiB
Go

package users
import (
"path/filepath"
"testing"
"github.com/filebrowser/filebrowser/v2/files"
"github.com/spf13/afero"
)
// TestUserCleanFs verifies that Clean builds the user filesystem according to the
// followExternalSymlinks flag and that FullPath resolves correctly for either
// implementation.
func TestUserCleanFs(t *testing.T) {
base := t.TempDir()
want := filepath.Join(base, "data", "x")
t.Run("default builds a symlink-confining ScopedFs", func(t *testing.T) {
u := &User{Username: "u", Password: "p", Scope: "data"}
if err := u.Clean(base, false); err != nil {
t.Fatal(err)
}
if _, ok := u.Fs.(*files.ScopedFs); !ok {
t.Fatalf("expected *files.ScopedFs, got %T", u.Fs)
}
if got := u.FullPath("/x"); got != want {
t.Fatalf("FullPath: got %q, want %q", got, want)
}
})
t.Run("followExternalSymlinks builds a bare BasePathFs", func(t *testing.T) {
u := &User{Username: "u", Password: "p", Scope: "data"}
if err := u.Clean(base, true); err != nil {
t.Fatal(err)
}
if _, ok := u.Fs.(*afero.BasePathFs); !ok {
t.Fatalf("expected *afero.BasePathFs, got %T", u.Fs)
}
if got := u.FullPath("/x"); got != want {
t.Fatalf("FullPath: got %q, want %q", got, want)
}
})
}