public async Task TestCaptureMissingFolder() { var setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"test1.ini", @"test2.ini", @"subfolder\test1.ini" }) }; var logging = new LoggerFactory(); var logger = logging.CreateLogger <FilesSettingHandler>(); var fileManager = new MockFileManager(); var handler = new FilesSettingHandler(setting, fileManager, logger); var result = await handler.Capture(); Assert.False(result.Success); }
public async Task TestCaptureWildcards() { var setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"*", }) }; var logging = new LoggerFactory(); var logger = logging.CreateLogger <FilesSettingHandler>(); var fileManager = new MockFileManager(); fileManager.CreateDirectory(@"C:\test\settings"); fileManager.CreateDirectory(@"C:\test\settings\subfolder"); await fileManager.WriteAllBytes(@"C:\test\settings\test1.ini", new byte[] { 0x00, 0x01, 0x02, 0x03 }); await fileManager.WriteAllBytes(@"C:\test\settings\test2.ini", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\subfolder\test1.ini", new byte[] { 0x10, 0x11, 0x12, 0x13 }); var handler = new FilesSettingHandler(setting, fileManager, logger); var result = await handler.Capture(); Assert.True(result.Success); Assert.IsType <Dictionary <string, object> >(result.Value); var dictionaryValue = (Dictionary <string, object>)result.Value; Assert.True(dictionaryValue.TryGetValue("files", out var filesObject)); Assert.IsType <Dictionary <string, object>[]>(filesObject); var filesArray = (Dictionary <string, object>[])filesObject; Assert.Equal(2, filesArray.Length); Assert.IsType <Dictionary <string, object> >(filesArray[0]); var fileDictionary = (Dictionary <string, object>)filesArray[0]; Assert.True(fileDictionary.TryGetValue("relative_path", out var relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test1.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out var b64gzip)); Assert.IsType <string>(b64gzip); var contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x00, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x02, contents[2]); Assert.Equal(0x03, contents[3]); Assert.IsType <Dictionary <string, object> >(filesArray[1]); fileDictionary = (Dictionary <string, object>)filesArray[1]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test2.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x01, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x01, contents[2]); Assert.Equal(0x01, contents[3]); setting = new Setting() { Name = "configuration", HandlerDescription = new FilesSettingHandlerDescription(@"C:\test\settings", new string[] { @"*.ini", @"subfolder\test*" }) }; logging = new LoggerFactory(); logger = logging.CreateLogger <FilesSettingHandler>(); fileManager = new MockFileManager(); fileManager.CreateDirectory(@"C:\test\settings"); fileManager.CreateDirectory(@"C:\test\settings\subfolder"); await fileManager.WriteAllBytes(@"C:\test\settings\test1.ini", new byte[] { 0x00, 0x01, 0x02, 0x03 }); await fileManager.WriteAllBytes(@"C:\test\settings\test2.ini", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\test.xyz", new byte[] { 0x01, 0x01, 0x01, 0x01 }); await fileManager.WriteAllBytes(@"C:\test\settings\subfolder\test1.ini", new byte[] { 0x10, 0x11, 0x12, 0x13 }); await fileManager.WriteAllBytes(@"C:\test\settings\nottest.xyz", new byte[] { 0x01, 0x01, 0x01, 0x01 }); handler = new FilesSettingHandler(setting, fileManager, logger); result = await handler.Capture(); Assert.True(result.Success); Assert.IsType <Dictionary <string, object> >(result.Value); dictionaryValue = (Dictionary <string, object>)result.Value; Assert.True(dictionaryValue.TryGetValue("files", out filesObject)); Assert.IsType <Dictionary <string, object>[]>(filesObject); filesArray = (Dictionary <string, object>[])filesObject; Assert.Equal(3, filesArray.Length); Assert.IsType <Dictionary <string, object> >(filesArray[0]); fileDictionary = (Dictionary <string, object>)filesArray[0]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test1.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x00, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x02, contents[2]); Assert.Equal(0x03, contents[3]); Assert.IsType <Dictionary <string, object> >(filesArray[1]); fileDictionary = (Dictionary <string, object>)filesArray[1]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"test2.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x01, contents[0]); Assert.Equal(0x01, contents[1]); Assert.Equal(0x01, contents[2]); Assert.Equal(0x01, contents[3]); Assert.IsType <Dictionary <string, object> >(filesArray[2]); fileDictionary = (Dictionary <string, object>)filesArray[2]; Assert.True(fileDictionary.TryGetValue("relative_path", out relativePathObject)); Assert.IsType <string>(relativePathObject); Assert.Equal(@"subfolder\test1.ini", (string)relativePathObject); Assert.True(fileDictionary.TryGetValue("b64gzip", out b64gzip)); Assert.IsType <string>(b64gzip); contents = Decode((string)b64gzip); Assert.Equal(4, contents.Length); Assert.Equal(0x10, contents[0]); Assert.Equal(0x11, contents[1]); Assert.Equal(0x12, contents[2]); Assert.Equal(0x13, contents[3]); }