public void Should_have_a_simple_DelegatePolicy() { // Arrange const string policyName = "Name1"; const string failureMessage = "Some error message"; Func <DelegateSecurityContext, bool> policyDelegate = context => false; Func <PolicyViolationException, ActionResult> violationHandlerDelegate = exception => new EmptyResult(); var policyContainer = TestDataFactory.CreateValidPolicyContainer(); var securityContext = new DelegateSecurityContext(new Mock <ISecurityPolicy>().Object, new Mock <ISecurityContext>().Object); // Act policyContainer.DelegatePolicy(policyName, policyDelegate, violationHandlerDelegate, failureMessage); // Assert var securityPolicy = policyContainer.GetPolicies().Where(x => x.GetType().Equals(typeof(DelegatePolicy))).Single() as DelegatePolicy; Assert.That(securityPolicy, Is.Not.Null); Assert.That(securityPolicy.Name, Is.EqualTo(policyName)); var policyResult = securityPolicy.Policy.Invoke(securityContext); Assert.That(policyResult.Message, Is.EqualTo(failureMessage)); Assert.That(policyResult.ViolationOccured, Is.True); Assert.That(securityPolicy.ViolationHandler, Is.EqualTo(violationHandlerDelegate)); }
public PolicyResult Enforce(ISecurityContext context) { var wrappedContext = new DelegateSecurityContext(this, context); var policyResult = Policy.Invoke(wrappedContext); return(new DelegatePolicyResult(policyResult, Name, ViolationHandler)); }
public void Should_pass_wrapped_security_context_to_delegate() { // Arrange DelegateSecurityContext delegateContext = null; Func <DelegateSecurityContext, PolicyResult> successDelegate = c => { delegateContext = c; return(PolicyResult.CreateSuccessResult(c.Policy)); }; var policy = new DelegatePolicy(ValidPolicyName, successDelegate, ValidViolationHandlerDelegate); var context = TestDataFactory.CreateSecurityContext(true); // Act policy.Enforce(context); // Assert Assert.That(typeof(ISecurityContext).IsAssignableFrom(delegateContext.GetType()), Is.True); Assert.That(delegateContext.CurrenUserAuthenticated(), Is.EqualTo(context.CurrenUserAuthenticated())); Assert.That(delegateContext.CurrenUserRoles(), Is.EqualTo(context.CurrenUserRoles())); }