示例#1
0
        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));
        }
示例#2
0
        public PolicyResult Enforce(ISecurityContext context)
        {
            var wrappedContext = new DelegateSecurityContext(this, context);
            var policyResult   = Policy.Invoke(wrappedContext);

            return(new DelegatePolicyResult(policyResult, Name, ViolationHandler));
        }
示例#3
0
        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()));
        }