def test_abort(automember_fixture, topo):
    """Test the abort rebuild task

    :id: 24763279-48ec-4c34-91b3-f681679dec3a
    :setup: Standalone Instance
    :steps:
        1. Setup automember and create a bunch of users
        2. Start rebuild task
        3. Abort rebuild task
        4. Verify rebuild task was aborted
    :expectedresults:
        1. Success
        2. Success
        3. Success
        4. Success
    """

    automemberplugin = AutoMembershipPlugin(topo.standalone)

    # Run rebuild task
    task = automemberplugin.fixup(DEFAULT_SUFFIX, "objectclass=top")
    time.sleep(1)

    # Abort rebuild task
    automemberplugin.abort_fixup()

    # Wait for rebuild task to finish
    task.wait()

    # Check errors log for abort message
    assert topo.standalone.searchErrorsLog("task was intentionally aborted")
Exemple #2
0
def fixup(inst, basedn, log, args):
    plugin = AutoMembershipPlugin(inst)
    log.info(
        'Attempting to add task entry... This will fail if Automembership plug-in is not enabled.'
    )
    if not plugin.status():
        log.error(
            "'%s' is disabled. Rebuild membership task can't be executed" %
            plugin.rdn)
    fixup_task = plugin.fixup(args.DN, args.filter)
    fixup_task.wait()
    exitcode = fixup_task.get_exit_code()
    if exitcode != 0:
        log.error(
            'Rebuild membership task for %s has failed. Please, check logs')
    else:
        log.info('Successfully added task entry')
def test_mods(automember_fixture, topo):
    """Modify the user so that it is added to the various automember groups

    :id: 28a2b070-7f16-4905-8831-c80fa6441693
    :setup: Standalone Instance
    :steps:
        1. Update user that should add it to group[0]
        2. Update user that should add it to group[1]
        3. Update user that should add it to group[2]
        4. Update user that should add it to group[0]
        5. Test rebuild task correctly moves user to group[1]
    :expectedresults:
        1. Success
        2. Success
        3. Success
        4. Success
        5. Success
    """
    (user, groups) = automember_fixture

    # Update user which should go into group[0]
    user.replace('cn', 'whatever')
    groups[0].is_member(user.dn)
    if groups[1].is_member(user.dn):
        assert False
    if groups[2].is_member(user.dn):
        assert False

    # Update user0 which should go into group[1]
    user.replace('cn', 'mark')
    groups[1].is_member(user.dn)
    if groups[0].is_member(user.dn):
        assert False
    if groups[2].is_member(user.dn):
        assert False

    # Update user which should go into group[2]
    user.replace('cn', 'simon')
    groups[2].is_member(user.dn)
    if groups[0].is_member(user.dn):
        assert False
    if groups[1].is_member(user.dn):
        assert False

    # Update user which should go back into group[0] (full circle)
    user.replace('cn', 'whatever')
    groups[0].is_member(user.dn)
    if groups[1].is_member(user.dn):
        assert False
    if groups[2].is_member(user.dn):
        assert False

    #
    # Test rebuild task.  First disable plugin
    #
    automemberplugin = AutoMembershipPlugin(topo.standalone)
    automemberplugin.disable()
    topo.standalone.restart()

    # Make change that would move the entry from group[0] to group[1]
    user.replace('cn', 'mark')

    # Enable plugin
    automemberplugin.enable()
    topo.standalone.restart()

    # Run rebuild task
    task = automemberplugin.fixup(DEFAULT_SUFFIX, "objectclass=posixaccount")
    task.wait()

    # Test membership
    groups[1].is_member(user.dn)
    if groups[0].is_member(user.dn):
        assert False
    if groups[2].is_member(user.dn):
        assert False

    # Success
    log.info("Test PASSED")