Exemple #1
0
        /// <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();
        }
Exemple #2
0
 /// <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)
 {
 }