...
1
2
3
4 package fsutil
5
6 import (
7 "os"
8 "path/filepath"
9 "testing"
10
11 "github.com/stretchr/testify/assert"
12 )
13
14 func TestEnsureMaxPermissions(t *testing.T) {
15 tmp := t.TempDir()
16 p := filepath.Join(tmp, "file.txt")
17
18
19 err := os.WriteFile(p, []byte(`AAA`), 0644)
20 assert.NoError(t, err)
21
22
23 err = os.Chmod(p, 0464)
24 assert.NoError(t, err)
25 fi, err := os.Stat(p)
26 assert.NoError(t, err)
27 err = EnsureMaxPermissions(fi, os.FileMode(0464))
28 assert.NoError(t, err)
29
30
31 err = os.Chmod(p, 0642)
32 assert.NoError(t, err)
33 fi, err = os.Stat(p)
34 assert.NoError(t, err)
35 err = EnsureMaxPermissions(fi, os.FileMode(0642))
36 assert.NoError(t, err)
37
38
39 err = os.Chmod(p, 0444)
40 assert.NoError(t, err)
41 fi, err = os.Stat(p)
42 assert.NoError(t, err)
43 err = EnsureMaxPermissions(fi, os.ModeSymlink|os.ModeAppend|os.FileMode(0444))
44 assert.NoError(t, err)
45
46
47 err = os.Chmod(p, 0444)
48 assert.NoError(t, err)
49 fi, err = os.Stat(p)
50 assert.NoError(t, err)
51 err = EnsureMaxPermissions(fi, os.FileMode(0400))
52 assert.Error(t, err)
53
54
55 err = os.Chmod(p, 0444)
56 assert.NoError(t, err)
57 fi, err = os.Stat(p)
58 assert.NoError(t, err)
59 err = EnsureMaxPermissions(fi, os.FileMode(0222))
60 assert.Error(t, err)
61
62
63 err = os.Chmod(p, 0444)
64 assert.NoError(t, err)
65 fi, err = os.Stat(p)
66 assert.NoError(t, err)
67 err = EnsureMaxPermissions(fi, os.FileMode(0666))
68 assert.NoError(t, err)
69 }
70
View as plain text