86 lines
1.8 KiB
Go
86 lines
1.8 KiB
Go
package zerodiriv
|
|
|
|
// integration tests that target zerodiriv specifically
|
|
|
|
import (
|
|
"bytes"
|
|
"path/filepath"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/rfjakob/gocryptfs/tests/test_helpers"
|
|
)
|
|
|
|
var cDir string
|
|
var pDir string
|
|
|
|
var testPw = []byte("test")
|
|
|
|
// Create and mount "-zerodiriv" fs
|
|
func TestMain(m *testing.M) {
|
|
cDir = test_helpers.InitFS(nil, "-zerodiriv")
|
|
pDir = cDir + ".mnt"
|
|
test_helpers.MountOrExit(cDir, pDir, "-zerodiriv", "-extpass", "echo test")
|
|
r := m.Run()
|
|
test_helpers.UnmountPanic(pDir)
|
|
os.Exit(r)
|
|
}
|
|
|
|
// diriv should be all-zero on newly created dirs
|
|
func TestZeroDirIV(t *testing.T) {
|
|
// Create /dir1, move it and create it again
|
|
var dirPath = pDir+"/dir1"
|
|
var err = os.Mkdir(dirPath, 0777)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
err = os.Rename(dirPath, dirPath + ".bak")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
err = os.Mkdir(dirPath, 0777)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
var matches []string
|
|
matches, err = filepath.Glob(cDir+"/*/gocryptfs.diriv")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
// The contents of the both diriv files must be the same
|
|
var diriv0 []byte
|
|
diriv0, err = ioutil.ReadFile(matches[0])
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
var diriv1 []byte
|
|
diriv1, err = ioutil.ReadFile(matches[1])
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if !bytes.Equal(diriv0, diriv1) {
|
|
t.Errorf("both dirivs should have the same value")
|
|
}
|
|
// And equal to zero
|
|
zerodiriv := make([]byte, len(diriv0))
|
|
if !bytes.Equal(diriv0, zerodiriv) {
|
|
t.Errorf("both dirivs should be all-zero")
|
|
}
|
|
}
|
|
|
|
// root diriv should be all-zero
|
|
func TestZeroRootDirIV(t *testing.T) {
|
|
// The contents of the diriv file must be zero
|
|
diriv, err := ioutil.ReadFile(cDir+"/gocryptfs.diriv")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
zerodiriv := make([]byte, len(diriv))
|
|
if !bytes.Equal(diriv, zerodiriv) {
|
|
t.Errorf("root diriv should be all-zero")
|
|
}
|
|
}
|