Beispiel #1
0
        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");
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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");
        }
Beispiel #5
0
        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")));
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
            }
        }
Beispiel #9
0
        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"]);
            }
        }