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)); }
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)); } }