public void ProcessTemplateResourceAndOutputPropertiesLanguageExpressions_ValidTemplateWithExpressionInResourceProperties_ProcessResourceProperyLanguageExpressions()
        {
            string templateJson = @"{
            ""$schema"": ""https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#"",
            ""contentVersion"": ""1.0.0.0"",
            ""parameters"": { },
                ""variables"": { },
                ""resources"": [
                    {
                        ""apiVersion"": ""2020-05-01"",
                        ""type"": ""Microsoft.Network/publicIPAddresses"",
                        ""name"": ""publicIPAddress"",
                        ""location"": ""westus"",
                        ""tags"": {},
                        ""properties"": {
                            ""publicIPAllocationMethod"": ""Dynamic"",
                            ""dnsSettings"": {
                                ""domainNameLabel"": ""[concat('linux-vm-', uniqueString('uniquestring'))]""
                            }
                        }
                    }
                ],
                ""outputs"": { }
            }";

            Template template = TemplateEngine.ParseTemplate(templateJson);

            _armTemplateProcessor.ProcessTemplateResourceAndOutputPropertiesLanguageExpressions(template);

            Assert.IsTrue(template.Resources.First().Properties.Value.InsensitiveToken("dnsSettings.domainNameLabel").Value <string>().StartsWith("linux-vm-"));
        }
        public void ProcessTemplateResourceAndOutputPropertiesLanguageExpressions_ValidTemplateWithReferenceExpressionInOutputs_ProcessOutputValueLanguageExpressions(string outputValue, string expectedValue)
        {
            string templateJson = GenerateTemplate(outputValue);

            Template template = TemplateEngine.ParseTemplate(templateJson);

            _armTemplateProcessor.ProcessTemplateResourceAndOutputPropertiesLanguageExpressions(template);

            Assert.IsTrue(template.Outputs["output0"].Value.Value.ToString().StartsWith(expectedValue));
        }
Пример #3
0
        public static ArmTemplateFile CreateArmTemplateFile(Uri fileUri, string fileContents)
        {
            try
            {
                var template = TemplateEngine.ParseTemplate(fileContents);

                ValidateTemplate(template);

                var templateObject = JObject.Parse(fileContents, new JsonLoadSettings
                {
                    LineInfoHandling = LineInfoHandling.Ignore,
                });

                return(new ArmTemplateFile(fileUri, template, templateObject));
            }
            catch (Exception)
            {
                return(new ArmTemplateFile(fileUri, null, null));
            }
        }