Esempio n. 1
0
        public void ShouldCreateCorrectMatchingRule()
        {
            PolicyData policyData = new PolicyData("Validate Parameters");

            policyData.Handlers.Add(new ValidationCallHandlerData());
            ParameterTypeMatchingRuleData matchingRuleData = GetParameterTypeMatchingRuleData();

            policyData.MatchingRules.Add(matchingRuleData);

            PolicyInjectionSettings settings = new PolicyInjectionSettings();

            settings.Policies.Add(policyData);

            DictionaryConfigurationSource configSource = new DictionaryConfigurationSource();

            configSource.Add(PolicyInjectionSettings.SectionName, settings);

            PolicySetFactory factory  = new PolicySetFactory(configSource);
            PolicySet        policies = factory.Create();

            Policy policy = policies[1];

            Assert.IsTrue(policy is RuleDrivenPolicy);
            RuleDrivenPolicy validateRule = (RuleDrivenPolicy)policy;

            Assert.IsTrue(validateRule.RuleSet[0] is ParameterTypeMatchingRule);
            ParameterTypeMatchingRule rule = (ParameterTypeMatchingRule)(validateRule.RuleSet[0]);

            Assert.AreEqual(3, rule.ParameterMatches.Count);
            for (int i = 0; i < matchingRuleData.Matches.Count; ++i)
            {
                AssertMatchDataEqual(matchingRuleData.Matches[i], rule.ParameterMatches[i], "Mismatch at element {0}", i);
            }
        }
Esempio n. 2
0
        public void CreatingPolicyWithoutConfigurationReturnsEmptyPolicySet()
        {
            DictionaryConfigurationSource dictSource = new DictionaryConfigurationSource();

            PolicySetFactory factory  = new PolicySetFactory(dictSource);
            PolicySet        policies = factory.Create();

            Assert.IsNotNull(policies);
            Assert.AreEqual(1, policies.Count);
        }
Esempio n. 3
0
        /// <summary>
        /// Builds an instance of the subtype of <see cref="PolicyInjector"/> type the receiver knows how to build,  based on
        /// an a configuration object.
        /// </summary>
        /// <param name="context">The <see cref="IBuilderContext"/> that represents the current building process.</param>
        /// <param name="objectConfiguration">The configuration object that describes the object to build.</param>
        /// <param name="configurationSource">The source for configuration objects.</param>
        /// <param name="reflectionCache">The cache to use retrieving reflection information.</param>
        /// <returns>A fully initialized instance of the <see cref="PolicyInjector"/> subtype.</returns>
        PolicyInjector IAssembler <PolicyInjector, InjectorData> .Assemble(IBuilderContext context,
                                                                           InjectorData objectConfiguration,
                                                                           IConfigurationSource configurationSource,
                                                                           ConfigurationReflectionCache reflectionCache)
        {
            PolicyInjector injector =
                base.Assemble(context, objectConfiguration, configurationSource, reflectionCache);
            PolicySetFactory policySetFactory = new PolicySetFactory(configurationSource);
            PolicySet        policies         = policySetFactory.Create();

            injector.Policies = policies;
            return(injector);
        }
Esempio n. 4
0
        /// <summary>
        /// Builds an instance of the subtype of <see cref="PolicyInjector"/> type the receiver knows how to build,  based on
        /// an a configuration object.
        /// </summary>
        /// <param name="context">The <see cref="IBuilderContext"/> that represents the current building process.</param>
        /// <param name="objectConfiguration">The configuration object that describes the object to build.</param>
        /// <param name="configurationSource">The source for configuration objects.</param>
        /// <param name="reflectionCache">The cache to use retrieving reflection information.</param>
        /// <returns>A fully initialized instance of the <see cref="PolicyInjector"/> subtype.</returns>
        public PolicyInjector Assemble(
            IBuilderContext context,
            InjectorData objectConfiguration,
            IConfigurationSource configurationSource,
            ConfigurationReflectionCache reflectionCache)
        {
            PolicySetFactory policyFactory = new PolicySetFactory(configurationSource);
            PolicySet        policies      = policyFactory.Create();

            PolicyInjector injector = new RemotingPolicyInjector(policies);

            return(injector);
        }
Esempio n. 5
0
        public void CanCreateEmptyPolicy()
        {
            PolicyInjectionSettings settings = new PolicyInjectionSettings();

            settings.Policies.Add(new PolicyData("Policy"));

            DictionaryConfigurationSource dictSource = new DictionaryConfigurationSource();

            dictSource.Add(PolicyInjectionSettings.SectionName, settings);

            PolicySetFactory factory   = new PolicySetFactory(dictSource);
            PolicySet        policySet = factory.Create();

            Assert.IsNotNull(policySet);

            RuleDrivenPolicy policy = (RuleDrivenPolicy)policySet[1];

            Assert.IsNotNull(policy);
            Assert.AreEqual("Policy", policy.Name);
        }
Esempio n. 6
0
        public void CanCreatePolicyWithMemberNameMatchingRule()
        {
            PolicyInjectionSettings settings = new PolicyInjectionSettings();

            settings.Policies.Add(new PolicyData("Policy"));
            settings.Policies.Get(0).MatchingRules.Add(new MemberNameMatchingRuleData("RuleName", "memberName"));
            DictionaryConfigurationSource dictSource = new DictionaryConfigurationSource();

            dictSource.Add(PolicyInjectionSettings.SectionName, settings);

            PolicySetFactory factory   = new PolicySetFactory(dictSource);
            PolicySet        policySet = factory.Create();

            Assert.IsNotNull(policySet);

            RuleDrivenPolicy policy = (RuleDrivenPolicy)policySet[1];

            Assert.IsNotNull(policy);
            Assert.AreEqual("Policy", policy.Name);
            Assert.AreEqual(1, policy.RuleSet.Count);
            Assert.AreEqual(typeof(MemberNameMatchingRule), policy.RuleSet[0].GetType());
        }
Esempio n. 7
0
        public void CanCreatePolicyWithCustomCallHandler()
        {
            PolicyInjectionSettings settings = new PolicyInjectionSettings();

            settings.Policies.Add(new PolicyData("Policy"));
            settings.Policies.Get(0).Handlers.Add(new CustomCallHandlerData("callCountHandler", typeof(CallCountHandler)));
            DictionaryConfigurationSource dictSource = new DictionaryConfigurationSource();

            dictSource.Add(PolicyInjectionSettings.SectionName, settings);

            PolicySetFactory factory   = new PolicySetFactory(dictSource);
            PolicySet        policySet = factory.Create();

            Assert.IsNotNull(policySet);

            RuleDrivenPolicy policy = (RuleDrivenPolicy)policySet[1];

            Assert.IsNotNull(policy);
            Assert.AreEqual("Policy", policy.Name);
            Assert.AreEqual(1, policy.Handlers.Count);
            Assert.AreEqual(typeof(CallCountHandler), policy.Handlers[0].GetType());
        }