All files / src/fs/operations-with-permissions directory-operations.js

100% Statements 40/40
90.91% Branches 20/22
100% Functions 9/9
100% Lines 33/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70        1x 1x 1x   6x 6x         1x 18x     1x 8x     1x 1x     1x 1x     28x 8x 1x     7x     20x 7x 1x     6x 1x     5x     32x 9x 1x     8x     1x 3x 1x     2x 1x     1x    
/**
 * Adds modification permissions to directory operations by wrapping
 * directory operations
 */
import * as DirectoryOperations from 'fs/operations/directory-operations';
import * as PermissionUtil from 'fs/util/permission-util';
import { makeError, fsErrorType } from 'fs/fs-error';
 
const makeDirectoryOperationPermissionError = (message = 'Cannot modify directory') => {
  return {
    err: makeError(fsErrorType.PERMISSION_DENIED, message)
  };
};
 
export const hasDirectory = (...args) => {
  return DirectoryOperations.hasDirectory(...args);
};
 
export const listDirectory = (...args) => {
  return DirectoryOperations.listDirectory(...args);
};
 
export const listDirectoryFiles = (...args) => {
  return DirectoryOperations.listDirectoryFiles(...args);
};
 
export const listDirectoryFolders = (...args) => {
  return DirectoryOperations.listDirectoryFolders(...args);
};
 
export const addDirectory = (fs, path, ...args) => {
  if (!PermissionUtil.canModifyPath(fs, path)) {
    return makeDirectoryOperationPermissionError();
  }
 
  return DirectoryOperations.addDirectory(fs, path, ...args);
};
 
export const copyDirectory = (fs, srcPath, destPath, ...args) => {
  if (!PermissionUtil.canModifyPath(fs, srcPath)) {
    return makeDirectoryOperationPermissionError('Cannot modify source directory');
  }
 
  if (!PermissionUtil.canModifyPath(fs, destPath)) {
    return makeDirectoryOperationPermissionError('Cannot modify dest directory');
  }
 
  return DirectoryOperations.copyDirectory(fs, srcPath, destPath, ...args);
};
 
export const deleteDirectory = (fs, path, ...args) => {
  if (!PermissionUtil.canModifyPath(fs, path)) {
    return makeDirectoryOperationPermissionError();
  }
 
  return DirectoryOperations.deleteDirectory(fs, path, ...args);
};
 
export const renameDirectory = (fs, currentPath, newPath) => {
  if (!PermissionUtil.canModifyPath(fs, currentPath)) {
    return makeDirectoryOperationPermissionError('Cannot modify current path');
  }
 
  if (!PermissionUtil.canModifyPath(fs, newPath)) {
    return makeDirectoryOperationPermissionError('Cannot modify renamed path');
  }
 
  return DirectoryOperations.renameDirectory(fs, currentPath, newPath);
};