예제 #1
0
def test_group_sync_from_udm_to_ad_with_move(group_class, sync_mode):
    with connector_setup(sync_mode), UCSTestUDM() as udm:
        udm_group = group_class()
        (udm_group_dn,
         ad_group_dn) = create_udm_group(udm, AD, udm_group,
                                         adconnector.wait_for_sync)

        print("\nMove UDM group\n")
        udm_container_dn = udm.create_object('container/cn',
                                             name=udm_group.container)
        udm_group_dn = udm.move_object('groups/group',
                                       dn=udm_group_dn,
                                       position=udm_container_dn)

        adconnector.wait_for_sync()
        AD.verify_object(ad_group_dn, None)
        ad_group_dn = ldap.dn.dn2str(
            [[("CN", udm_group.to_unicode(udm_group.group).get("name"),
               ldap.AVA_STRING)], [("CN", udm_group.container,
                                    ldap.AVA_STRING)]] +
            ldap.dn.str2dn(AD.adldapbase))
        AD.verify_object(ad_group_dn,
                         tcommon.map_udm_group_to_con(udm_group.group))

        delete_udm_group(udm, AD, udm_group_dn, ad_group_dn,
                         adconnector.wait_for_sync)
예제 #2
0
def test_group_sync_from_udm_to_ad_with_rename(group_class, sync_mode):
    with connector_setup(sync_mode), UCSTestUDM() as udm:
        udm_group = group_class()
        (udm_group_dn,
         ad_group_dn) = create_udm_group(udm, AD, udm_group,
                                         adconnector.wait_for_sync)

        print("\nRename UDM group\n")
        old_udm_dn = udm_group_dn  # part of the workaround for bug #41694
        udm_group_dn = udm.modify_object('groups/group',
                                         dn=udm_group_dn,
                                         **udm_group.to_unicode(
                                             udm_group.rename))
        # XXX after a modify, the old DN is _wrongly_ returned: see bug #41694
        if old_udm_dn == udm_group_dn:
            udm_group_dn = ldap.dn.dn2str(
                [[("CN", udm_group.to_unicode(udm_group.rename).get("name"),
                   ldap.AVA_STRING)]] + ldap.dn.str2dn(udm_group_dn)[1:])
            if old_udm_dn in udm._cleanup.get('groups/group', []):
                udm._cleanup.setdefault('groups/group',
                                        []).append(udm_group_dn)
                udm._cleanup['groups/group'].remove(old_udm_dn)
        # XXX end of workaround for bug #41694
        adconnector.wait_for_sync()

        AD.verify_object(ad_group_dn, None)
        ad_group_dn = ldap.dn.dn2str(
            [[("CN", udm_group.to_unicode(udm_group.rename).get("name"),
               ldap.AVA_STRING)], [("CN", "groups", ldap.AVA_STRING)]] +
            ldap.dn.str2dn(AD.adldapbase))
        AD.verify_object(ad_group_dn,
                         tcommon.map_udm_group_to_con(udm_group.rename))

        delete_udm_group(udm, AD, udm_group_dn, ad_group_dn,
                         adconnector.wait_for_sync)
예제 #3
0
def test_group_sync_from_udm_to_ad_with_nested_group(group_class, nested_class,
                                                     sync_mode):
    with connector_setup(sync_mode), UCSTestUDM() as udm:
        udm_group = group_class()
        nested_group = nested_class()
        (udm_group_dn,
         ad_group_dn) = create_udm_group(udm, AD, udm_group,
                                         adconnector.wait_for_sync)

        print("\nModifying UDM group\n")
        (nested_group_dn,
         ad_nested_group_dn) = create_udm_group(udm, AD, nested_group,
                                                adconnector.wait_for_sync)
        udm.modify_object('groups/group',
                          dn=udm_group_dn,
                          nestedGroup=[nested_group_dn])
        adconnector.wait_for_sync()
        ad_group = tcommon.map_udm_group_to_con(udm_group.group)
        ad_group.update({"member": [ad_nested_group_dn]})
        AD.verify_object(ad_group_dn, ad_group)
        delete_udm_group(udm, AD, nested_group_dn, ad_nested_group_dn,
                         adconnector.wait_for_sync)

        delete_udm_group(udm, AD, udm_group_dn, ad_group_dn,
                         adconnector.wait_for_sync)
예제 #4
0
def test_group_sync_from_ad_to_udm_with_move(group_class, sync_mode):
    with connector_setup(sync_mode):
        udm_group = group_class()
        (ad_group, ad_group_dn,
         udm_group_dn) = create_con_group(AD, udm_group,
                                          adconnector.wait_for_sync)

        print("\nMove AD group {!r} to {!r}\n".format(ad_group_dn,
                                                      udm_group.container))
        container_dn = AD.container_create(udm_group.container)
        ad_group_dn = AD.rename_or_move_user_or_group(ad_group_dn,
                                                      position=container_dn)
        AD.set_attributes(ad_group_dn,
                          **tcommon.map_udm_group_to_con(udm_group.group))
        adconnector.wait_for_sync()

        tcommon.verify_udm_object("groups/group", udm_group_dn, None)
        udm_group_dn = ldap.dn.dn2str(
            [[("CN", udm_group.to_unicode(udm_group.group).get("name"),
               ldap.AVA_STRING)], [("CN", udm_group.container,
                                    ldap.AVA_STRING)]] +
            ldap.dn.str2dn(tcommon.configRegistry['ldap/base']))
        tcommon.verify_udm_object("groups/group", udm_group_dn,
                                  udm_group.group)

        delete_con_group(AD, ad_group_dn, udm_group_dn,
                         adconnector.wait_for_sync)
예제 #5
0
def test_group_sync_from_udm_to_s4_with_nested_user(group_class, nested_class,
                                                    sync_mode):
    with connector_setup(sync_mode) as s4, UCSTestUDM() as udm:
        udm_group = group_class()
        nested_user = nested_class()
        (udm_group_dn,
         s4_group_dn) = create_udm_group(udm, s4, udm_group,
                                         s4connector.wait_for_sync)

        print("\nModifying UDM group\n")
        (nested_user_dn,
         s4_nested_user_dn) = create_udm_user(udm, s4, nested_user,
                                              s4connector.wait_for_sync)
        udm.modify_object('groups/group',
                          dn=udm_group_dn,
                          users=[nested_user_dn])
        s4connector.wait_for_sync()
        s4_group = tcommon.map_udm_group_to_con(udm_group.group)
        s4_group.update({"member": [s4_nested_user_dn]})
        s4.verify_object(s4_group_dn, s4_group)
        delete_udm_user(udm, s4, nested_user_dn, s4_nested_user_dn,
                        s4connector.wait_for_sync)

        delete_udm_group(udm, s4, udm_group_dn, s4_group_dn,
                         s4connector.wait_for_sync)
예제 #6
0
def test_group_sync_from_s4_to_udm_with_rename(group_class, sync_mode):
    with connector_setup(sync_mode) as s4:
        udm_group = group_class()
        (s4_group, s4_group_dn,
         udm_group_dn) = create_con_group(s4, udm_group,
                                          s4connector.wait_for_sync)

        print("\nRename S4 group {!r} to {!r}\n".format(
            s4_group_dn, udm_group.rename.get("name")))
        s4_group_dn = s4.rename_or_move_user_or_group(
            s4_group_dn, name=udm_group.rename.get("name"))
        s4.set_attributes(s4_group_dn,
                          **tcommon.map_udm_group_to_con(udm_group.rename))
        s4connector.wait_for_sync()

        tcommon.verify_udm_object("groups/group", udm_group_dn, None)
        udm_group_dn = ldap.dn.dn2str(
            [[("CN", udm_group.rename.get("name"),
               ldap.AVA_STRING)], [("CN", "groups", ldap.AVA_STRING)]] +
            ldap.dn.str2dn(tcommon.configRegistry['ldap/base']))
        tcommon.verify_udm_object("groups/group", udm_group_dn,
                                  udm_group.rename)

        delete_con_group(s4, s4_group_dn, udm_group_dn,
                         s4connector.wait_for_sync)