Ejemplo n.º 1
0
        public void authenticated_but_not_the_current_chain_and_enabled_condition_returns_true()
        {
            theRightsAre(AuthorizationRight.Allow);
            theNode.IsEnabledBy(typeof(FakeConditional));

            MockFor <IConditionalService>().Stub(x => x.IsTrue(typeof(FakeConditional)))
            .Return(true);

            ClassUnderTest.DetermineStateFor(theNode)
            .ShouldEqual(MenuItemState.Available);
        }
        public virtual MenuItemState DetermineStateFor(MenuNode node)
        {
            if (node.BehaviorChain == null)
            {
                return MenuItemState.Available;
            }

            var rights = _authorizor.Authorize(node.BehaviorChain, node.UrlInput);
            if (rights != AuthorizationRight.Allow)
            {
                return node.UnauthorizedState;
            }

            if (_current.OriginatingChain == node.BehaviorChain)
            {
                return MenuItemState.Active;
            }

            if (_conditionals.IsTrue(node.HideIfConditional))
            {
                return MenuItemState.Hidden;
            }

            if (_conditionals.IsTrue(node.IsEnabledBy()))
            {
                return MenuItemState.Available;
            }

            return MenuItemState.Disabled;
        }