Skip to content

Commit 292d017

Browse files
RafaelGSSrichardlau
authored andcommitted
test: add URL tests to fs-write
PR-URL: #51352 Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: LiviaMedeiros <[email protected]>
1 parent 4a8a012 commit 292d017

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

test/fixtures/permission/fs-write.js

+76
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 blockedFileURL = require('url').pathToFileURL(process.env.BLOCKEDFILE);
1415
const relativeProtectedFile = process.env.RELATIVEBLOCKEDFILE;
1516
const relativeProtectedFolder = process.env.RELATIVEBLOCKEDFOLDER;
1617
const absoluteProtectedFile = path.resolve(relativeProtectedFile);
@@ -30,6 +31,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
3031
permission: 'FileSystemWrite',
3132
resource: path.toNamespacedPath(blockedFile),
3233
});
34+
assert.throws(() => {
35+
fs.writeFile(blockedFileURL, 'example', () => {});
36+
}, common.expectsError({
37+
code: 'ERR_ACCESS_DENIED',
38+
permission: 'FileSystemWrite',
39+
resource: path.toNamespacedPath(blockedFile),
40+
}));
3341
assert.throws(() => {
3442
fs.writeFile(relativeProtectedFile, 'example', () => {});
3543
}, {
@@ -91,6 +99,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
9199
permission: 'FileSystemWrite',
92100
resource: path.toNamespacedPath(blockedFile),
93101
});
102+
assert.throws(() => {
103+
fs.utimes(blockedFileURL, new Date(), new Date(), () => {});
104+
}, common.expectsError({
105+
code: 'ERR_ACCESS_DENIED',
106+
permission: 'FileSystemWrite',
107+
resource: path.toNamespacedPath(blockedFile),
108+
}));
94109
assert.throws(() => {
95110
fs.utimes(relativeProtectedFile, new Date(), new Date(), () => {});
96111
}, {
@@ -117,6 +132,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
117132
permission: 'FileSystemWrite',
118133
resource: path.toNamespacedPath(blockedFile),
119134
});
135+
assert.throws(() => {
136+
fs.lutimes(blockedFileURL, new Date(), new Date(), () => {});
137+
}, common.expectsError({
138+
code: 'ERR_ACCESS_DENIED',
139+
permission: 'FileSystemWrite',
140+
resource: path.toNamespacedPath(blockedFile),
141+
}));
120142
}
121143

122144
// fs.mkdir
@@ -169,6 +191,15 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
169191
permission: 'FileSystemWrite',
170192
resource: path.toNamespacedPath(blockedFile),
171193
});
194+
assert.throws(() => {
195+
fs.rename(blockedFileURL, path.join(blockedFile, 'renamed'), (err) => {
196+
assert.ifError(err);
197+
});
198+
}, common.expectsError({
199+
code: 'ERR_ACCESS_DENIED',
200+
permission: 'FileSystemWrite',
201+
resource: path.toNamespacedPath(blockedFile),
202+
}));
172203
assert.throws(() => {
173204
fs.rename(relativeProtectedFile, path.join(relativeProtectedFile, 'renamed'), (err) => {
174205
assert.ifError(err);
@@ -263,6 +294,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
263294
code: 'ERR_ACCESS_DENIED',
264295
permission: 'FileSystemWrite',
265296
});
297+
assert.throws(() => {
298+
fs.open(blockedFileURL, fs.constants.O_RDWR | 0x10000000, common.mustNotCall());
299+
}, {
300+
code: 'ERR_ACCESS_DENIED',
301+
permission: 'FileSystemWrite',
302+
});
266303
assert.rejects(async () => {
267304
await fs.promises.open(blockedFile, fs.constants.O_RDWR | fs.constants.O_NOFOLLOW);
268305
}, {
@@ -290,6 +327,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
290327
code: 'ERR_ACCESS_DENIED',
291328
permission: 'FileSystemWrite',
292329
});
330+
assert.throws(() => {
331+
fs.chmod(blockedFileURL, 0o755, common.mustNotCall());
332+
}, {
333+
code: 'ERR_ACCESS_DENIED',
334+
permission: 'FileSystemWrite',
335+
});
293336
assert.rejects(async () => {
294337
await fs.promises.chmod(blockedFile, 0o755);
295338
}, {
@@ -324,6 +367,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
324367
code: 'ERR_ACCESS_DENIED',
325368
permission: 'FileSystemWrite',
326369
});
370+
assert.throws(() => {
371+
fs.appendFile(blockedFileURL, 'new data', common.mustNotCall());
372+
}, {
373+
code: 'ERR_ACCESS_DENIED',
374+
permission: 'FileSystemWrite',
375+
});
327376
assert.rejects(async () => {
328377
await fs.promises.appendFile(blockedFile, 'new data');
329378
}, {
@@ -340,6 +389,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
340389
code: 'ERR_ACCESS_DENIED',
341390
permission: 'FileSystemWrite',
342391
});
392+
assert.throws(() => {
393+
fs.chown(blockedFileURL, 1541, 999, common.mustNotCall());
394+
}, {
395+
code: 'ERR_ACCESS_DENIED',
396+
permission: 'FileSystemWrite',
397+
});
343398
assert.rejects(async () => {
344399
await fs.promises.chown(blockedFile, 1541, 999);
345400
}, {
@@ -356,6 +411,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
356411
code: 'ERR_ACCESS_DENIED',
357412
permission: 'FileSystemWrite',
358413
});
414+
assert.throws(() => {
415+
fs.lchown(blockedFileURL, 1541, 999, common.mustNotCall());
416+
}, {
417+
code: 'ERR_ACCESS_DENIED',
418+
permission: 'FileSystemWrite',
419+
});
359420
assert.rejects(async () => {
360421
await fs.promises.lchown(blockedFile, 1541, 999);
361422
}, {
@@ -372,6 +433,12 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
372433
code: 'ERR_ACCESS_DENIED',
373434
permission: 'FileSystemWrite',
374435
});
436+
assert.throws(() => {
437+
fs.link(blockedFileURL, path.join(blockedFolder, '/linked'), common.mustNotCall());
438+
}, {
439+
code: 'ERR_ACCESS_DENIED',
440+
permission: 'FileSystemWrite',
441+
});
375442
assert.rejects(async () => {
376443
await fs.promises.link(blockedFile, path.join(blockedFolder, '/linked'));
377444
}, {
@@ -391,4 +458,13 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
391458
permission: 'FileSystemWrite',
392459
resource: path.toNamespacedPath(blockedFile),
393460
});
461+
assert.throws(() => {
462+
fs.unlink(blockedFileURL, (err) => {
463+
assert.ifError(err);
464+
});
465+
}, {
466+
code: 'ERR_ACCESS_DENIED',
467+
permission: 'FileSystemWrite',
468+
resource: path.toNamespacedPath(blockedFile),
469+
});
394470
}

0 commit comments

Comments
 (0)