diff options
-rw-r--r-- | tests/cli/zerokey.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/cli/zerokey.go b/tests/cli/zerokey.go new file mode 100644 index 0000000..b809d1f --- /dev/null +++ b/tests/cli/zerokey.go @@ -0,0 +1,60 @@ +package cli + +import ( + "io/ioutil" + "os" + "os/exec" + "testing" + + "github.com/rfjakob/gocryptfs/tests/test_helpers" +) + +// TestZerokey verifies that `gocryptfs -zerokey` uses the same options as +// `gocryptfs -init`. +func TestZerokey(t *testing.T) { + // Create FS + dir := test_helpers.InitFS(t) + + // Change masterkey to all-zero using password change + args := []string{"-q", "-passwd", "-masterkey", + "00000000-00000000-00000000-00000000-00000000-00000000-00000000-00000000"} + args = append(args, dir) + cmd := exec.Command(test_helpers.GocryptfsBinary, args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + p, err := cmd.StdinPipe() + if err != nil { + t.Fatal(err) + } + err = cmd.Start() + if err != nil { + t.Error(err) + } + // New password = old password + p.Write([]byte("test\n")) + p.Close() + err = cmd.Wait() + if err != nil { + t.Error(err) + } + + // Add content + mnt := dir + ".mnt" + test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test") + file1 := mnt + "/file1" + err = ioutil.WriteFile(file1, []byte("somecontent"), 0600) + if err != nil { + t.Fatal(err) + } + test_helpers.UnmountPanic(mnt) + + // Mount using -zerokey and verify we get the same result + test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test") + content, err := ioutil.ReadFile(file1) + if err != nil { + t.Error(err) + } else if string(content) != "somecontent" { + t.Errorf("wrong content: %q", string(content)) + } + test_helpers.UnmountPanic(mnt) +} |