/// <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);
            }
        }
Пример #2
0
        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());
        }