1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs2;
18
19 import java.io.OutputStream;
20 import java.nio.charset.StandardCharsets;
21
22 import org.apache.commons.lang3.SystemUtils;
23 import org.apache.commons.vfs2.provider.local.LocalFileSystem;
24 import org.junit.Test;
25 import org.junit.jupiter.api.Assertions;
26
27
28
29
30
31
32 public class PermissionsTests extends AbstractProviderTestCase {
33
34 public static final String FILENAME = "permission.txt";
35
36 private FileObject createTestFile() throws Exception {
37
38 final FileObject scratchFolder = getWriteFolder();
39 assertNotNull(scratchFolder);
40
41
42 scratchFolder.delete(Selectors.EXCLUDE_SELF);
43 scratchFolder.createFolder();
44
45
46 final FileObject file = scratchFolder.resolveFile(FILENAME);
47 assertFalse(file.exists());
48
49
50 final String content = "Here is some sample content for the file. Blah Blah Blah.";
51
52 try (OutputStream os = file.getContent().getOutputStream()) {
53 os.write(content.getBytes(StandardCharsets.UTF_8));
54 }
55 return file;
56 }
57
58
59
60
61 @Override
62 protected Capability[] getRequiredCapabilities() {
63 return new Capability[] { Capability.CREATE, Capability.DELETE, Capability.READ_CONTENT,
64 Capability.WRITE_CONTENT, };
65 }
66
67
68
69
70 private boolean isWindows() {
71 return SystemUtils.IS_OS_WINDOWS && getFileSystem() instanceof LocalFileSystem;
72 }
73
74
75
76
77 @Override
78 protected void tearDown() throws Exception {
79 final FileObject scratchFolder = getWriteFolder();
80 final FileObject file = scratchFolder.resolveFile(FILENAME);
81 file.setWritable(true, true);
82 file.delete();
83
84 super.tearDown();
85 }
86
87
88
89
90 @Test
91 public void testExecutable() throws Exception {
92 final FileObject file = createTestFile();
93
94
95 if (isWindows()) {
96 Assertions.assertTrue(file.isExecutable(), "File expected to be executable: " + file);
97
98 } else {
99
100 Assertions.assertTrue(file.setExecutable(true, true), "Setting executable permission failed: " + file);
101 Assertions.assertTrue(file.isExecutable(), "File expected to be executable: " + file);
102
103
104 Assertions.assertTrue(file.setExecutable(true, false), "Setting executable permission failed: " + file);
105 Assertions.assertTrue(file.isExecutable(), "File expected to be executable: " + file);
106
107
108 Assertions.assertTrue(file.setExecutable(false, true), "Setting executable permission failed: " + file);
109 Assertions.assertFalse(file.isExecutable(), "File expected to be not executable: " + file);
110 }
111 }
112
113
114
115
116 @Test
117 public void testReadable() throws Exception {
118 final FileObject file = createTestFile();
119
120 if (isWindows()) {
121
122 Assertions.assertTrue(file.isReadable(), "File expected to be readable: " + file);
123 } else {
124
125 Assertions.assertTrue(file.setReadable(true, true), "Setting read permission failed: " + file);
126 Assertions.assertTrue(file.isReadable(), "File expected to be readable: " + file);
127
128
129 Assertions.assertTrue(file.setReadable(true, false), "Setting read permission failed: " + file);
130 Assertions.assertTrue(file.isReadable(), "File expected to be readable: " + file);
131
132
133 Assertions.assertTrue(file.setReadable(false, true), "Setting read permission failed: " + file);
134 Assertions.assertFalse(file.isReadable(), "File expected to be not readable: " + file);
135 }
136 }
137
138
139
140
141 @Test
142 public void testWriteable() throws Exception {
143 final FileObject file = createTestFile();
144
145
146 Assertions.assertTrue(file.setWritable(true, true), "Setting write permission failed: " + file);
147 Assertions.assertTrue(file.isWriteable(), "File expected to be writable: " + file);
148
149
150 Assertions.assertTrue(file.setWritable(true, false), "Setting write permission failed: " + file);
151 Assertions.assertTrue(file.isWriteable(), "File expected to be writable: " + file);
152
153
154 Assertions.assertTrue(file.setWritable(false, true), "Setting write permission failed: " + file);
155 Assertions.assertFalse(file.isWriteable(), "File expected to be not writable: " + file);
156 }
157
158 }