public void IncludedChange() { string cfgMainFile = Path.GetTempFileName(); string cfgAdditionalFile = Path.GetTempFileName(); File.WriteAllText(cfgAdditionalFile, _xmlCfgAutoOrigin); File.WriteAllText(cfgMainFile, string.Format(_xmlCfgMain, cfgAdditionalFile)); var loader = new SettingsLoader(); loader.XmlFileBySection(); var loadResult = loader.LoadSettings(new XmlFileSettings(cfgMainFile)); var wait = new ManualResetEvent(false); var fileCheckers = FileChecker.TryCreate(loadResult.Sources).ToArray(); new FirstChange(fileCheckers).Changed += (s, e) => { wait.Set(); foreach (var fileChecker in fileCheckers) fileChecker.Dispose(); }; var t = Task.Factory.StartNew(() => { File.WriteAllText(cfgAdditionalFile, _xmlCfgAutoModify); }, TaskCreationOptions.LongRunning); Task.WaitAll(t); Assert.IsTrue(wait.WaitOne(10000), "10 sec elapsed"); }
public void MultiChange() { var xmlFileLoader = new XmlFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); string cfgMainFile = Path.GetTempFileName(); string cfgAdditionalFile = Path.GetTempFileName(); File.WriteAllText(cfgAdditionalFile, _xmlCfgAutoOrigin); File.WriteAllText(cfgMainFile, string.Format(_xmlCfgMain, cfgAdditionalFile)); var loader = new SettingsLoader(xmlFileLoader); loader.LoadSettings(xmlFileLoader.LoadFile(cfgMainFile)); IAppSettings settings = loader.Settings; var wait = new ManualResetEvent(false); ((IChangeable)settings).Changed += (s, e) => { wait.Set(); }; var t = Task.Factory.StartNew(() => { File.WriteAllText(cfgAdditionalFile, _xmlCfgAutoModify); }, TaskCreationOptions.LongRunning); Task.WaitAll(t); Assert.IsTrue(wait.WaitOne(10000), "10 sec elapsed"); }
public void IncludeInMiddle() { var loader = new SettingsLoader(); loader.XmlFileBySection(); var settings = loader .LoadSettings(XmlFileSettings.Create("Joining/AppDirectory/IncludeInMiddle.config".ResolveTestPath())) .Joined.ToAppSettings(); Assert.That(settings.LoadSections<AdditionalConfig>().Select(_ => _.F), Is.EquivalentTo(new[] { "InMainPre", "InAdditional", "InMainPost" })); }
public void RelativeInclude() { var loader = new SettingsLoader(); loader.XmlFileBySection(); var settings = loader .LoadSettings(XmlFileSettings.Create("Joining/AppDirectory/Deeper/RelativeInclude.config".ResolveTestPath())) .Joined.ToAppSettings(); Assert.That(settings.LoadSections<AdditionalConfig>().Select(_ => _.F), Is.EquivalentTo( new[] { "BeginMain", "BeginUpper", "InAdditional", "EndUpper", "EndMain" })); }
public void IncludeByRelativePath() { var loader = new SettingsLoader(); loader.XmlFileByExtension(); var systemSettings = new XmlSystemSettings("ExtConfigure"); var settings = loader.LoadSettings(systemSettings).Joined.ToAppSettings(); var cfg = settings.Get<MyXmlConfig>("MyCfg2"); Assert.AreEqual("2", cfg.AttrField); Assert.IsNull(cfg.ElemField); }
public void IncludeByFixedPathOwner() { var localPath = "".ResolveTestPath(); var systemSettings = new XmlSystemSettings("ExtConfigure", localPath); // fix for R# test runner var loader = new SettingsLoader(); loader.XmlFileByExtension(); var settings = loader.LoadSettings(systemSettings).Joined.ToAppSettings(); var cfg = settings.Get<MyXmlConfig>("MyCfg2"); Assert.AreEqual("2", cfg.AttrField); Assert.IsNull(cfg.ElemField); }
private static IAppSettings loadSettings(string file) { var loader = new SettingsLoader(); loader.XmlFileBySection(); loader.JsonFileBySection(); loader.IniFileBySection(); loader.Loaded += (s, e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; if (Path.GetExtension(file) == ".xml") return loader.LoadSettings(new XmlFileSettings(Path.Combine("Including".ResolveTestPath(), file))).Joined.ToAppSettings(); else return loader.LoadSettings(new JsonFileSettings(Path.Combine("Including".ResolveTestPath(), file))).Joined.ToAppSettings(); }
private static IAppSettings LoadSettings(string file) { var xmlFileLoader = new XmlFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); var jsonFileLoader = new JsonFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); var iniFileLoader = new IniFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); var loader = new SettingsLoader(xmlFileLoader, jsonFileLoader, iniFileLoader); loader.Loaded += (s, e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; if (Path.GetExtension(file) == ".xml") loader.LoadSettings(xmlFileLoader.LoadFile(Path.Combine("Including", file))); else loader.LoadSettings(jsonFileLoader.LoadFile(Path.Combine("Including", file))); return loader.Settings; }
public void SettingsLoader() { var storage = new VariableStorage(); storage["machineName"] = "TestServer"; var loader = new SettingsLoader(storage.CfgNodeConverter); var xmlCfg = @"<?xml version='1.0' encoding='utf-8' ?> <configuration> <Before Field='${machineName} ${var1}' /> <variable name='var1' value='value1' /> <After Field='${machineName} ${var1}' /> </configuration>".ToXmlSettings(); var settings = loader.LoadSettings(xmlCfg).Joined.ToAppSettings(); Assert.AreEqual("TestServer value1", settings.Get<TestConfig>("Before").Field); Assert.AreEqual("TestServer value1", settings.Get<TestConfig>("After").Field); }
public void AutoCombineLoad() { var loader = new SettingsLoader(); loader.XmlFileBySection(); loader.Loaded += (s, e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; var settings = loader .LoadSettings(new XmlFileSettings("Examples/AppDirectory/autoMain.config".ResolveTestPath())) .Joined .ToAppSettings(); var cfg = settings.TryGet<ChildAutoCombinableConnectionConfig>(); Assert.IsNotNull(cfg); Assert.AreEqual("Server=localhost;Database=workDb;User ID=admin;Password=pass;Trusted_Connection=True;Connection Timeout=60", cfg.ConnectionString); }
public void Load() { var xmlFileLoader = new XmlFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); var loader = new SettingsLoader(xmlFileLoader); loader.Loaded += (s,e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; loader.LoadSettings(xmlFileLoader.LoadFile("Examples/AppDirectory/main.config")); IAppSettings settings = loader.Settings; var addCfg = settings.TryCombine<ExampleCombineConfig>("AdditionalConfig"); Assert.IsNotNull(addCfg); Assert.AreEqual("InAppDirectory", addCfg.F); }
public void Load() { var loader = new SettingsLoader(); loader.XmlFileBySection(); loader.Loaded += (s,e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; var settings = loader .LoadSettings(new XmlFileSettings("Examples/AppDirectory/main.config".ResolveTestPath())) .Joined .ToAppSettings(); var addCfg = settings.TryGet<ExampleCombineConfig>("AdditionalConfig"); Assert.IsNotNull(addCfg); Assert.AreEqual("InAppDirectory", addCfg.F); }
public void AutoCombineLoad() { var xmlFileLoader = new XmlFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); var loader = new SettingsLoader(xmlFileLoader); loader.Loaded += (s, e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; loader.LoadSettings(xmlFileLoader.LoadFile("Examples/AppDirectory/autoMain.config")); var settings = new CombinableAppSettings(loader.Settings, Global.GenericCombiner); var cfg = settings.TryGet<ChildAutoCombinableConnectionConfig>(); var cfgs = settings.Settings.LoadCollection<ChildAutoCombinableConnectionConfig>().ToArray(); Assert.IsNotNull(cfg); Assert.AreEqual("Server=localhost;Database=workDb;User ID=admin;Password=pass;Trusted_Connection=True;Connection Timeout=60", cfg.ConnectionString); }
public void GetFiles() { var settings = @"<?xml version='1.0' encoding='utf-8' ?> <Config> <Include FinalSearch='true'> <XmlFile Path='file1'/> <XmlFile Path='file2' Search='Exact' Include='All' Required='false'/> <XmlFile Path='file3' Search='All' Include='First' Required='true'/> </Include> </Config>".ToXmlSettings(); var mock = new MockFactory(); SettingsLoader loader = new SettingsLoader(mock); loader.LoadSettings(settings); var files = mock.Configs; CollectionAssert.IsNotEmpty(files); Assert.AreEqual(3, files.Count); Assert.AreEqual("file1", files[0].Path); Assert.AreEqual(SearchMode.All, files[0].Search); Assert.AreEqual(IncludeMode.All, files[0].Include); Assert.IsFalse(files[0].Required); Assert.AreEqual("file2", files[1].Path); Assert.AreEqual(SearchMode.Exact, files[1].Search); Assert.AreEqual(IncludeMode.All, files[1].Include); Assert.IsFalse(files[1].Required); Assert.AreEqual("file3", files[2].Path); Assert.AreEqual(SearchMode.All, files[2].Search); Assert.AreEqual(IncludeMode.First, files[2].Include); Assert.IsTrue(files[2].Required); }
public void SecureLoad() { KeyManager.Create(); var providerLoader = new ProviderLoader(); var loader = new SettingsLoader(); loader.XmlFileBySection(); loader.Loaded += providerLoader.TryExtractConfigProtectedData; loader.Loaded += (s, e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; var settings = loader .LoadSettings(new XmlFileSettings("Examples/AppDirectory/secureMain.config".ResolveTestPath())) .Joined.ToAppSettings(); var addCfg = settings.TryGet<ExampleCombineConfig>("AdditionalConfig"); Assert.IsNotNull(addCfg); Assert.AreEqual("InUpDirectory", addCfg.F); Assert.AreEqual("Server=localhost;Database=workDb;User ID=admin;Password=pass;", settings.TryGet<ConnectionConfig>("MyExtConnection").ConnectionString); Assert.AreEqual("Server=localhost;Database=workDb;User ID=admin;Password=pass;", settings.TryGet<ConnectionConfig>("MySecuredConnection").ConnectionString); KeyManager.Delete(); }
public void SecureLoad() { KeyManager.Create(); var providerLoader = new ProviderLoader(); var xmlFileLoader = new XmlFileSettingsLoader(Global.GenericDeserializer, Global.PlainConverter); var loader = new SettingsLoader(xmlFileLoader); loader.Loaded += providerLoader.TryExtractConfigProtectedData; loader.Loaded += (s, e) => { Console.WriteLine("Loaded: {0} ({1})", e.Settings.GetType(), e.Settings.Identity); }; loader.LoadSettings(xmlFileLoader.LoadFile("Examples/AppDirectory/secureMain.config")); IAppSettings settings = loader.Settings; var addCfg = settings.TryCombine<ExampleCombineConfig>("AdditionalConfig"); Assert.IsNotNull(addCfg); Assert.AreEqual("InUpDirectory", addCfg.F); Assert.AreEqual("Server=localhost;Database=workDb;User ID=admin;Password=pass;", settings.TryFirst<ConnectionConfig>("MyExtConnection").ConnectionString); Assert.AreEqual("Server=localhost;Database=workDb;User ID=admin;Password=pass;", settings.TryFirst<ConnectionConfig>("MySecuredConnection").ConnectionString); KeyManager.Delete(); }