@@ -108,6 +108,17 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
108108  } ) ) ; 
109109} 
110110
111+ // fs.lutimes 
112+ { 
113+   assert . throws ( ( )  =>  { 
114+     fs . lutimes ( blockedFile ,  new  Date ( ) ,  new  Date ( ) ,  ( )  =>  { } ) ; 
115+   } ,  common . expectsError ( { 
116+     code : 'ERR_ACCESS_DENIED' , 
117+     permission : 'FileSystemWrite' , 
118+     resource : path . toNamespacedPath ( blockedFile ) , 
119+   } ) ) ; 
120+ } 
121+ 
111122// fs.mkdir 
112123{ 
113124  assert . throws ( ( )  =>  { 
@@ -270,3 +281,101 @@ const absoluteProtectedFolder = path.resolve(relativeProtectedFolder);
270281    } ) ; 
271282  } 
272283} 
284+ 
285+ // fs.chmod 
286+ { 
287+   assert . throws ( ( )  =>  { 
288+     fs . chmod ( blockedFile ,  0o755 ,  common . mustNotCall ( ) ) ; 
289+   } ,  { 
290+     code : 'ERR_ACCESS_DENIED' , 
291+     permission : 'FileSystemWrite' , 
292+   } ) ; 
293+   assert . rejects ( async  ( )  =>  { 
294+     await  fs . promises . chmod ( blockedFile ,  0o755 ) ; 
295+   } ,  { 
296+     code : 'ERR_ACCESS_DENIED' , 
297+     permission : 'FileSystemWrite' , 
298+   } ) ; 
299+ } 
300+ 
301+ // fs.lchmod 
302+ { 
303+   if  ( common . isOSX )  { 
304+     assert . throws ( ( )  =>  { 
305+       fs . lchmod ( blockedFile ,  0o755 ,  common . mustNotCall ( ) ) ; 
306+     } ,  { 
307+       code : 'ERR_ACCESS_DENIED' , 
308+       permission : 'FileSystemWrite' , 
309+     } ) ; 
310+     assert . rejects ( async  ( )  =>  { 
311+       await  fs . promises . lchmod ( blockedFile ,  0o755 ) ; 
312+     } ,  { 
313+       code : 'ERR_ACCESS_DENIED' , 
314+       permission : 'FileSystemWrite' , 
315+     } ) ; 
316+   } 
317+ } 
318+ 
319+ // fs.appendFile 
320+ { 
321+   assert . throws ( ( )  =>  { 
322+     fs . appendFile ( blockedFile ,  'new data' ,  common . mustNotCall ( ) ) ; 
323+   } ,  { 
324+     code : 'ERR_ACCESS_DENIED' , 
325+     permission : 'FileSystemWrite' , 
326+   } ) ; 
327+   assert . rejects ( async  ( )  =>  { 
328+     await  fs . promises . appendFile ( blockedFile ,  'new data' ) ; 
329+   } ,  { 
330+     code : 'ERR_ACCESS_DENIED' , 
331+     permission : 'FileSystemWrite' , 
332+   } ) ; 
333+ } 
334+ 
335+ // fs.chown 
336+ { 
337+   assert . throws ( ( )  =>  { 
338+     fs . chown ( blockedFile ,  1541 ,  999 ,  common . mustNotCall ( ) ) ; 
339+   } ,  { 
340+     code : 'ERR_ACCESS_DENIED' , 
341+     permission : 'FileSystemWrite' , 
342+   } ) ; 
343+   assert . rejects ( async  ( )  =>  { 
344+     await  fs . promises . chown ( blockedFile ,  1541 ,  999 ) ; 
345+   } ,  { 
346+     code : 'ERR_ACCESS_DENIED' , 
347+     permission : 'FileSystemWrite' , 
348+   } ) ; 
349+ } 
350+ 
351+ // fs.lchown 
352+ { 
353+   assert . throws ( ( )  =>  { 
354+     fs . lchown ( blockedFile ,  1541 ,  999 ,  common . mustNotCall ( ) ) ; 
355+   } ,  { 
356+     code : 'ERR_ACCESS_DENIED' , 
357+     permission : 'FileSystemWrite' , 
358+   } ) ; 
359+   assert . rejects ( async  ( )  =>  { 
360+     await  fs . promises . lchown ( blockedFile ,  1541 ,  999 ) ; 
361+   } ,  { 
362+     code : 'ERR_ACCESS_DENIED' , 
363+     permission : 'FileSystemWrite' , 
364+   } ) ; 
365+ } 
366+ 
367+ // fs.link 
368+ { 
369+   assert . throws ( ( )  =>  { 
370+     fs . link ( blockedFile ,  path . join ( blockedFolder ,  '/linked' ) ,  common . mustNotCall ( ) ) ; 
371+   } ,  { 
372+     code : 'ERR_ACCESS_DENIED' , 
373+     permission : 'FileSystemWrite' , 
374+   } ) ; 
375+   assert . rejects ( async  ( )  =>  { 
376+     await  fs . promises . link ( blockedFile ,  path . join ( blockedFolder ,  '/linked' ) ) ; 
377+   } ,  { 
378+     code : 'ERR_ACCESS_DENIED' , 
379+     permission : 'FileSystemWrite' , 
380+   } ) ; 
381+ } 
0 commit comments