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);
                }
            }
        }