public void ApplicationGroupsLocatorLoadsGroups()
        {
            var teamProjectCollectionConnector = new TeamProjectCollectionConnectorFactory().New();
            var teamProjectServiceLocator = new ServiceLocatorFactory().New(teamProjectCollectionConnector.Connect("tfs.ges.ferlan.it", 8080, "DefaultCollection"));
            var applicationGroupsLocator = new GroupsLocatorFactory().New(teamProjectServiceLocator);
            var projectLocator = new TeamProjectsLocatorFactory().New(teamProjectServiceLocator);
            var projects = projectLocator.LocateProjects();

            foreach (var applicationGroups in projects.Select(teamProject => applicationGroupsLocator.LocateApplicationGroups(teamProject.ArtifactUri.AbsoluteUri)))
            {
                Assert.IsTrue(applicationGroups.Any());
            }
        }
        public void GroupUsersLocatorLoadsUsers()
        {
            var groupUsersLocatorFactory = new UsersLocatorFactory();
            var teamProjectServiceLocatorFactory = new ServiceLocatorFactory();
            var teamProjectCollectionConnectorFactory = new TeamProjectCollectionConnectorFactory();
            var teamProjectLocatorFactory = new TeamProjectsLocatorFactory();

            var teamProjectCollectionConnector = teamProjectCollectionConnectorFactory.New();
            var tfsTeamProjectCollection = teamProjectCollectionConnector.Connect("tfs.ges.ferlan.it", 8080, "DefaultCollection");
            var teamProjectServiceLocator = teamProjectServiceLocatorFactory.New(tfsTeamProjectCollection);

            var groupSecurityService = teamProjectServiceLocator.GroupSecurityService;
            var versionControlServer = teamProjectServiceLocator.VersionControlService;
            var teamProjectLocator = teamProjectLocatorFactory.New(teamProjectServiceLocator);
            var projects = teamProjectLocator.LocateProjects();
            var teamProject = projects.FirstOrDefault(p => p.Name.Equals("FerrariGes", StringComparison.InvariantCultureIgnoreCase));
            var applicationGroupsLocator = new GroupsLocatorFactory().New(groupSecurityService);
            var groupUsersLocator = groupUsersLocatorFactory.New(groupSecurityService, versionControlServer, teamProject, applicationGroupsLocator);

            var gruppi = applicationGroupsLocator.LocateApplicationGroups(teamProject.ArtifactUri.AbsoluteUri).ToList();
            //var gruppo = gruppi.First(g => g.DisplayName.Equals("ContributorsCodeMachine"));
            //var result = groupUsersLocator.LocateGroupUsers(gruppo);

            var file = new StreamWriter(@"c:\TFS-Users.csv");
            file.WriteLine(UserGroupAssociationPrinter.Header());

            foreach (var gruppo in gruppi)
            {

                var users = groupUsersLocator.LocateGroupUsers(gruppo).ToList();
                Console.WriteLine(String.Format("{0} - {1}", gruppo.DisplayName, users.Count()));
                foreach (var user in users)
                {
                    file.WriteLine(UserGroupAssociationPrinter.PrintUser(gruppo, user));
                }
            }

            file.Close();
            //var list = result.ToList();
            //Assert.IsTrue(list.Any());
        }
        public void GroupUsersLocatorLoadsPermissions()
        {
            var groupUsersLocatorFactory = new UsersLocatorFactory();
            var teamProjectServiceLocatorFactory = new ServiceLocatorFactory();
            var teamProjectCollectionConnectorFactory = new TeamProjectCollectionConnectorFactory();
            var teamProjectLocatorFactory = new TeamProjectsLocatorFactory();

            var teamProjectCollectionConnector = teamProjectCollectionConnectorFactory.New();
            var tfsTeamProjectCollection = teamProjectCollectionConnector.Connect("tfs.ges.ferlan.it", 8080, "DefaultCollection");
            var teamProjectServiceLocator = teamProjectServiceLocatorFactory.New(tfsTeamProjectCollection);

            var groupSecurityService = teamProjectServiceLocator.GroupSecurityService;
            var versionControlServer = teamProjectServiceLocator.VersionControlService;
            var teamProjectLocator = teamProjectLocatorFactory.New(teamProjectServiceLocator);
            var projects = teamProjectLocator.LocateProjects();
            var teamProject = projects.FirstOrDefault(p => p.Name.Equals("FerrariGes", StringComparison.InvariantCultureIgnoreCase));
            var applicationGroupsLocator = new GroupsLocatorFactory().New(groupSecurityService);
            var groupUsersLocator = groupUsersLocatorFactory.New(groupSecurityService, versionControlServer, teamProject, applicationGroupsLocator);

            //var gruppi = applicationGroupsLocator.LocateApplicationGroups(teamProject.ArtifactUri.AbsoluteUri);
            //var gruppo = gruppi.First(g => g.DisplayName.Equals("ContributorsCodeMachine"));
            var result = groupUsersLocator.LocateActualPermissions();

            //var list = result.ToList();
            //Assert.IsTrue(list.Any());

            var file = new StreamWriter(@"c:\TFS-Permissions");
            file.WriteLine(ItemSecurityPrinter.Header());

            foreach (var itemSecurity in result)
            {
                file.WriteLine(new ItemSecurityPrinter(itemSecurity).ToString());
            }

            file.Close();
        }