public void TeamCanBeUpdatedToIncludeAUser() { var team1 = new TeamModel { Name = "Team1", Description = "Test Team" }; _repo.Create(team1); var newUser = AddUserFred(); _repo.UpdateUserTeams(newUser.Id, new List <string> { "Team1" }); Assert.AreEqual(1, _repo.GetTeams(newUser.Id).Count); CollectionAssert.AreEqual(new[] { newUser.Id }, _repo.GetTeam(team1.Id).Members.Select(member => member.Id).ToArray()); }
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); } } }