public void should_be_able_to_read_inline_values_from_transformation_configuration() { //ARRANGE var configurationReader = TransformConfgReaderTestFactory.CreateConfigReader("test.xml", @" <root> <transformationGroup pattern=""aaa.pattern.xml""> <transformation output=""output.xml""> <values> <Val1>AAA</Val1> </values> </transformation> </transformationGroup> </root>"); var transformConfigurations = configurationReader.ReadConfig("test.xml"); var transformationToTest = transformConfigurations.First(); //ACT var values = transformationToTest.ValuesProvider.GetValues(); //ASSERT Assert.IsNotNull(values); Assert.IsTrue(values.ContainsKey("Val1")); Assert.AreEqual(values["Val1"], "AAA"); }
public void should_be_able_to_suppress_all_post_transformation_on_lower_level_of_configuration() { //ARRANGE var configurationReader = TransformConfgReaderTestFactory.CreateConfigReader("test.xml", @" <root> <postTransformations> <add name=""StripXMLComments"" /> <add name=""ReFormatXML"" /> </postTransformations> <transformationGroup pattern=""aaa.pattern.xml""> <transformation values=""aaa.values.xml"" output=""output.xml""> <postTransformations> <clear /> </postTransformations> </transformation> </transformationGroup> </root>"); //ACT var transformConfigurations = configurationReader.ReadConfig("test.xml"); //ASSERT var transformationToTest = transformConfigurations.First(); Assert.IsNotNull(transformationToTest.PostTransformations); Assert.AreEqual(0, transformationToTest.PostTransformations.Count); }
public void should_be_able_to_read_post_transformation_from_transformation_node_configuration() { //ARRANGE var configurationReader = TransformConfgReaderTestFactory.CreateConfigReader("test.xml", @" <root> <transformationGroup pattern=""aaa.pattern.xml""> <transformation values=""aaa.values.xml"" output=""output.xml""> <postTransformations> <add name=""ReFormatXML"" /> </postTransformations> </transformation> </transformationGroup> </root>"); //ACT var transformConfigurations = configurationReader.ReadConfig("test.xml"); //ASSERT var transformationToTest = transformConfigurations.First(); Assert.IsNotNull(transformationToTest.PostTransformations); Assert.AreEqual(1, transformationToTest.PostTransformations.Count); Assert.AreEqual("ReFormatXML", transformationToTest.PostTransformations.First().Name); }
public void should_be_to_use_alternative_syntax_for_values_with_key_attribute() { //ARRANGE var configurationReader = TransformConfgReaderTestFactory.CreateConfigReader("test.xml", @" <root> <transformationGroup pattern=""aaa.pattern.xml""> <transformation valuesGroup=""SampleGroup"" output=""output.xml""> <values> <value key=""Val1"">AAA</value> <Val3>CCC</Val3> </values> </transformation> </transformationGroup> <valuesGroup name=""SampleGroup""> <value key=""Val1"">ZZZ</value> <value key=""Val2"">BBB</value> </valuesGroup> </root>"); var transformConfigurations = configurationReader.ReadConfig("test.xml"); var transformationToTest = transformConfigurations.First(); //ACT var values = transformationToTest.ValuesProvider.GetValues(); //ASSERT Assert.IsNotNull(values); Assert.AreEqual(3, values.Count); Assert.AreEqual(values["Val1"], "AAA"); Assert.AreEqual(values["Val2"], "BBB"); Assert.AreEqual(values["Val3"], "CCC"); }
public void should_be_able_to_restrict_transformation_on_env_and_machine_level() { var config = @" <root> <apps> <app name=""SampleApp1""> <templates> <template name=""appsettings.json"" pattern=""appsettings.json.template"" /> </templates> </app> <app name=""SampleApp2""> <templates> <template name=""appsettings.json"" pattern=""appsettings.json.template"" /> </templates> </app> </apps> <environments> <environment name=""PPE""> <machines> <machine name=""ASP-01"" /> <machine name=""ASP-02"" apps=""SampleApp1"" /> </machines> </environment> <environment name=""PROD"" apps=""SampleApp2""> <machines> <machine name=""PASP-01"" /> <machine name=""PASP-02"" /> </machines> </environment> </environments> <transformations> <transformation output=""{app}\{environment}\{machine}\{template}"" /> </transformations> </root> "; var xmlReader = TransformConfgReaderTestFactory.CreateXmlTextFileReader("test.xml", config); var deploymentReader = new DeploymentTransformConfigurationReader(xmlReader); //ACT var result = deploymentReader.ReadConfig("test.xml")?.ToList(); //ASSERT Assert.IsNotNull(result); Assert.AreEqual(5, result.Count); Assert.IsNotNull(result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\ASP-01\\appsettings.json"))); Assert.IsNotNull(result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\ASP-02\\appsettings.json"))); Assert.IsNotNull(result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp2\\PPE\\ASP-01\\appsettings.json"))); Assert.IsNotNull(result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp2\\PROD\\PASP-01\\appsettings.json"))); Assert.IsNotNull(result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp2\\PROD\\PASP-02\\appsettings.json"))); }
public void should_be_able_to_read_many_transformation_for_single_pattern() { //ARRANGE var configurationReader = TransformConfgReaderTestFactory.CreateConfigReader("test.xml", @" <root> <transformationGroup pattern=""aaa.pattern.xml""> <transformation values=""aaa.values.xml"" output=""output.xml"" /> <transformation values=""aaa1.values.xml"" output=""output1.xml"" /> </transformationGroup> </root>"); //ACT var result = configurationReader.ReadConfig("test.xml"); //ASSERT Assert.IsNotNull(result); CollectionAssert.IsNotEmpty(result); Assert.AreEqual(2, result.Count); }
public void should_be_able_to_read_transformations_from_file() { //ARRANGE var configurationReader = TransformConfgReaderTestFactory.CreateConfigReader("test.xml", @" <root> <transformationGroup pattern=""aaa.pattern.xml""> <transformation values=""aaa.values.xml"" output=""output.xml"" /> </transformationGroup> </root>"); //ACT var result = configurationReader.ReadConfig("test.xml"); //ASSERT Assert.IsNotNull(result); CollectionAssert.IsNotEmpty(result); Assert.AreEqual("aaa.pattern.xml", result[0].PatternFilePath); Assert.IsNotNull(result[0].ValuesProvider); Assert.AreEqual("output.xml", result[0].OutputFilePath); }
public void should_be_able_to_read_deploy_config_format() { var config = @" <root> <apps> <app name=""SampleApp1""> <templates> <template name=""appsettings.json"" pattern=""appsettings.json.template"" placeholder=""[%KEY%]"" /> <template name=""nlog.config"" pattern=""nlog.config.template"" /> </templates> </app> </apps> <environments> <environment name=""PPE""> <values> <add key=""Value1"">1</add> <add key=""Value2"">2</add> <add key=""Value3"">3</add> </values> <machines> <machine name=""ASP-01""> <values> <add key=""HostName"">ASP-01</add> <add key=""HostIp"">192.168.0.1</add> <add key=""Value1"">One</add> </values> </machine> <machine name=""ASP-02"" apps=""SampleApp1""> <values> <add key=""HostName"">ASP-02</add> <add key=""HostIp"">192.168.0.2</add> </values> </machine> </machines> </environment> </environments> <transformations> <transformation output=""{app}\{environment}\{machine}\{template}"" /> </transformations> <postTransformations> <postTransformation fileExtension=""config""> <add name=""StripXMLComments"" /> <add name=""ReFormatXML"" /> </postTransformation> <postTransformation fileExtension=""json""> <add name=""ReFormatJSON"" /> </postTransformation> </postTransformations> </root> "; var xmlReader = TransformConfgReaderTestFactory.CreateXmlTextFileReader("test.xml", config); var deploymentReader = new DeploymentTransformConfigurationReader(xmlReader); //ACT var result = deploymentReader.ReadConfig("test.xml")?.ToList(); //ASSERT Assert.IsNotNull(result); Assert.AreEqual(4, result.Count); { var transformation = result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\ASP-01\\appsettings.json")); Assert.IsNotNull(transformation); Assert.AreEqual("[%KEY%]", transformation.PlaceholderPattern); var values = transformation.ValuesProvider.GetValues(); Assert.AreEqual(5, values.Count); Assert.AreEqual("One", values["Value1"]); Assert.AreEqual("2", values["Value2"]); Assert.AreEqual("3", values["Value3"]); Assert.AreEqual("ASP-01", values["HostName"]); Assert.AreEqual("192.168.0.1", values["HostIp"]); Assert.AreEqual(1, transformation.PostTransformations.Count); } { var transformation = result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\ASP-01\\nlog.config")); Assert.IsNotNull(transformation); Assert.AreEqual(null, transformation.PlaceholderPattern); var values = transformation.ValuesProvider.GetValues(); Assert.AreEqual(5, values.Count); Assert.AreEqual("One", values["Value1"]); Assert.AreEqual("2", values["Value2"]); Assert.AreEqual("3", values["Value3"]); Assert.AreEqual("ASP-01", values["HostName"]); Assert.AreEqual("192.168.0.1", values["HostIp"]); Assert.AreEqual(2, transformation.PostTransformations.Count); } { var transformation = result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\ASP-02\\appsettings.json")); Assert.IsNotNull(transformation); Assert.AreEqual("[%KEY%]", transformation.PlaceholderPattern); var values = transformation.ValuesProvider.GetValues(); Assert.AreEqual(5, values.Count); Assert.AreEqual("1", values["Value1"]); Assert.AreEqual("2", values["Value2"]); Assert.AreEqual("3", values["Value3"]); Assert.AreEqual("ASP-02", values["HostName"]); Assert.AreEqual("192.168.0.2", values["HostIp"]); Assert.AreEqual(1, transformation.PostTransformations.Count); } { var transformation = result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\ASP-02\\nlog.config")); Assert.IsNotNull(transformation); Assert.AreEqual(null, transformation.PlaceholderPattern); var values = transformation.ValuesProvider.GetValues(); Assert.AreEqual(5, values.Count); Assert.AreEqual("1", values["Value1"]); Assert.AreEqual("2", values["Value2"]); Assert.AreEqual("3", values["Value3"]); Assert.AreEqual("ASP-02", values["HostName"]); Assert.AreEqual("192.168.0.2", values["HostIp"]); Assert.AreEqual(2, transformation.PostTransformations.Count); } }
public void should_be_able_to_read_deploy_config_format_with_unified_environments() { var config = @" <root> <apps> <app name=""SampleApp1""> <templates> <template name=""appsettings.json"" pattern=""appsettings.json.template"" /> </templates> </app> </apps> <environments> <environment name=""PPE""> <values> <add key=""Value1"">1</add> <add key=""Value2"">2</add> <add key=""Value3"">3</add> </values> </environment> <environment name=""PROD""> <values> <add key=""Value1"">PROD1</add> <add key=""Value2"">PROD2</add> <add key=""Value3"">PROD3</add> </values> </environment> </environments> <transformations> <transformation output=""{app}\{environment}\{template}"" /> </transformations> </root> "; var xmlReader = TransformConfgReaderTestFactory.CreateXmlTextFileReader("test.xml", config); var deploymentReader = new DeploymentTransformConfigurationReader(xmlReader); //ACT var result = deploymentReader.ReadConfig("test.xml")?.ToList(); //ASSERT Assert.IsNotNull(result); Assert.AreEqual(2, result.Count); { var transformation = result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PPE\\appsettings.json")); Assert.IsNotNull(transformation); var values = transformation.ValuesProvider.GetValues(); Assert.AreEqual(3, values.Count); Assert.AreEqual("1", values["Value1"]); Assert.AreEqual("2", values["Value2"]); Assert.AreEqual("3", values["Value3"]); } { var transformation = result.FirstOrDefault(x => x.OutputFilePath.EndsWith("SampleApp1\\PROD\\appsettings.json")); Assert.IsNotNull(transformation); var values = transformation.ValuesProvider.GetValues(); Assert.AreEqual(3, values.Count); Assert.AreEqual("PROD1", values["Value1"]); Assert.AreEqual("PROD2", values["Value2"]); Assert.AreEqual("PROD3", values["Value3"]); } }