def test_remove_group_owner(ldap_connection, group): """removes any owners of the given group. Args: ldap_connection: obj: A bound mock mock_ldap_connection group: obj: dict: common_name: str: A common name of a group AD object. name: str: A name of a group AD object. """ group_distinct_name = ( "CN=%s,OU=Roles,OU=Security,OU=Groups,DC=AD2012,DC=LAB" % group["common_name"]) clear_role_owners(ldap_connection, group["common_name"]) update_when_changed(ldap_connection, group_distinct_name) fake_group = get_fake_group(ldap_connection, group["common_name"]) put_in_inbound_queue(fake_group, "group") # wait for the fake group to be ingested by rbac_ledger_sync time.sleep(3) role_id = get_role_id_from_cn(group["common_name"]) role_owners = get_role_owners(role_id) assert len(role_owners) is 0
def is_user_the_role_owner(role_common_name, user_common_name): """Checks to see if a given user is an owner of the given role/group in rethinkDB. Args: user_common_name: str: string containing the common name of an AD user object. role_common_name: str: string containing the common name of an AD role/group object. Returns: bool: True: if the user is an owner of the given group. False: if the user is not an owner of the given group. """ role_id = get_role_id_from_cn(role_common_name) user_distinct_name = ("CN=%s,OU=Users,OU=Accounts,DC=AD2012,DC=LAB" % user_common_name) next_id = get_user_next_id(remote_id=user_distinct_name) role_owners = get_role_owners(role_id) user_is_role_owner = False if len(role_owners) is 1: if role_owners[0]["related_id"] == next_id: user_is_role_owner = True return user_is_role_owner
def test_delete_user(ldap_connection): """Deletes a AD user in NEXT Args: ldap_connection: obj: A bound mock mock_ldap_connection """ # Create fake user and attach as owner to a role create_fake_user(ldap_connection, "jchan20", "Jackie Chan", "Jackie") user_remote_id = "CN=jchan20,OU=Users,OU=Accounts,DC=AD2012,DC=LAB" create_fake_group(ldap_connection, "jchan_role", "jchan_role", user_remote_id) group_distinct_name = ( "CN=jchan_role,OU=Roles,OU=Security,OU=Groups,DC=AD2012,DC=LAB") addMembersToGroups.ad_add_members_to_groups(ldap_connection, user_remote_id, group_distinct_name, fix=True) fake_user = get_fake_user(ldap_connection, "jchan20") put_in_inbound_queue(fake_user, "user") fake_group = get_fake_group(ldap_connection, "jchan_role") put_in_inbound_queue(fake_group, "group") time.sleep(3) # See if owner and role are in the system email = "*****@*****.**" assert is_user_in_db(email) is True assert is_group_in_db("jchan_role") is True # See if all LDAP user has entries in the following # off chain tables: user_mapping and metadata user = get_user_in_db_by_email(email) next_id = user[0]["next_id"] assert get_user_mapping_entry(next_id) assert get_user_metadata_entry(next_id) # See that the owner is assigned to correct role role = get_role("jchan_role") owners = get_role_owners(role[0]["role_id"]) members = get_role_members(role[0]["role_id"]) assert owners[0]["related_id"] == next_id assert members[0]["related_id"] == next_id # Create a NEXT role with LDAP user as an admin and # check for LDAP user's entry in auth table next_role_id = create_next_role_ldap(user=user[0], role_name="managers") admins = get_role_admins(next_role_id) assert admins[0]["related_id"] == next_id assert get_auth_entry(next_id) # Create a NEXT pack with LDAP user as an owner next_pack_id = create_pack_ldap(user=user[0], pack_name="technology department") assert check_user_is_pack_owner(next_pack_id, next_id) # Delete user and verify LDAP user and related off chain # table entries have been deleted, role still exists # and role relationships have been deleted insert_deleted_entries([user_remote_id], "user_deleted") time.sleep(3) assert get_deleted_user_entries(next_id) == [] assert get_pack_owners_by_user(next_id) == [] assert is_group_in_db("jchan_role") is True assert get_role_owners(role[0]["role_id"]) == [] assert get_role_admins(next_role_id) == [] assert get_role_members(role[0]["role_id"]) == [] delete_role_by_name("managers") delete_pack_by_name("technology department")