fix: check permissions at copy/move source and destination (#181)

This commit is contained in:
Henrique Dias
2024-08-21 18:15:32 +02:00
committed by GitHub
parent 4ad26dad35
commit 63449f1636
3 changed files with 81 additions and 24 deletions
+16 -3
View File
@@ -222,6 +222,7 @@ func TestServerRules(t *testing.T) {
dir := makeTestDirectory(t, map[string][]byte{
"foo.txt": []byte("foo"),
"bar.js": []byte("foo js"),
"a/foo.js": []byte("foo js"),
"a/foo.txt": []byte("foo txt"),
"b/foo.txt": []byte("foo b"),
@@ -240,11 +241,11 @@ users:
rules:
- regex: "^.+.js$"
permissions: R
- path: "/b"
- path: "/b/"
permissions: R
- path: "/a/foo.txt"
permissions: none
- path: "/c"
- path: "/c/"
permissions: none
`, dir))
@@ -252,7 +253,7 @@ users:
files, err := client.ReadDir("/")
require.NoError(t, err)
require.Len(t, files, 4)
require.Len(t, files, 5)
err = client.Write("/foo.txt", []byte("new"), 0666)
require.NoError(t, err)
@@ -260,6 +261,18 @@ users:
err = client.Write("/new.txt", []byte("new"), 0666)
require.NoError(t, err)
err = client.Copy("/bar.js", "/b/bar.js", false)
require.ErrorContains(t, err, "403")
err = client.Copy("/bar.js", "/bar.jsx", false)
require.NoError(t, err)
err = client.Copy("/b/foo.txt", "/foo1.txt", false)
require.NoError(t, err)
err = client.Rename("/b/foo.txt", "/foo2.txt", false)
require.ErrorContains(t, err, "403")
_, err = client.Read("/a/foo.txt")
require.ErrorContains(t, err, "403")