public static void DeleteUser(string identity)
        {
            Console.WriteLine($"Deleting User [{identity}]");
            DirectoryServices.DeleteUser(identity);

            UserPrincipalObject upo = DirectoryServices.GetUser(identity, false, false, false);

            Assert.That(upo, Is.Null);
        }
        public void Core_UserNotFound()
        {
            // Get User That Does Not Exist
            String userName = $"testuser_{Utility.GenerateToken( 8 )}";
            String userDistinguishedName = $"CN={userName},{workspaceName}";

            Console.WriteLine($"Getting User [{userName}] Which Should Not Exist.");
            UserPrincipalObject user = DirectoryServices.GetUser(userName, true, true, true);

            Assert.That(user, Is.Null);

            Console.WriteLine($"Getting User Principal [{userName}] Which Should Not Exist.");
            UserPrincipal up = DirectoryServices.GetUserPrincipal(userDistinguishedName);

            Assert.That(up, Is.Null);
        }
        public void Core_GroupManagementTestSuccess()
        {
            // Add User To Group
            UserPrincipal       user = Utility.CreateUser(workspaceName);
            UserPrincipalObject upo  = DirectoryServices.GetUser(user.DistinguishedName, true, false, false);
            int beforeCount          = upo.Groups.Count;

            Console.WriteLine($"Adding User [{user.Name}] To Group [{group.Name}].");
            DirectoryServices.AddUserToGroup(user.DistinguishedName, group.DistinguishedName);
            upo = DirectoryServices.GetUser(user.DistinguishedName, true, false, false);
            int afterCount = upo.Groups.Count;

            Assert.That(afterCount, Is.EqualTo(beforeCount + 1));

            // Remove User From Group
            beforeCount = afterCount;
            Console.WriteLine($"Removing User [{user.Name}] From Group [{group.Name}].");
            DirectoryServices.RemoveUserFromGroup(user.DistinguishedName, group.DistinguishedName);
            upo        = DirectoryServices.GetUser(user.DistinguishedName, true, false, false);
            afterCount = upo.Groups.Count;
            Assert.That(afterCount, Is.EqualTo(beforeCount - 1));

            // Delete User
            Utility.DeleteUser(user.DistinguishedName);

            // Add Group To Group
            GroupPrincipal       newGroup = Utility.CreateGroup(workspaceName);
            GroupPrincipalObject gpo      = DirectoryServices.GetGroup(newGroup.DistinguishedName, true, false, false);

            beforeCount = gpo.Groups.Count;
            Console.WriteLine($"Adding Group [{newGroup.Name}] To Group [{group.Name}].");
            DirectoryServices.AddGroupToGroup(newGroup.DistinguishedName, group.DistinguishedName);
            gpo        = DirectoryServices.GetGroup(newGroup.DistinguishedName, true, false, false);
            afterCount = gpo.Groups.Count;
            Assert.That(afterCount, Is.EqualTo(beforeCount + 1));

            // Remove Group From Group
            beforeCount = afterCount;
            Console.WriteLine($"Removing Group [{newGroup.Name}] From Group [{group.Name}].");
            DirectoryServices.RemoveGroupFromGroup(newGroup.DistinguishedName, group.DistinguishedName);
            gpo        = DirectoryServices.GetGroup(newGroup.DistinguishedName, true, false, false);
            afterCount = gpo.Groups.Count;
            Assert.That(afterCount, Is.EqualTo(beforeCount - 1));

            // Delete Groups
            Utility.DeleteGroup(newGroup.DistinguishedName);
        }
    private object GetActiveDirectoryObject(AdObject obj)
    {
        switch (obj.Type)
        {
        case AdObjectType.User:
            AdUser user             = (AdUser)obj;
            UserPrincipalObject upo = null;
            upo = DirectoryServices.GetUser(user.Identity, config.ReturnGroupMembership, config.ReturnAccessRules, config.ReturnObjectProperties);
            if (upo == null)
            {
                throw new AdException($"User [{user.Identity}] Was Not Found.", AdStatusType.DoesNotExist);
            }
            return(upo);

        case AdObjectType.Group:
            AdGroup group            = (AdGroup)obj;
            GroupPrincipalObject gpo = null;
            gpo = DirectoryServices.GetGroup(group.Identity, config.ReturnGroupMembership, config.ReturnAccessRules, config.ReturnObjectProperties);
            if (gpo == null)
            {
                throw new AdException($"Group [{group.Identity}] Was Not Found.", AdStatusType.DoesNotExist);
            }
            return(gpo);

        case AdObjectType.OrganizationalUnit:
            AdOrganizationalUnit     ou  = (AdOrganizationalUnit)obj;
            OrganizationalUnitObject ouo = null;
            ouo = DirectoryServices.GetOrganizationalUnit(ou.Identity, config.ReturnAccessRules, config.ReturnObjectProperties);
            if (ouo == null)
            {
                throw new AdException($"Organizational Unit [{ou.Identity}] Was Not Found.", AdStatusType.DoesNotExist);
            }
            return(ouo);

        default:
            throw new AdException("Action [" + config.Action + "] Not Implemented For Type [" + obj.Type + "]", AdStatusType.NotSupported);
        }
    }
        public void Core_UserTestSuccess()
        {
            // Get User By Distinguished Name
            Console.WriteLine($"Getting User By DisginguishedName : [{user.DistinguishedName}]");
            UserPrincipalObject upo = DirectoryServices.GetUser(user.DistinguishedName, true, true, true);

            Assert.That(upo.DistinguishedName, Is.EqualTo(user.DistinguishedName));

            String userName           = upo.Name;
            String userPrincipalName  = upo.UserPrincipalName;
            String userSamAccountName = upo.SamAccountName;
            Guid?  userGuid           = upo.Guid;
            String userSid            = upo.Sid;

            // Get User By Name
            Console.WriteLine($"Getting User By Name: [{userName}]");
            upo = DirectoryServices.GetUser(userName, true, true, true);
            Assert.That(upo.Name, Is.EqualTo(userName));

            // Get User By UserPrincipalName
            Console.WriteLine($"Getting User By UserPrincipalName: [{userPrincipalName}]");
            upo = DirectoryServices.GetUser(userPrincipalName, true, true, true);
            Assert.That(upo.UserPrincipalName, Is.EqualTo(userPrincipalName));

            // Get User By SamAccountName
            Console.WriteLine($"Getting User By SamAccountName : [{userSamAccountName}]");
            upo = DirectoryServices.GetUser(userSamAccountName, true, true, true);
            Assert.That(upo.SamAccountName, Is.EqualTo(userSamAccountName));

            // Get User By Guid
            Console.WriteLine($"Getting User By Guid : [{userGuid}]");
            upo = DirectoryServices.GetUser(userGuid.ToString(), true, true, true);
            Assert.That(upo.Guid, Is.EqualTo(userGuid));

            // Get User By Sid
            Console.WriteLine($"Getting User By Sid : [{userSid}]");
            upo = DirectoryServices.GetUser(userSid, true, true, true);
            Assert.That(upo.Sid, Is.EqualTo(userSid));

            // Modify User
            Console.WriteLine($"Modifying User : [{userName}]");
            UserPrincipal up = DirectoryServices.GetUserPrincipal(userName);

            up.DisplayName = "Guy Michael Waguespack";
            up.GivenName   = "Guy";
            up.MiddleName  = "Michael";
            up.Surname     = "Waguespack";
            DirectoryServices.SaveUser(up);

            upo = DirectoryServices.GetUser(userName, false, false, false);
            Assert.That(upo.DisplayName, Is.EqualTo("Guy Michael Waguespack"));
            Assert.That(upo.GivenName, Is.EqualTo("Guy"));
            Assert.That(upo.MiddleName, Is.EqualTo("Michael"));
            Assert.That(upo.Surname, Is.EqualTo("Waguespack"));

            // Create AccessUser For AccessRule Tests (Below)
            UserPrincipal accessRuleUser = Utility.CreateUser(workspaceName);
            int           ruleCount      = DirectoryServices.GetAccessRules(user).Count;

            // Add Access Rule To User
            Console.WriteLine($"Adding AccessRule For User [{accessRuleUser.Name}] To User [{user.Name}].");
            DirectoryServices.AddAccessRule(user, accessRuleUser, ActiveDirectoryRights.GenericRead, System.Security.AccessControl.AccessControlType.Allow, ActiveDirectorySecurityInheritance.None);
            int newRuleCount = DirectoryServices.GetAccessRules(user).Count;

            Assert.That(newRuleCount, Is.GreaterThan(ruleCount));

            // Removing Access Rule From User
            Console.WriteLine($"Removing AccessRule For User [{accessRuleUser.Name}] From User [{user.Name}].");
            DirectoryServices.DeleteAccessRule(user, accessRuleUser, ActiveDirectoryRights.GenericRead, System.Security.AccessControl.AccessControlType.Allow, ActiveDirectorySecurityInheritance.None);
            newRuleCount = DirectoryServices.GetAccessRules(user).Count;
            Assert.That(newRuleCount, Is.EqualTo(ruleCount));

            // Seting Access Rule From User
            Console.WriteLine($"Setting AccessRule For User [{accessRuleUser.Name}] On User [{user.Name}].");
            DirectoryServices.SetAccessRule(user, accessRuleUser, ActiveDirectoryRights.GenericRead, System.Security.AccessControl.AccessControlType.Allow, ActiveDirectorySecurityInheritance.None);
            newRuleCount = DirectoryServices.GetAccessRules(user).Count;
            Assert.That(newRuleCount, Is.GreaterThan(ruleCount));

            // Purge Access Rule From User
            Console.WriteLine($"Purging AccessRules For User [{accessRuleUser.Name}] From User [{user.Name}].");
            DirectoryServices.PurgeAccessRules(user, accessRuleUser);
            newRuleCount = DirectoryServices.GetAccessRules(user).Count;
            Assert.That(newRuleCount, Is.EqualTo(ruleCount));

            // Delete AccessRule User
            Utility.DeleteUser(accessRuleUser.DistinguishedName);
        }
Example #6
0
        public void Handler_GroupManagementTestsSuccess()
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            // Users
            UserPrincipal       user = Utility.CreateUser(workspaceName);
            UserPrincipalObject upo  = DirectoryServices.GetUser(user.DistinguishedName, true, false, false);
            int initialCount         = upo.Groups.Count;

            // Add User To Group
            Console.WriteLine($"Adding User [{user.Name}] To Group [{targetGroup.Name}]");
            parameters.Clear();
            parameters.Add("returngroupmembership", "true");
            parameters.Add("identity", user.DistinguishedName);
            parameters.Add("memberof", targetGroup.DistinguishedName);

            ActiveDirectoryHandlerResults result = Utility.CallPlan("AddUserToGroup", parameters);

            Assert.That(result.Results[0].Statuses[0].StatusId, Is.EqualTo(AdStatusType.Success));
            Assert.That(result.Results[0].User.Groups.Count, Is.EqualTo(initialCount + 1));

            // Remove User From Group
            Console.WriteLine($"Removing User [{user.Name}] From Group [{targetGroup.Name}]");
            parameters.Clear();
            parameters.Add("returngroupmembership", "true");
            parameters.Add("identity", user.DistinguishedName);
            parameters.Add("memberof", targetGroup.DistinguishedName);

            result = Utility.CallPlan("RemoveUserFromGroup", parameters);
            Assert.That(result.Results[0].Statuses[0].StatusId, Is.EqualTo(AdStatusType.Success));
            Assert.That(result.Results[0].User.Groups.Count, Is.EqualTo(initialCount));

            Utility.DeleteUser(user.DistinguishedName);

            // Groups
            GroupPrincipal       group = Utility.CreateGroup(workspaceName);
            GroupPrincipalObject gpo   = DirectoryServices.GetGroup(group.DistinguishedName, true, false, false);

            initialCount = gpo.Groups.Count;

            // Add Group To Group
            Console.WriteLine($"Adding Group [{group.Name}] To Group [{targetGroup.Name}]");
            parameters.Clear();
            parameters.Add("returngroupmembership", "true");
            parameters.Add("identity", group.DistinguishedName);
            parameters.Add("memberof", targetGroup.DistinguishedName);

            result = Utility.CallPlan("AddGroupToGroup", parameters);
            Assert.That(result.Results[0].Statuses[0].StatusId, Is.EqualTo(AdStatusType.Success));
            Assert.That(result.Results[0].Group.Groups.Count, Is.EqualTo(initialCount + 1));

            // Remove Group From Group
            Console.WriteLine($"Removing Group [{group.Name}] From Group [{targetGroup.Name}]");
            parameters.Clear();
            parameters.Add("returngroupmembership", "true");
            parameters.Add("identity", group.DistinguishedName);
            parameters.Add("memberof", targetGroup.DistinguishedName);

            result = Utility.CallPlan("RemoveGroupFromGroup", parameters);
            Assert.That(result.Results[0].Statuses[0].StatusId, Is.EqualTo(AdStatusType.Success));
            Assert.That(result.Results[0].Group.Groups.Count, Is.EqualTo(initialCount));

            Utility.DeleteGroup(group.DistinguishedName);
        }