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); } }
public void CreatingPolicyWithoutConfigurationReturnsEmptyPolicySet() { DictionaryConfigurationSource dictSource = new DictionaryConfigurationSource(); PolicySetFactory factory = new PolicySetFactory(dictSource); PolicySet policies = factory.Create(); Assert.IsNotNull(policies); Assert.AreEqual(1, policies.Count); }
/// <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); }
/// <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); }
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); }
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()); }
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()); }