public async Task ShouldGenerateCorrectConfigurationPath() { string mockLogonCommand = "Mock logon command"; string filePath = string.Empty; IOptions options = new Options(); Configuration configuration = new Configuration(); XmlSerializer xmlSerializer = new XmlSerializer(typeof(Configuration)); XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; Func <string, byte[], CancellationToken, Task> writeAllBytesAsync = (path, content, token) => { filePath = path; return(Task.CompletedTask); }; ISandboxConfigurationBuilder sandboxConfigurationBuilder = new SandboxConfigurationBuilder( options, configuration, xmlSerializer, xmlSerializerNamespaces, xmlWriterSettings, writeAllBytesAsync); await sandboxConfigurationBuilder.Build(mockLogonCommand); string expected = Path.Combine(options.RootFilesDirectoryLocation, options.SandboxConfigurationFileName); string actual = filePath; Assert.Equal(expected, actual); }
public void ShouldInitializeWithOption() { IOptions options = new Options(); SandboxConfigurationBuilder sandboxConfigurationBuilder = new SandboxConfigurationBuilder(options); // We basically check here that no exception is thrown during initialization. Assert.True(true); }
public async Task ShouldGenerateCorrectConfigurationContent() { UTF8Encoding uTF8Encoding = new UTF8Encoding(); string builderContent = string.Empty; string mockLogonCommand = "Mock logon command"; IOptions options = new Options() { RootFilesDirectoryLocation = @"C:\Sandbox", }; Configuration configuration = new Configuration(); XmlSerializer xmlSerializer = new XmlSerializer(typeof(Configuration)); XmlSerializerNamespaces xmlSerializerNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); XmlWriterSettings xmlWriterSettings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true }; Func <string, byte[], CancellationToken, Task> writeAllBytesAsync = (path, content, token) => { builderContent = uTF8Encoding.GetString(content); return(Task.CompletedTask); }; ISandboxConfigurationBuilder sandboxConfigurationBuilder = new SandboxConfigurationBuilder( options, configuration, xmlSerializer, xmlSerializerNamespaces, xmlWriterSettings, writeAllBytesAsync); await sandboxConfigurationBuilder.Build(mockLogonCommand); string actual = builderContent; string expected = @"<Configuration> <VGpu>Disabled</VGpu> <Networking>Default</Networking> <MappedFolders> <MappedFolder> <HostFolder>C:\Sandbox</HostFolder> <SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop\Sandbox\</SandboxFolder> <ReadOnly>false</ReadOnly> </MappedFolder> </MappedFolders> <LogonCommand> <Command>Mock logon command</Command> </LogonCommand> <AudioInput>Default</AudioInput> <VideoInput>Default</VideoInput> <ProtectedClient>Default</ProtectedClient> <PrinterRedirection>Default</PrinterRedirection> <ClipboardRedirection>Default</ClipboardRedirection> <MemoryInMB>0</MemoryInMB> </Configuration>"; Assert.Equal(expected, actual, ignoreLineEndingDifferences: true); }
public void ShouldThrowArgumentNullExceptionWithoutLiteralScriptFactory() { IOptions options = new Options(); ISandboxConfigurationBuilder configurationBuilder = new SandboxConfigurationBuilder(options); Action <string> createDirectory = path => { }; Action <string> deleteFiles = path => { }; Action <string> deleteDirectories = path => { }; Func <string, Task> startProcess = path => Task.CompletedTask; Assert.Throws <ArgumentNullException>(() => new Sandbox(options, configurationBuilder, createDirectory, deleteFiles, deleteDirectories, startProcess, null)); }
public void ShouldThrowArgumentNullExceptionWithoutEnumerateFiles() { IOptions options = new Options(); ISandboxConfigurationBuilder configurationBuilder = new SandboxConfigurationBuilder(options); Action <string> createDirectory = path => { }; Action <string> deleteDirectories = path => { }; Func <string, Task> startProcess = path => Task.CompletedTask; Func <IList <string>, IPowershellTranslator, string, IOptions, Task <LiteralScript> > literalScriptFactory = (scripts, translator, name, options) => { Func <string, byte[], CancellationToken, Task> writeAllBytes = (path, content, token) => Task.CompletedTask; return(Task.FromResult(new LiteralScript(scripts, translator, name, writeAllBytes))); }; Assert.Throws <ArgumentNullException>(() => new Sandbox(options, configurationBuilder, createDirectory, null, deleteDirectories, startProcess, literalScriptFactory)); }
public void ShouldInitializeWithAllParameters() { IOptions options = new Options(); ISandboxConfigurationBuilder configurationBuilder = new SandboxConfigurationBuilder(new Options()); Action <string> createDirectory = path => { }; Action <string> deleteFiles = path => { }; Action <string> deleteDirectories = path => { }; Func <string, Task> startProcess = path => Task.CompletedTask; Func <IList <string>, IPowershellTranslator, string, IOptions, Task <LiteralScript> > literalScriptFactory = (scripts, translator, name, options) => { Func <string, byte[], CancellationToken, Task> writeAllBytes = (path, content, token) => Task.CompletedTask; return(Task.FromResult(new LiteralScript(scripts, translator, name, writeAllBytes))); }; new Sandbox(options, configurationBuilder, createDirectory, deleteFiles, deleteDirectories, startProcess, literalScriptFactory); Assert.True(true); }
public async Task ShouldBuildCorrectMainScriptContentWithSingleScript() { IList <string> actualScripts = new List <string>(); IOptions options = new Options(); ISandboxConfigurationBuilder configurationBuilder = new SandboxConfigurationBuilder(new Options()); Action <string> createDirectory = path => { }; Action <string> deleteFiles = path => { }; Action <string> deleteDirectories = path => { }; Func <string, Task> startProcess = path => Task.CompletedTask; Func <string, byte[], CancellationToken, Task> writeAllBytes = (path, content, token) => Task.CompletedTask; Func <string, string, CancellationToken, Task> copyFiles = (source, destination, token) => Task.CompletedTask; Func <IList <string>, IPowershellTranslator, string, IOptions, Task <LiteralScript> > literalScriptFactory = async(scripts, translator, name, options) => { actualScripts = scripts; var literalScript = new LiteralScript(scripts, translator, name, writeAllBytes); await literalScript.Process(options); return(literalScript); }; var sandbox = new Sandbox(options, configurationBuilder, createDirectory, deleteFiles, deleteDirectories, startProcess, literalScriptFactory); await sandbox.Run( // Raw script that will be executed new LiteralScript(new List <string>() { @"Start-Process 'C:\windows\system32\notepad.exe'" }, new PowershellTranslator(null, () => 1000), "mockScriptName1.ps1", writeAllBytes)); IList <string> expected = new List <string>() { @"powershell.exe -ExecutionPolicy Bypass -File C:\Users\WDAGUtilityAccount\Desktop\Sandbox\mockScriptName1.ps1 3>&1 2>&1 > ""C:\Users\WDAGUtilityAccount\Desktop\Log_1000.txt""", }; IList <string> actual = actualScripts; Assert.Equal(expected, actual); }
public void IsISandboxConfigurationBuilderAssignableToSandboxConfigurationBuilder() { SandboxConfigurationBuilder sandboxConfigurationBuilder = new SandboxConfigurationBuilder(new Options()); Assert.IsAssignableFrom <ISandboxConfigurationBuilder>(sandboxConfigurationBuilder); }