Example #1
0
        // Returns a list of AclExpansionEntry for the passed User, ACE with the passed Positon and passed GroupSelection
        private List <AclExpansionEntry> GetAclExpansionEntryList_UserPositionGroupSelection(
            User user, Position position, GroupCondition groupCondition, GroupHierarchyCondition groupHierarchyCondition)
        {
            List <User> userList = new List <User> ();

            userList.Add(user);

            var userFinderStub = MockRepository.GenerateStub <IAclExpanderUserFinder> ();

            userFinderStub.Expect(mock => mock.FindUsers()).Return(userList);

            List <AccessControlList> aclList = new List <AccessControlList>();

            var ace = TestHelper.CreateAceWithPositionAndGroupCondition(position, groupCondition);

            ace.GroupHierarchyCondition = groupHierarchyCondition;

            AttachAccessTypeReadWriteDelete(ace, true, null, true);
            Assert.That(ace.Validate().IsValid);
            var acl = TestHelper.CreateStatefulAcl(ace);

            aclList.Add(acl);

            var aclFinderStub = MockRepository.GenerateStub <IAclExpanderAclFinder> ();

            aclFinderStub.Expect(mock => mock.FindAccessControlLists()).Return(aclList);

            var aclExpander = new AclExpander(userFinderStub, aclFinderStub);

            // Retrieve the resulting list of AclExpansionEntry|s
            var aclExpansionEntryList = aclExpander.GetAclExpansionEntryList();

            return(aclExpansionEntryList);
        }
Example #2
0
        public void AssertGroupHierarchyCondition(Group owningGroup, GroupHierarchyCondition groupHierarchyCondition, string inResultingHtmlString,
                                                  string[] notInResultingHtmlStrings)
        {
            var accessConditions = new AclExpansionAccessConditions {
                OwningGroup = owningGroup, GroupHierarchyCondition = groupHierarchyCondition
            };
            var aclExpansionEntry = new AclExpansionEntry(
                User, Role, Acl, accessConditions, new AccessTypeDefinition[0], new AccessTypeDefinition[0]);
            List <AclExpansionEntry> aclExpansion = ListObjectMother.New(aclExpansionEntry);

            var stringWriter           = new StringWriter();
            var aclExpansionHtmlWriter = new AclExpansionHtmlWriter(stringWriter, true, new AclExpansionHtmlWriterSettings());

            aclExpansionHtmlWriter.WriteAclExpansion(aclExpansion);
            string result = stringWriter.ToString();

            //Clipboard.SetText (result);

            Assert.That(result, Is.StringContaining(inResultingHtmlString));
            foreach (string notInResultingHtml in notInResultingHtmlStrings)
            {
                Assert.That(result, Is.Not.StringContaining(notInResultingHtml));
            }
        }
Example #3
0
        private bool MatchPrincipalAgainstGroup(Principal principal, Group referenceGroup, GroupHierarchyCondition groupHierarchyCondition)
        {
            if (referenceGroup == null)
            {
                return(false);
            }

            var principalRoles  = GetMatchingPrincipalRoles(principal);
            var principalGroups = principalRoles.Select(r => r.Group.GetObjectReference());

            Func <bool> isPrincipalMatchingReferenceGroupOrParents = () => principalGroups.Intersect(GetGroupAndParents(referenceGroup)).Any();

            Func <bool> isPrincipalMatchingReferenceGroupOrChildren = () => principalGroups.SelectMany(GetGroupAndParents).Contains(referenceGroup);

            switch (groupHierarchyCondition)
            {
            case GroupHierarchyCondition.Undefined:
                throw CreateInvalidOperationException("The value 'Undefined' is not a valid value for matching the 'GroupHierarchyCondition'.");

            case GroupHierarchyCondition.This:
                return(principalGroups.Contains(referenceGroup));

            case GroupHierarchyCondition.Parent:
                throw CreateInvalidOperationException("The value 'Parent' is not a valid value for matching the 'GroupHierarchyCondition'.");

            case GroupHierarchyCondition.Children:
                throw CreateInvalidOperationException("The value 'Children' is not a valid value for matching the 'GroupHierarchyCondition'.");

            case GroupHierarchyCondition.ThisAndParent:
                return(isPrincipalMatchingReferenceGroupOrParents());

            case GroupHierarchyCondition.ThisAndChildren:
                return(isPrincipalMatchingReferenceGroupOrChildren());

            case GroupHierarchyCondition.ThisAndParentAndChildren:
                return(isPrincipalMatchingReferenceGroupOrParents() || isPrincipalMatchingReferenceGroupOrChildren());

            default:
                throw CreateInvalidOperationException("The value '{0}' is not a valid value for 'GroupHierarchyCondition'.", groupHierarchyCondition);
            }
        }