/// <summary> /// Runs the TemplateAnalyzer logic given the template and parameters passed to it /// </summary> /// <returns>An enumerable of TemplateAnalyzer results</returns> public IEnumerable <IResult> EvaluateRulesAgainstTemplate() { JToken templatejObject; try { ArmTemplateProcessor armTemplateProcessor = new ArmTemplateProcessor(Template); templatejObject = armTemplateProcessor.ProcessTemplate(Parameters); } catch (Exception e) { throw new TemplateAnalyzerException("Error while processing template.", e); } if (templatejObject == null) { throw new TemplateAnalyzerException("Processed Template cannot be null."); } try { var rules = LoadRules(); var jsonRuleEngine = new JsonEngine.JsonRuleEngine(); IEnumerable <IResult> results = jsonRuleEngine.EvaluateRules(new TemplateContext { OriginalTemplate = JObject.Parse(Template), ExpandedTemplate = templatejObject, IsMainTemplate = true }, rules); return(results); } catch (Exception e) { throw new TemplateAnalyzerException("Error while evaluating rules.", e); } }
public void Run_ValidInputs_ReeturnsExpectedResults(string rules, string template, int numberOfExpectedPassedResults, int numberOfExpectedFailedResults) { TemplateContext templateContext = new TemplateContext { OriginalTemplate = JObject.Parse(template), ExpandedTemplate = JObject.Parse(template), IsMainTemplate = true }; var ruleEngine = new JsonEngine.JsonRuleEngine(); var results = ruleEngine.EvaluateRules(templateContext, rules); Assert.AreEqual(numberOfExpectedFailedResults + numberOfExpectedPassedResults, results.Count()); Assert.AreEqual(numberOfExpectedFailedResults, results.Where(result => result.Passed == false).Count()); Assert.AreEqual(numberOfExpectedPassedResults, results.Where(result => result.Passed == true).Count()); }