/// <summary> /// Initializes a new instance of the <see cref="Sandbox"/> class. /// This constructor is solely for testing purposes and contains framework specific classes that cannot be tested. /// </summary> /// <param name="options"> /// Enables the user to control some aspects of Windows Sandbox. /// </param> /// <param name="sandboxConfigurationBuilder"> /// Generates windows configuration file. /// </param> /// <param name="createDirectory"> /// Delegate that takes file path as parameter and creates a directory. /// </param> /// <param name="deleteFiles"> /// Delegate that takes directory path as parameter and deletes all files inside it. /// </param> /// <param name="deleteDirectories"> /// Delegate that takes directory path as parameter and deletes all directories and sub directories inside it. /// </param> /// <param name="startProcess"> /// Delegate that takes std in string as parameter and start a process with supplied string as std in. /// </param> /// <param name="literalScriptFactory"> /// Simple factory that calls process method of <see cref="IScript"/> which causes side effect and is not unit test friendly. /// </param> /// <exception cref="ArgumentNullException">Thrown when any of the parameters are null.</exception> internal Sandbox( IOptions options, ISandboxConfigurationBuilder sandboxConfigurationBuilder, Action <string> createDirectory, Action <string> deleteFiles, Action <string> deleteDirectories, Func <string, Task> startProcess, Func <IList <string>, IPowershellTranslator, string, IOptions, Task <LiteralScript> > literalScriptFactory) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (sandboxConfigurationBuilder == null) { throw new ArgumentNullException(nameof(sandboxConfigurationBuilder)); } if (createDirectory == null) { throw new ArgumentNullException(nameof(createDirectory)); } if (deleteFiles == null) { throw new ArgumentNullException(nameof(deleteFiles)); } if (deleteDirectories == null) { throw new ArgumentNullException(nameof(deleteDirectories)); } if (startProcess == null) { throw new ArgumentNullException(nameof(options)); } if (literalScriptFactory == null) { throw new ArgumentNullException(nameof(literalScriptFactory)); } _options = options; _sandboxConfigurationBuilder = sandboxConfigurationBuilder; _createDirectory = createDirectory; _deleteFiles = deleteFiles; _deleteDirectories = deleteDirectories; _startProcess = startProcess; _literalScriptFactory = literalScriptFactory; InitializeDirectoryStructure(); }
/// <summary> /// Initializes a new instance of the <see cref="Sandbox"/> class. /// </summary> /// <param name="options"> /// Enables the user to control some aspects of Windows Sandbox. /// </param> /// <param name="sandboxConfigurationBuilder"> /// Generates windows sandbox configuration file. /// </param> public Sandbox( IOptions options, ISandboxConfigurationBuilder sandboxConfigurationBuilder) : this( options, sandboxConfigurationBuilder, FileSystemAbstractions.CreateDirectory, FileSystemAbstractions.DeleteFilesInDirectory, FileSystemAbstractions.DeleteDirectoriesInDirectory, ProcessAbstractions.StartCmdWithInput, ScriptFactories.ProcessLiteralScriptFactory) { }