private static void RefreshTeams(WindowsIdentity identity) { if (!String.Equals(ConfigurationManager.AppSettings["ActiveDirectoryIntegration"], "true", StringComparison.InvariantCultureIgnoreCase)) { return; } if (identity.Groups != null) { var groups = identity.Groups.Select(@group => @group.Translate(typeof(NTAccount)).ToString()).ToList(); var teamRepository = new EFTeamRepository(); var teams = teamRepository.GetAllTeams(); // Get current teams var newTeams = teams.Where(t => t.Members.Contains(identity.Name)).Select(t => t.Name).ToList(); bool isChanged = false; // Remove non matching group foreach (var team in newTeams) { var group = groups.SingleOrDefault(t => t == team); if (group == null) { newTeams.Remove(team); isChanged = true; } } // Insert new matching group foreach (var group in groups) { var team = teams.SingleOrDefault(t => t.Name == group); if (team != null && newTeams.All(t => t != identity.Name)) { newTeams.Add(team.Name); isChanged = true; } } if (isChanged) { teamRepository.UpdateUserTeams(identity.Name, newTeams); } } }
public void TestNewRepositoryIsEmpty() { Assert.AreEqual(0, _repo.GetAllTeams().Count); }