public void SubDirectoriesExistWhenCreated()
        {
            var state = new FileSystemState();
            var root  = state.GetRootDirectory();

            var isAddDirectorySuccess = _directoryController.TryAddDirectory("Test", new Permission(), root, out var testDirectory);

            Assert.IsTrue(isAddDirectorySuccess);
            Assert.IsNotNull(root.SubDirectories);
            Assert.That(root.SubDirectories.Contains(testDirectory));
        }
Esempio n. 2
0
        public string ExecuteCommand(params string[] args)
        {
            // Validate the arguments to the command
            if (!TryValidateArguments(out var validationResponse, args))
            {
                return(validationResponse);
            }

            // Execute the valid command logic
            var targetPlanetName = args.LastOrDefault();

            // Try to initialize a new directory for this planet
            var rootDirectory    = _fileSystemState.GetRootDirectory();
            var planetPermission = _permissionController.GetCustomPermission(canRead: true, canExecute: true);

            var isAddPlanetDirectorySuccess = _directoryController.TryAddDirectory(targetPlanetName, planetPermission, rootDirectory, out var targetPlanetDirectory);

            if (!isAddPlanetDirectorySuccess)
            {
                return($"Error - Failed to initialize planet `{targetPlanetName}`");
            }

            // Once we know we have a planet folder initialized, set it up with all the needed sub-directories for a planet
            // TODO - Setup the sub-directories for a planet

            return(null);
        }
Esempio n. 3
0
        public void InitializeFileSystemState(
            FileSystemState fileSystemState,
            PermissionController permissionController,
            DirectoryController directoryController)
        {
            // TODO - Make it so that all actions are permission based (add requires write access, so does delete, need read access to look at anything, execute to run something, etc)
            var home = fileSystemState.GetHomeDirectory();

            var planetDirectoryPermission   = permissionController.GetCustomPermission(canRead: true, canExecute: true);
            var isAddPlanetDirectorySuccess = directoryController.TryAddDirectory("planets", planetDirectoryPermission, home, out _);

            Debug.Assert(isAddPlanetDirectorySuccess, $"Failed to add `planets` directory under `{home.Name}` directory");
        }
Esempio n. 4
0
        public void InitializeCommandsInFileSystemState(
            FileSystemState fileSystemState,
            PermissionController permissionController,
            DirectoryController directoryController,
            FileController fileController,
            IList <string> commandNames)
        {
            var root = fileSystemState.GetRootDirectory();

            var binDirectoryPermission   = permissionController.GetCustomPermission(canRead: true, canExecute: true);
            var isAddBinDirectorySuccess = directoryController.TryAddDirectory("bin", binDirectoryPermission, root, out var binDirectory);

            Debug.Assert(isAddBinDirectorySuccess, $"Failed to add `bin` directory under `{root.Name}` directory");

            foreach (var commandName in commandNames)
            {
                var filePermission          = permissionController.GetCustomPermission(canExecute: true);
                var isAddCommandFileSuccess = fileController.TryAddFile(commandName, FileExtension.exe, filePermission, binDirectory, out _);

                Debug.Assert(isAddCommandFileSuccess, $"Failed to add `{commandName}{FileExtension.exe.ToString()}` file under `{binDirectory.Name}` directory");
            }
        }