diff options
Diffstat (limited to 'tests/reverse/force_owner_test.go')
-rw-r--r-- | tests/reverse/force_owner_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/reverse/force_owner_test.go b/tests/reverse/force_owner_test.go new file mode 100644 index 0000000..6e47b50 --- /dev/null +++ b/tests/reverse/force_owner_test.go @@ -0,0 +1,50 @@ +package reverse_test + +import ( + "io/ioutil" + "net/url" + "os" + "syscall" + "testing" + + "github.com/rfjakob/gocryptfs/v2/tests/test_helpers" +) + +func TestForceOwner(t *testing.T) { + // Let's not explode with "TempDir: pattern contains path separator" + myEscapedName := url.PathEscape(t.Name()) + mnt, err := ioutil.TempDir(test_helpers.TmpDir, myEscapedName) + if err != nil { + t.Fatal(err) + } + cliArgs := []string{"-reverse", "-zerokey", "-force_owner=1234:1234"} + if plaintextnames { + cliArgs = append(cliArgs, "-plaintextnames") + } else if deterministic_names { + cliArgs = append(cliArgs, "-deterministic-names") + } + test_helpers.MountOrFatal(t, "/", mnt, cliArgs...) + defer test_helpers.UnmountErr(mnt) + + entries, err := os.ReadDir(mnt) + if err != nil { + t.Fatal(err) + } + + // Check the mountpoint and everything inside it + toCheck := []string{mnt} + for _, e := range entries { + toCheck = append(toCheck, mnt+"/"+e.Name()) + } + + var st syscall.Stat_t + for _, path := range toCheck { + if err := syscall.Lstat(path, &st); err != nil { + t.Fatal(err) + } + if st.Uid != 1234 || st.Gid != 1234 { + t.Errorf("file %q: uid or gid != 1234: %#v", path, st) + } + } + +} |