diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/normal/cli_test.go | 59 | ||||
-rw-r--r-- | tests/reverse/correctness_test.go | 17 | ||||
-rw-r--r-- | tests/reverse/longname_perf_test.go | 45 | ||||
-rw-r--r-- | tests/reverse/main_test.go | 32 |
4 files changed, 112 insertions, 41 deletions
diff --git a/tests/normal/cli_test.go b/tests/normal/cli_test.go index ed3111b..62ad217 100644 --- a/tests/normal/cli_test.go +++ b/tests/normal/cli_test.go @@ -5,7 +5,6 @@ package normal import ( "os" "os/exec" - "path/filepath" "testing" "github.com/rfjakob/gocryptfs/internal/configfile" @@ -24,18 +23,45 @@ func TestMain(m *testing.M) { // Test -init flag func TestInit(t *testing.T) { dir := test_helpers.InitFS(t) - _, err := os.Stat(filepath.Join(dir, configfile.ConfDefaultName)) + _, c, err := configfile.LoadConfFile(dir+"/"+configfile.ConfDefaultName, "test") if err != nil { t.Fatal(err) } + if c.IsFeatureFlagSet(configfile.FlagGCMSIV) { + t.Error("GCMSIV flag should not be set") + } } -// Test -passwd flag -func TestPasswd(t *testing.T) { - // Create FS - dir := test_helpers.InitFS(t) +// Test -init with -gcmsiv +func TestInitGcmsiv(t *testing.T) { + dir := test_helpers.InitFS(t, "-gcmsiv") + _, c, err := configfile.LoadConfFile(dir+"/"+configfile.ConfDefaultName, "test") + if err != nil { + t.Fatal(err) + } + if !c.IsFeatureFlagSet(configfile.FlagGCMSIV) { + t.Error("GCMSIV flag should be set but is not") + } +} + +// Test -init with -reverse +func TestInitReverse(t *testing.T) { + dir := test_helpers.InitFS(t, "-reverse") + _, c, err := configfile.LoadConfFile(dir+"/"+configfile.ConfReverseName, "test") + if err != nil { + t.Fatal(err) + } + if !c.IsFeatureFlagSet(configfile.FlagGCMSIV) { + t.Error("GCMSIV flag should be set but is not") + } +} + +func testPasswd(t *testing.T, dir string, extraArgs ...string) { // Change password using "-extpass" - cmd := exec.Command(test_helpers.GocryptfsBinary, "-q", "-passwd", "-extpass", "echo test", dir) + args := []string{"-q", "-passwd", "-extpass", "echo test"} + args = append(args, extraArgs...) + args = append(args, dir) + cmd := exec.Command(test_helpers.GocryptfsBinary, args...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Run() @@ -43,7 +69,10 @@ func TestPasswd(t *testing.T) { t.Error(err) } // Change password using stdin - cmd = exec.Command(test_helpers.GocryptfsBinary, "-q", "-passwd", dir) + args = []string{"-q", "-passwd", "-extpass", "echo test"} + args = append(args, extraArgs...) + args = append(args, dir) + cmd = exec.Command(test_helpers.GocryptfsBinary, args...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr p, err := cmd.StdinPipe() @@ -65,6 +94,20 @@ func TestPasswd(t *testing.T) { } } +// Test -passwd flag +func TestPasswd(t *testing.T) { + // Create FS + dir := test_helpers.InitFS(t) + testPasswd(t, dir) +} + +// Test -passwd with -reverse +func TestPasswdReverse(t *testing.T) { + // Create FS + dir := test_helpers.InitFS(t, "-reverse") + testPasswd(t, dir, "-reverse") +} + // Test -init & -config flag func TestInitConfig(t *testing.T) { config := test_helpers.TmpDir + "/TestInitConfig.conf" diff --git a/tests/reverse/correctness_test.go b/tests/reverse/correctness_test.go new file mode 100644 index 0000000..e268815 --- /dev/null +++ b/tests/reverse/correctness_test.go @@ -0,0 +1,17 @@ +package reverse_test + +import ( + "os" + "testing" +) + +func TestLongnameStat(t *testing.T) { + _, err := os.Stat(dirA + "/" + "") + if err != nil { + t.Error(err) + } + _, err = os.Stat(dirA + "/" + "") + if err != nil { + t.Error(err) + } +} diff --git a/tests/reverse/longname_perf_test.go b/tests/reverse/longname_perf_test.go index 43acd25..f170ad7 100644 --- a/tests/reverse/longname_perf_test.go +++ b/tests/reverse/longname_perf_test.go @@ -5,34 +5,17 @@ import ( "fmt" "os" "testing" - - "github.com/rfjakob/gocryptfs/tests/test_helpers" ) -var dirA, dirB, x240 string - -func TestMain(m *testing.M) { - x240 = string(bytes.Repeat([]byte("x"), 240)) - dirA = test_helpers.TmpDir + "/a" - dirB = test_helpers.TmpDir + "/b" - os.Mkdir(dirA, 0700) - os.Mkdir(dirB, 0700) - generateFiles(dirA) - test_helpers.MountOrExit(dirA, dirB, "-zerokey", "-reverse") - r := m.Run() - test_helpers.UnmountPanic(dirB) - os.RemoveAll(test_helpers.TmpDir) - os.Exit(r) -} - -func genName(i int) string { - return fmt.Sprintf("%04d.%s", i, x240) +func genName(i int, postfix string) string { + return fmt.Sprintf("%04d.%s", i, postfix) } // Create 10000 files with long names -func generateFiles(dir string) { +func generateLongnameFiles(dir string) { + x240 := string(bytes.Repeat([]byte("x"), 240)) for i := 0; i < 100000; i++ { - n := genName(i) + n := genName(i, x240) f, err := os.Create(dir + "/" + n) if err != nil { panic(err) @@ -41,18 +24,9 @@ func generateFiles(dir string) { } } -func TestLongnameStat(t *testing.T) { - _, err := os.Stat(dirA + "/" + genName(0)) - if err != nil { - t.Error(err) - } - _, err = os.Stat(dirA + "/" + genName(9999)) - if err != nil { - t.Error(err) - } -} - func BenchmarkLongnameStat(b *testing.B) { + // Setup + generateLongnameFiles(dirA) dirFd, err := os.Open(dirB) if err != nil { b.Fatal(err) @@ -63,6 +37,7 @@ func BenchmarkLongnameStat(b *testing.B) { } l := len(encryptedNames) dirFd.Close() + // Benchmark b.ResetTimer() for i := 0; i < b.N; i++ { _, err := os.Stat(dirB + "/" + encryptedNames[i%l]) @@ -70,4 +45,8 @@ func BenchmarkLongnameStat(b *testing.B) { b.Fatal(err) } } + // Cleanup + b.StopTimer() + os.RemoveAll(dirA) + os.Mkdir(dirA, 0700) } diff --git a/tests/reverse/main_test.go b/tests/reverse/main_test.go new file mode 100644 index 0000000..3d10750 --- /dev/null +++ b/tests/reverse/main_test.go @@ -0,0 +1,32 @@ +package reverse_test + +import ( + "os" + "testing" + + "github.com/rfjakob/gocryptfs/tests/test_helpers" +) + +var dirA, dirB, dirC string + +func TestMain(m *testing.M) { + dirA = test_helpers.TmpDir + "/a" + dirB = test_helpers.TmpDir + "/b" + dirC = test_helpers.TmpDir + "/c" + if err := os.Mkdir(dirA, 0700); err != nil { + panic(err) + } + if err := os.Mkdir(dirB, 0700); err != nil { + panic(err) + } + if err := os.Mkdir(dirC, 0700); err != nil { + panic(err) + } + test_helpers.MountOrExit(dirA, dirB, "-zerokey", "-reverse") + test_helpers.MountOrExit(dirB, dirC, "-zerokey", "-gcmsiv") + r := m.Run() + test_helpers.UnmountPanic(dirC) + test_helpers.UnmountPanic(dirB) + os.RemoveAll(test_helpers.TmpDir) + os.Exit(r) +} |