Пример #1
0
        public void TestNotEqualsDifferentAction()
        {
            GrouperDocumentMember member1 = TestHelpers.MakeMember(new { Action = GroupMemberActions.Include });
            GrouperDocumentMember member2 = TestHelpers.MakeMember(new { Action = GroupMemberActions.Exclude });

            Assert.False(member1.Equals(member2));
        }
Пример #2
0
        public void TestNotEqualsDifferentSource()
        {
            GrouperDocumentMember member1 = TestHelpers.MakeMember(new { Source = GroupMemberSources.Static });
            GrouperDocumentMember member2 = TestHelpers.MakeMember(new { Source = GroupMemberSources.OnPremAdGroup });

            Assert.False(member1.Equals(member2));
        }
Пример #3
0
        public void TestNotEqualsDifferentRule()
        {
            GrouperDocumentMember member1 = TestHelpers.MakeMember(new { Rules = new[] { new { Name = "Upn", Value = "Test" } } });
            GrouperDocumentMember member2 = TestHelpers.MakeMember(new { Rules = new[] { new { Name = "Group", Value = "Test" } } });

            Assert.False(member1.Equals(member2));
        }
Пример #4
0
        public void TestEquals()
        {
            GrouperDocumentMember member1 = TestHelpers.MakeMember();
            GrouperDocumentMember member2 = TestHelpers.MakeMember();

            Assert.True(member1.Equals(member2));
        }
Пример #5
0
 private IMemberSource GetMemberSource(GrouperDocumentMember member)
 {
     if (_memberSources.TryGetValue(member.Source, out IMemberSource source))
     {
         return(source);
     }
     throw new InvalidOperationException($"There is no member source added for {member.Source}");
 }
Пример #6
0
        public void TestSerializeAction()
        {
            GrouperDocumentMember member = TestHelpers.MakeMember();
            string  json = JsonConvert.SerializeObject(member);
            dynamic obj  = JObject.Parse(json);

            Assert.Equal(TestHelpers.DefaultGroupMemberAction.ToString(), (string)obj.action);
        }
Пример #7
0
        public void TestSerializedNames()
        {
            GrouperDocumentMember member = TestHelpers.MakeMember();
            string  json = JsonConvert.SerializeObject(member);
            JObject obj  = JObject.Parse(json);

            Assert.True(obj.ContainsKey("source"));
            Assert.True(obj.ContainsKey("action"));
            Assert.True(obj.ContainsKey("rules"));
        }
Пример #8
0
 public async Task GetMembersFromSourceAsync(GroupMemberCollection memberCollection, GrouperDocumentMember grouperMember, GroupMemberTypes memberType)
 {
     if (memberType != GroupMemberTypes.AzureAd)
     {
         throw new ArgumentException("Invalid member type", nameof(memberType));
     }
     await GetGroupMembersAsync(
         memberCollection,
         Guid.Parse(grouperMember.Rules.Where(r => r.Name.IEquals("Group")).First().Value)
     );
 }
Пример #9
0
        public void TestRulesListShouldBeImmutable()
        {
            GrouperDocumentMember member = TestHelpers.MakeMember();

            Assert.Throws <NotSupportedException>(() => { member.Rules.RemoveAt(0); });
        }
Пример #10
0
        public void TestShouldSerializeMemberType()
        {
            GrouperDocumentMember member = TestHelpers.MakeMember();

            Assert.False(member.ShouldSerializeMemberType());
        }
Пример #11
0
 private async Task GetMembersFromCustomViewAsync(GroupMemberCollection memberCollection, GrouperDocumentMember member)
 {
     await GetMembersAsync("dbo.spGrouperCustomView", member.MemberType, memberCollection,
                           new Dictionary <string, object>()
     {
         { "view", member.Rules.Where(r => r.Name.IEquals("View")).First().Value }
     }
                           );
 }
Пример #12
0
 private async Task GetMembersFromUpnAsync(GroupMemberCollection memberCollection, GrouperDocumentMember member)
 {
     await GetMembersAsync("dbo.spGrouperStaticMember", member.MemberType, memberCollection,
                           new Dictionary <string, object>()
     {
         { "upn", member.Rules.Where(r => r.Name.IEquals("Upn") && !string.IsNullOrEmpty(r.Value)).Select(r => r.Value).ToArray() }
     }
                           );
 }
Пример #13
0
        public async Task GetMembersFromSourceAsync(GroupMemberCollection memberCollection, GrouperDocumentMember grouperMember)
        {
            switch (grouperMember.Source)
            {
            case GroupMemberSources.Elevregister:
                await GetMembersFromElevregisterAsync(memberCollection, grouperMember);

                break;

            case GroupMemberSources.Personalsystem:
                await GetMembersFromPersonalsystemAsync(memberCollection, grouperMember);

                break;

            case GroupMemberSources.Static:
                await GetMembersFromUpnAsync(memberCollection, grouperMember);

                break;

            case GroupMemberSources.CustomView:
                await GetMembersFromCustomViewAsync(memberCollection, grouperMember);

                break;

            default:
                throw new ArgumentException(nameof(grouperMember));
            }
        }
Пример #14
0
        private async Task GetMembersFromElevregisterAsync(GroupMemberCollection memberCollection, GrouperDocumentMember member)
        {
            var    arskurs  = new List <string>();
            bool   elev     = true;
            bool   personal = true;
            string skolform = null;
            string enhet    = null;
            string klass    = null;
            string grupp    = null;

            foreach (GrouperDocumentRule rule in member.Rules)
            {
                if (rule.Name.IEquals("Roll"))
                {
                    if (rule.Value.IEquals("Elev"))
                    {
                        personal = false;
                    }
                    else if (rule.Value.IEquals("Personal"))
                    {
                        elev = false;
                    }
                }
                else if (rule.Name.IEquals("Skolform"))
                {
                    skolform = rule.Value.NullIfEmpty();
                }
                else if (rule.Name.IEquals("Enhet"))
                {
                    enhet = rule.Value.NullIfEmpty();
                }
                else if (rule.Name.IEquals("Klass"))
                {
                    klass = rule.Value.NullIfEmpty();
                }
                else if (rule.Name.IEquals("Grupp"))
                {
                    grupp = rule.Value.NullIfEmpty();
                }
                else if (rule.Name.IEquals("Årskurs") && !string.IsNullOrEmpty(rule.Value))
                {
                    arskurs.Add(rule.Value);
                }
            }
            await GetMembersAsync("dbo.spGrouperElevregister", member.MemberType, memberCollection,
                                  new Dictionary <string, object>()
            {
                { "skolform", skolform },
                { "enhet", enhet },
                { "klass", klass },
                { "grupp", grupp },
                { "arskurs", arskurs.ToArray() },
                { "elev", elev },
                { "personal", personal }
            }
                                  );
        }
Пример #15
0
 public async Task GetMembersFromSourceAsync(GroupMemberCollection memberCollection, GrouperDocumentMember grouperMember)
 {
     await GetGroupMembersAsync(
         memberCollection,
         Guid.Parse(grouperMember.Rules.Where(r => r.Name.IEquals("Group")).First().Value)
         );
 }
Пример #16
0
        public async Task GetMembersFromSourceAsync(GroupMemberCollection memberCollection, GrouperDocumentMember grouperMember)
        {
            switch (grouperMember.Source)
            {
            case GroupMemberSources.OnPremAdGroup:
                await GetGroupMembersAsync(
                    memberCollection,
                    Guid.Parse(grouperMember.Rules.Where(r => r.Name.IEquals("Group")).First().Value)
                    );

                break;

            case GroupMemberSources.OnPremAdQuery:
                string filter     = grouperMember.Rules.Where(r => r.Name.IEquals("LdapFilter")).FirstOrDefault()?.Value;
                string searchBase = grouperMember.Rules.Where(r => r.Name.IEquals("SearchBase")).FirstOrDefault()?.Value;
                QueryGroupMembers(memberCollection, filter, searchBase);
                break;

            default:
                throw new ArgumentException(nameof(grouperMember));
            }
        }
Пример #17
0
        private async Task GetMembersFromPersonalsystemAsync(GroupMemberCollection memberCollection, GrouperDocumentMember member)
        {
            var    befattning     = new List <string>();
            string organisation   = null;
            bool   includeManager = false;

            foreach (GrouperDocumentRule rule in member.Rules)
            {
                if (rule.Name.IEquals("Organisation"))
                {
                    organisation = rule.Value.NullIfEmpty();
                }
                else if (rule.Name.IEquals("Befattning") && !string.IsNullOrEmpty(rule.Value))
                {
                    befattning.Add(rule.Value);
                }
                else if (rule.Name.IEquals("IncludeManager"))
                {
                    includeManager = rule.Value.IEquals("true");
                }
            }
            await GetMembersAsync("dbo.spGrouperPersonalsystem", member.MemberType, memberCollection,
                                  new Dictionary <string, object>()
            {
                { "organisation", organisation },
                { "befattning", befattning.ToArray() },
                { "include_manager", includeManager }
            }
                                  );
        }