Skip to content

Commit e1b42e7

Browse files
RafaelGSSaduh95
authored andcommitted
test: add buffer to fs_permission tests
PR-URL: #55734 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent 5767b76 commit e1b42e7

File tree

2 files changed

+117
-0
lines changed

2 files changed

+117
-0
lines changed

test/fixtures/permission/fs-read.js

+54
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ const regularFile = __filename;
2121
permission: 'FileSystemRead',
2222
resource: path.toNamespacedPath(blockedFile),
2323
}));
24+
fs.readFile(bufferBlockedFile, common.expectsError({
25+
code: 'ERR_ACCESS_DENIED',
26+
permission: 'FileSystemRead',
27+
resource: path.toNamespacedPath(blockedFile),
28+
}));
2429
assert.throws(() => {
2530
fs.readFileSync(blockedFile);
2631
}, common.expectsError({
@@ -79,6 +84,11 @@ const regularFile = __filename;
7984
permission: 'FileSystemRead',
8085
resource: path.toNamespacedPath(blockedFile),
8186
}));
87+
fs.stat(bufferBlockedFile, common.expectsError({
88+
code: 'ERR_ACCESS_DENIED',
89+
permission: 'FileSystemRead',
90+
resource: path.toNamespacedPath(blockedFile),
91+
}));
8292
assert.throws(() => {
8393
fs.statSync(blockedFile);
8494
}, common.expectsError({
@@ -112,6 +122,11 @@ const regularFile = __filename;
112122
permission: 'FileSystemRead',
113123
resource: path.toNamespacedPath(blockedFile),
114124
}));
125+
fs.access(bufferBlockedFile, fs.constants.R_OK, common.expectsError({
126+
code: 'ERR_ACCESS_DENIED',
127+
permission: 'FileSystemRead',
128+
resource: path.toNamespacedPath(blockedFile),
129+
}));
115130
assert.throws(() => {
116131
fs.accessSync(blockedFileURL, fs.constants.R_OK);
117132
}, common.expectsError({
@@ -140,6 +155,11 @@ const regularFile = __filename;
140155
permission: 'FileSystemRead',
141156
resource: path.toNamespacedPath(blockedFile),
142157
}));
158+
fs.copyFile(bufferBlockedFile, path.join(blockedFolder, 'any-other-file'), common.expectsError({
159+
code: 'ERR_ACCESS_DENIED',
160+
permission: 'FileSystemRead',
161+
resource: path.toNamespacedPath(blockedFile),
162+
}));
143163
assert.throws(() => {
144164
fs.copyFileSync(blockedFileURL, path.join(blockedFolder, 'any-other-file'));
145165
}, common.expectsError({
@@ -165,6 +185,13 @@ const regularFile = __filename;
165185
permission: 'FileSystemRead',
166186
resource: path.toNamespacedPath(blockedFile),
167187
}));
188+
assert.throws(() => {
189+
fs.cpSync(bufferBlockedFile, path.join(blockedFolder, 'any-other-file'));
190+
}, common.expectsError({
191+
code: 'ERR_ACCESS_DENIED',
192+
permission: 'FileSystemRead',
193+
resource: path.toNamespacedPath(blockedFile),
194+
}));
168195
assert.throws(() => {
169196
fs.cpSync(blockedFileURL, path.join(blockedFolder, 'any-other-file'));
170197
}, common.expectsError({
@@ -188,6 +215,11 @@ const regularFile = __filename;
188215
permission: 'FileSystemRead',
189216
resource: path.toNamespacedPath(blockedFile),
190217
}));
218+
fs.open(bufferBlockedFile, 'r', common.expectsError({
219+
code: 'ERR_ACCESS_DENIED',
220+
permission: 'FileSystemRead',
221+
resource: path.toNamespacedPath(blockedFile),
222+
}));
191223
assert.throws(() => {
192224
fs.openSync(blockedFileURL, 'r');
193225
}, common.expectsError({
@@ -312,6 +344,11 @@ const regularFile = __filename;
312344
permission: 'FileSystemRead',
313345
resource: path.toNamespacedPath(blockedFile),
314346
}));
347+
fs.rename(bufferBlockedFile, 'newfile', common.expectsError({
348+
code: 'ERR_ACCESS_DENIED',
349+
permission: 'FileSystemRead',
350+
resource: path.toNamespacedPath(blockedFile),
351+
}));
315352
assert.throws(() => {
316353
fs.renameSync(blockedFile, 'newfile');
317354
}, common.expectsError({
@@ -337,6 +374,13 @@ const regularFile = __filename;
337374
permission: 'FileSystemRead',
338375
resource: path.toNamespacedPath(blockedFile),
339376
}));
377+
assert.throws(() => {
378+
fs.openAsBlob(bufferBlockedFile);
379+
}, common.expectsError({
380+
code: 'ERR_ACCESS_DENIED',
381+
permission: 'FileSystemRead',
382+
resource: path.toNamespacedPath(blockedFile),
383+
}));
340384
assert.throws(() => {
341385
fs.openAsBlob(blockedFileURL);
342386
}, common.expectsError({
@@ -371,6 +415,11 @@ const regularFile = __filename;
371415
permission: 'FileSystemRead',
372416
resource: path.toNamespacedPath(blockedFile),
373417
}));
418+
fs.statfs(bufferBlockedFile, common.expectsError({
419+
code: 'ERR_ACCESS_DENIED',
420+
permission: 'FileSystemRead',
421+
resource: path.toNamespacedPath(blockedFile),
422+
}));
374423
assert.throws(() => {
375424
fs.statfsSync(blockedFile);
376425
}, common.expectsError({
@@ -405,6 +454,11 @@ const regularFile = __filename;
405454
}, common.expectsError({
406455
code: 'ERR_ACCESS_DENIED',
407456
}));
457+
assert.throws(() => {
458+
fs.lstatSync(bufferBlockedFile);
459+
}, common.expectsError({
460+
code: 'ERR_ACCESS_DENIED',
461+
}));
408462
assert.throws(() => {
409463
fs.lstatSync(path.join(blockedFolder, 'anyfile'));
410464
}, common.expectsError({

test/fixtures/permission/fs-write.js

+63
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const regularFolder = process.env.ALLOWEDFOLDER;
1111
const regularFile = process.env.ALLOWEDFILE;
1212
const blockedFolder = process.env.BLOCKEDFOLDER;
1313
const blockedFile = process.env.BLOCKEDFILE;
14+
const bufferBlockedFile = Buffer.from(process.env.BLOCKEDFILE);
1415
const blockedFileURL = require('url').pathToFileURL(process.env.BLOCKEDFILE);
1516
const relativeProtectedFile = process.env.RELATIVEBLOCKEDFILE;
1617
const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
@@ -34,6 +35,11 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
3435
permission: 'FileSystemWrite',
3536
resource: path.toNamespacedPath(blockedFile),
3637
}));
38+
fs.writeFile(bufferBlockedFile, 'example', common.expectsError({
39+
code: 'ERR_ACCESS_DENIED',
40+
permission: 'FileSystemWrite',
41+
resource: path.toNamespacedPath(blockedFile),
42+
}));
3743
assert.throws(() => {
3844
fs.writeFileSync(blockedFileURL, 'example');
3945
}, {
@@ -102,6 +108,13 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
102108
permission: 'FileSystemWrite',
103109
resource: path.toNamespacedPath(blockedFile),
104110
});
111+
assert.throws(() => {
112+
fs.utimes(bufferBlockedFile, new Date(), new Date(), () => {});
113+
}, {
114+
code: 'ERR_ACCESS_DENIED',
115+
permission: 'FileSystemWrite',
116+
resource: path.toNamespacedPath(blockedFile),
117+
});
105118
assert.throws(() => {
106119
fs.utimes(blockedFileURL, new Date(), new Date(), () => {});
107120
}, {
@@ -135,6 +148,13 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
135148
permission: 'FileSystemWrite',
136149
resource: path.toNamespacedPath(blockedFile),
137150
});
151+
assert.throws(() => {
152+
fs.lutimes(bufferBlockedFile, new Date(), new Date(), () => {});
153+
},{
154+
code: 'ERR_ACCESS_DENIED',
155+
permission: 'FileSystemWrite',
156+
resource: path.toNamespacedPath(blockedFile),
157+
});
138158
assert.throws(() => {
139159
fs.lutimes(blockedFileURL, new Date(), new Date(), () => {});
140160
}, {
@@ -193,6 +213,11 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
193213
permission: 'FileSystemWrite',
194214
resource: path.toNamespacedPath(blockedFile),
195215
}));
216+
fs.rename(bufferBlockedFile, path.join(blockedFile, 'renamed'), common.expectsError({
217+
code: 'ERR_ACCESS_DENIED',
218+
permission: 'FileSystemWrite',
219+
resource: path.toNamespacedPath(blockedFile),
220+
}));
196221
assert.throws(() => {
197222
fs.renameSync(blockedFileURL, path.join(blockedFile, 'renamed'));
198223
}, {
@@ -245,6 +270,11 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
245270
permission: 'FileSystemWrite',
246271
resource: path.toNamespacedPath(path.join(relativeProtectedFolder, 'any-file')),
247272
}));
273+
fs.copyFile(bufferBlockedFile, path.join(relativeProtectedFolder, 'any-file'), common.expectsError({
274+
code: 'ERR_ACCESS_DENIED',
275+
permission: 'FileSystemWrite',
276+
resource: path.toNamespacedPath(path.join(relativeProtectedFolder, 'any-file')),
277+
}));
248278
}
249279

250280
// fs.cp
@@ -295,6 +325,10 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
295325
code: 'ERR_ACCESS_DENIED',
296326
permission: 'FileSystemWrite',
297327
}));
328+
fs.open(bufferBlockedFile, fs.constants.O_RDWR | 0x10000000, common.expectsError({
329+
code: 'ERR_ACCESS_DENIED',
330+
permission: 'FileSystemWrite',
331+
}));
298332
assert.rejects(async () => {
299333
await fs.promises.open(blockedFile, fs.constants.O_RDWR | fs.constants.O_NOFOLLOW);
300334
}, {
@@ -322,6 +356,12 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
322356
code: 'ERR_ACCESS_DENIED',
323357
permission: 'FileSystemWrite',
324358
});
359+
assert.throws(() => {
360+
fs.chmod(bufferBlockedFile, 0o755, common.mustNotCall());
361+
}, {
362+
code: 'ERR_ACCESS_DENIED',
363+
permission: 'FileSystemWrite',
364+
});
325365
assert.throws(() => {
326366
fs.chmod(blockedFileURL, 0o755, common.mustNotCall());
327367
}, {
@@ -358,6 +398,10 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
358398
code: 'ERR_ACCESS_DENIED',
359399
permission: 'FileSystemWrite',
360400
}));
401+
fs.appendFile(bufferBlockedFile, 'new data', common.expectsError({
402+
code: 'ERR_ACCESS_DENIED',
403+
permission: 'FileSystemWrite',
404+
}));
361405
assert.throws(() => {
362406
fs.appendFileSync(blockedFileURL, 'new data');
363407
}, {
@@ -378,6 +422,10 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
378422
code: 'ERR_ACCESS_DENIED',
379423
permission: 'FileSystemWrite',
380424
}));
425+
fs.chown(bufferBlockedFile, 1541, 999, common.expectsError({
426+
code: 'ERR_ACCESS_DENIED',
427+
permission: 'FileSystemWrite',
428+
}));
381429
assert.throws(() => {
382430
fs.chownSync(blockedFileURL, 1541, 999);
383431
}, {
@@ -399,6 +447,10 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
399447
code: 'ERR_ACCESS_DENIED',
400448
permission: 'FileSystemWrite',
401449
}));
450+
fs.lchown(bufferBlockedFile, 1541, 999, common.expectsError({
451+
code: 'ERR_ACCESS_DENIED',
452+
permission: 'FileSystemWrite',
453+
}));
402454
assert.throws(() => {
403455
fs.lchownSync(blockedFileURL, 1541, 999);
404456
}, {
@@ -426,6 +478,10 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
426478
code: 'ERR_ACCESS_DENIED',
427479
permission: 'FileSystemWrite',
428480
}));
481+
fs.link(bufferBlockedFile, path.join(blockedFolder, '/linked'), common.expectsError({
482+
code: 'ERR_ACCESS_DENIED',
483+
permission: 'FileSystemWrite',
484+
}));
429485
assert.throws(() => {
430486
fs.linkSync(blockedFileURL, path.join(blockedFolder, '/linked'));
431487
}, {
@@ -450,6 +506,13 @@ const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
450506
permission: 'FileSystemWrite',
451507
resource: path.toNamespacedPath(blockedFile),
452508
});
509+
assert.throws(() => {
510+
fs.unlinkSync(bufferBlockedFile);
511+
}, {
512+
code: 'ERR_ACCESS_DENIED',
513+
permission: 'FileSystemWrite',
514+
resource: path.toNamespacedPath(blockedFile),
515+
});
453516
fs.unlink(blockedFile, common.expectsError({
454517
code: 'ERR_ACCESS_DENIED',
455518
permission: 'FileSystemWrite',

0 commit comments

Comments
 (0)