v2api: fix TestOpenBackingDir

This commit is contained in:
Jakob Unterwurzacher 2020-07-11 20:15:47 +02:00
parent 7de3330d70
commit b0342fae5d
2 changed files with 42 additions and 25 deletions

View File

@ -7,6 +7,8 @@ import (
"golang.org/x/sys/unix"
"github.com/hanwen/go-fuse/v2/fuse"
"github.com/rfjakob/gocryptfs/internal/syscallcompat"
"github.com/rfjakob/gocryptfs/tests/test_helpers"
)
@ -17,14 +19,15 @@ func TestOpenBackingDir(t *testing.T) {
Cipherdir: cipherdir,
}
fs := newTestFS(args)
out := &fuse.EntryOut{}
code := fs.Mkdir("dir1", 0700, nil)
if !code.Ok() {
t.Fatal(code)
_, errno := fs.Mkdir(nil, "dir1", 0700, out)
if errno != 0 {
t.Fatal(errno)
}
code = fs.Mkdir("dir1/dir2", 0700, nil)
if !code.Ok() {
t.Fatal(code)
_, errno = fs.Mkdir(nil, "dir1/dir2", 0700, out)
if errno != 0 {
t.Fatal(errno)
}
dirfd, cName, err := fs.openBackingDir("")
@ -37,7 +40,7 @@ func TestOpenBackingDir(t *testing.T) {
syscall.Close(dirfd)
// Again, but populate the cache for "" by looking up a non-existing file
fs.GetAttr("xyz1234", nil)
fs.Getattr(nil, "xyz1234", &fuse.AttrOut{})
dirfd, cName, err = fs.openBackingDir("")
if err != nil {
t.Fatal(err)
@ -84,7 +87,7 @@ func TestOpenBackingDir(t *testing.T) {
n255 := strings.Repeat("n", 255)
path := "dir1/" + n255
fs.Mkdir(path, 0700, nil)
fs.Mkdir(nil, path, 0700, out)
dirfd, cName, err = fs.openBackingDir(path)
if err != nil {
t.Fatal(err)
@ -109,14 +112,15 @@ func TestOpenBackingDirPlaintextNames(t *testing.T) {
PlaintextNames: true,
}
fs := newTestFS(args)
out := &fuse.EntryOut{}
code := fs.Mkdir("dir1", 0700, nil)
if !code.Ok() {
t.Fatal(code)
_, errno := fs.Mkdir(nil, "dir1", 0700, out)
if errno != 0 {
t.Fatal(errno)
}
code = fs.Mkdir("dir1/dir2", 0700, nil)
if !code.Ok() {
t.Fatal(code)
_, errno = fs.Mkdir(nil, "dir1/dir2", 0700, out)
if errno != 0 {
t.Fatal(errno)
}
dirfd, cName, err := fs.openBackingDir("")

View File

@ -5,28 +5,41 @@ package fusefrontend
import (
"testing"
"time"
"github.com/hanwen/go-fuse/v2/fs"
"github.com/rfjakob/gocryptfs/internal/contentenc"
"github.com/rfjakob/gocryptfs/internal/cryptocore"
"github.com/rfjakob/gocryptfs/internal/nametransform"
)
func newTestFS(args Args) *FS {
func newTestFS(args Args) *RootNode {
// Init crypto backend
key := make([]byte, cryptocore.KeyLen)
cCore := cryptocore.New(key, cryptocore.BackendGoGCM, contentenc.DefaultIVBits, true, false)
cEnc := contentenc.New(cCore, contentenc.DefaultBS, false)
nameTransform := nametransform.New(cCore.EMECipher, true, true)
return NewFS(args, cEnc, nameTransform)
n := nametransform.New(cCore.EMECipher, true, true)
rn := NewRootNode(args, cEnc, n)
oneSec := time.Second
options := &fs.Options{
EntryTimeout: &oneSec,
AttrTimeout: &oneSec,
}
fs.NewNodeFS(rn, options)
return rn
}
func TestEncryptDecryptXattrName(t *testing.T) {
fs := newTestFS(Args{})
attr1 := "user.foo123456789"
cAttr := fs.encryptXattrName(attr1)
t.Logf("cAttr=%v", cAttr)
attr2, err := fs.decryptXattrName(cAttr)
if attr1 != attr2 || err != nil {
t.Fatalf("Decrypt mismatch: %v != %v", attr1, attr2)
}
t.Fatal("not yet implemented")
/*
fs := newTestFS(Args{})
attr1 := "user.foo123456789"
cAttr := fs.encryptXattrName(attr1)
t.Logf("cAttr=%v", cAttr)
attr2, err := fs.decryptXattrName(cAttr)
if attr1 != attr2 || err != nil {
t.Fatalf("Decrypt mismatch: %v != %v", attr1, attr2)
}
*/
}