aboutsummaryrefslogtreecommitdiff
path: root/tests/plaintextnames
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-06-27 21:39:02 +0200
committerJakob Unterwurzacher2016-06-27 21:40:39 +0200
commit2720cd7b0d2711101b841c06e0068d5d3ae1b59e (patch)
treeb218bc04d1d8057301801d4244749ac7074d4a64 /tests/plaintextnames
parentc400aca5cf7b57f5e1e7a604cfeea2512643349f (diff)
tests: give "-plaintextnames" its own test package
...and add tests for checking that gocryptfs.diriv does not get created. The main "integration_tests" package has become quite big and convoluted over time. This small separate package should make writing tests for "-plaintextnames" easier. As seen in "fusefrontend: fix PlaintextNames versions of Mkdir, Rmdir", we need more of them.
Diffstat (limited to 'tests/plaintextnames')
-rw-r--r--tests/plaintextnames/plaintextnames_test.go82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/plaintextnames/plaintextnames_test.go b/tests/plaintextnames/plaintextnames_test.go
new file mode 100644
index 0000000..7e7db7c
--- /dev/null
+++ b/tests/plaintextnames/plaintextnames_test.go
@@ -0,0 +1,82 @@
+package plaintextnames
+
+// integration tests that target plaintextnames specifically
+
+import (
+ "io/ioutil"
+ "os"
+ "testing"
+
+ "github.com/rfjakob/gocryptfs/internal/configfile"
+
+ "github.com/rfjakob/gocryptfs/tests/test_helpers"
+)
+
+var cDir string
+var pDir string
+
+// Create and mount "-plaintextnames" fs
+func TestMain(m *testing.M) {
+ cDir = test_helpers.InitFS(nil, "-plaintextnames")
+ pDir = cDir + ".mnt"
+ test_helpers.MountOrExit(cDir, pDir, "-extpass", "echo test")
+ os.Exit(m.Run())
+}
+
+// Only the PlaintextNames feature flag should be set
+func TestFlags(t *testing.T) {
+ _, cf, err := configfile.LoadConfFile(cDir+"/gocryptfs.conf", "test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !cf.IsFeatureFlagSet(configfile.FlagPlaintextNames) {
+ t.Error("PlaintextNames flag should be set but isnt")
+ }
+ if cf.IsFeatureFlagSet(configfile.FlagEMENames) || cf.IsFeatureFlagSet(configfile.FlagDirIV) {
+ t.Error("FlagEMENames and FlagDirIV should be not set")
+ }
+}
+
+// gocryptfs.diriv should NOT be created
+func TestDirIV(t *testing.T) {
+ _, err := os.Stat(cDir + "/gocryptfs.diriv")
+ if err == nil {
+ t.Errorf("gocryptfs.diriv should not be created in the top directory")
+ }
+ err = os.Mkdir(pDir+"/dir1", 0777)
+ if err != nil {
+ t.Error(err)
+ }
+ _, err = os.Stat(pDir + "/dir1/gocryptfs.diriv")
+ if err == nil {
+ t.Errorf("gocryptfs.diriv should not be created in a subdirectory")
+ }
+}
+
+// With "-plaintextnames", the name "/gocryptfs.conf" is reserved, but everything
+// else should work.
+func TestFiltered(t *testing.T) {
+ filteredFile := pDir + "/gocryptfs.conf"
+ err := ioutil.WriteFile(filteredFile, []byte("foo"), 0777)
+ if err == nil {
+ t.Errorf("should have failed but didn't")
+ }
+ err = os.Remove(filteredFile)
+ if err == nil {
+ t.Errorf("should have failed but didn't")
+ }
+ err = ioutil.WriteFile(pDir+"/gocryptfs.diriv", []byte("foo"), 0777)
+ if err != nil {
+ t.Error(err)
+ }
+ subDir, err := ioutil.TempDir(pDir, "")
+ if err != nil {
+ t.Fatal(err)
+ }
+ fd, err := os.Create(subDir + "/gocryptfs.conf")
+ if err != nil {
+ t.Error(err)
+ } else {
+ fd.Close()
+ }
+}