public async Task GetGroupMembersAsync(GroupMemberCollection memberCollection, Guid groupId) { await AssureGraphClient(); try { var members = await _graphClient.Groups[groupId.ToString()].Members.Request().GetAsync(); do { foreach (var member in members) { if (member is User u) { memberCollection.Add(new GroupMember(Guid.Parse(u.Id), u.UserPrincipalName, GroupMemberTypes.AzureAd)); } else { memberCollection.Add(new GroupMember(Guid.Parse(member.Id), member.Id, GroupMemberTypes.AzureAd)); } } }while (members.NextPageRequest != null && (members = await members.NextPageRequest.GetAsync()).Count > 0); } catch (ServiceException ex) { if (IsNotFoundError(ex)) { throw GroupNotFoundException.Create(groupId, ex); } throw; } }
public void TestAddCollection() { GroupMemberCollection collection1 = new GroupMemberCollection(); GroupMemberCollection collection2 = new GroupMemberCollection(); collection1.Add(azureMember1); collection2.Add(azureMember2); collection1.Add(collection2); Assert.Equal(2, collection1.Count); }
public void TestExceptWith() { GroupMemberCollection collection1 = new GroupMemberCollection(); GroupMemberCollection collection2 = new GroupMemberCollection(); collection1.Add(azureMember1); collection1.Add(azureMember2); collection2.Add(azureMember2); collection1.ExceptWith(collection2); Assert.Equal(1, collection1.Count); Exception exception = Record.Exception(() => collection1.AsEnumerable().First(m => m.Id == azureMember1.Id)); Assert.Null(exception); }
private async Task GetMembersAsync(string storedProcedure, GroupMemberTypes memberType, GroupMemberCollection memberCollection, IDictionary <string, object> parameters) { using (var conn = new SqlConnection(_connectionString)) { await conn.OpenAsync(); using (var cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = storedProcedure; // Something makes queries that normally takes seconds to sometimes time out // This is a workaround until I can find the root cause. cmd.CommandTimeout = 300; cmd.AddParameters(parameters); using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { if (memberType == GroupMemberTypes.OnPremAd) { Guid id = reader.GetNullable <Guid>(1); if (id != Guid.Empty) { memberCollection.Add(new GroupMember( id: id, displayName: reader.GetNullable <string>(0), memberType: GroupMemberTypes.OnPremAd )); } } else { Guid id = reader.GetNullable <Guid>(2); if (id != Guid.Empty) { memberCollection.Add(new GroupMember( id: id, displayName: reader.GetNullable <string>(0), memberType: GroupMemberTypes.AzureAd )); } } } } } } }
public void TestCountOne() { GroupMemberCollection collection = new GroupMemberCollection(); collection.Add(azureMember1); Assert.Equal(1, collection.Count); }
public async Task GetGroupMembersAsync(GroupMemberCollection memberCollection, Guid groupId) { string command = $"Get-DistributionGroupMember -Identity '{groupId.ToString()}' -ErrorAction 'Stop'"; Collection <PSObject> result; try { result = InvokeCommand(command); } catch (RemoteException ex) { if (IsNotFoundError(ex)) { Exception notFoundException = CreateNotFoundException(groupId, null, ex); if (notFoundException != null) { throw notFoundException; } } throw; } if (result != null) { foreach (var member in result) { memberCollection.Add(new GroupMember( id: (string)member.Properties["ExternalDirectoryObjectId"].Value, displayName: (string)member.Properties["PrimarySmtpAddress"].Value, memberType: GroupMemberTypes.AzureAd )); } } await Task.FromResult(0); }
private void QueryGroupMembers(GroupMemberCollection memberCollection, string ldapFilter, string searchBase) { if (ldapFilter == null) { throw new ArgumentNullException(nameof(ldapFilter)); } using (DirectoryEntry searchRoot = GetDirectoryEntry(searchBase)) using (DirectorySearcher directorySearcher = new DirectorySearcher(searchRoot, ldapFilter, new string[] { "objectGUID", "userPrincipalName" })) { directorySearcher.PageSize = 1000; SearchResultCollection result = directorySearcher.FindAll(); foreach (SearchResult item in result) { Guid identity = new Guid((byte[])item.Properties["objectGuid"][0]); string displayName; if (item.Properties["userPrincipalName"].Count == 1) { displayName = (string)item.Properties["userPrincipalName"][0]; } else { displayName = identity.ToString(); } memberCollection.Add(new GroupMember(identity, displayName, GroupMemberTypes.OnPremAd)); } } }
public void TestAddMember() { GroupMemberCollection collection = new GroupMemberCollection(); collection.Add(azureMember1); GroupMember member = collection.AsEnumerable().First(); Assert.Equal(azureMember1.Id, member.Id); }
private async Task <GroupMemberCollection> GetTargetMembersAsync(GrouperDocument document, GroupMemberCollection currentMembers) { var include = new GroupMemberCollection(); var exclude = new GroupMemberCollection(); if (!(document.Members.Any(m => m.Action == GroupMemberActions.Include))) { include.Add(currentMembers); } foreach (GrouperDocumentMember member in document.Members) { var memberCollection = member.Action == GroupMemberActions.Exclude ? exclude : include; IMemberSource source = GetMemberSource(member); await source.GetMembersFromSourceAsync(memberCollection, member, document.MemberType); } include.ExceptWith(exclude); return(include); }
public async Task GetGroupMembersAsync(GroupMemberCollection memberCollection, Guid groupId) { using (var conn = new SqlConnection(_connectionString)) { await conn.OpenAsync(); using (var cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "dbo.spOpenEGetGroupMember"; cmd.Parameters.AddWithValue("groupId", groupId); SqlDataReader reader = null; try { reader = await cmd.ExecuteReaderAsync(); while (await reader.ReadAsync()) { memberCollection.Add(new GroupMember( reader.GetGuid(1), reader.GetString(2), GroupMemberTypes.OnPremAd )); } } catch (SqlException e) { if (e.Number == 50001) { throw GroupNotFoundException.Create(groupId, e); } throw; } finally { if (reader != null) { reader.Dispose(); } } } } }
public void TestConstruction() { double ratio = 0.5; GrouperDocument doc = TestHelpers.MakeDocument(); GroupMemberCollection add = new GroupMemberCollection(); add.Add(new GroupMember(Guid.Empty, "M1", GroupMemberTypes.AzureAd)); GroupMemberCollection remove = new GroupMemberCollection(); remove.Add(new GroupMember(Guid.Empty, "M2", GroupMemberTypes.AzureAd)); GroupMemberCollection unchanged = new GroupMemberCollection(); unchanged.Add(new GroupMember(Guid.Empty, "M3", GroupMemberTypes.AzureAd)); GroupMemberDiff diff = new GroupMemberDiff(doc, add, remove, unchanged, ratio); Assert.NotNull(diff.Add.FirstOrDefault(m => m.DisplayName == "M1")); Assert.NotNull(diff.Remove.FirstOrDefault(m => m.DisplayName == "M2")); Assert.NotNull(diff.Unchanged.FirstOrDefault(m => m.DisplayName == "M3")); Assert.Equal(ratio, diff.ChangeRatio); Assert.Equal(doc, diff.Document); }