Example #1
0
def test_user_sync_from_ad_to_udm_with_move(user_class, sync_mode):
    with connector_setup(sync_mode):
        udm_user = user_class()
        (basic_ad_user, ad_user_dn,
         udm_user_dn) = create_con_user(AD, udm_user,
                                        adconnector.wait_for_sync)

        print("\nMove AD user {!r} to {!r}\n".format(ad_user_dn,
                                                     udm_user.container))
        container_dn = AD.container_create(udm_user.container)
        ad_user_dn = AD.rename_or_move_user_or_group(ad_user_dn,
                                                     position=container_dn)
        AD.set_attributes(ad_user_dn,
                          **tcommon.map_udm_user_to_con(udm_user.basic))
        adconnector.wait_for_sync()

        tcommon.verify_udm_object("users/user", udm_user_dn, None)
        udm_user_dn = ldap.dn.dn2str(
            [[("uid", udm_user.to_unicode(udm_user.basic).get("username"),
               ldap.AVA_STRING)], [("CN", udm_user.container,
                                    ldap.AVA_STRING)]] +
            ldap.dn.str2dn(tcommon.configRegistry['ldap/base']))
        tcommon.verify_udm_object("users/user", udm_user_dn, udm_user.basic)

        delete_con_user(AD, ad_user_dn, udm_user_dn, adconnector.wait_for_sync)
def test_user_sync_from_ad_to_udm(user_class, sync_mode):
	with connector_setup(sync_mode):
		udm_user = user_class()
		(basic_ad_user, ad_user_dn, udm_user_dn) = create_con_user(AD, udm_user, adconnector.wait_for_sync)

		print("\nModifying AD user\n")
		AD.set_attributes(ad_user_dn, **tcommon.map_udm_user_to_con(udm_user.user))
		adconnector.wait_for_sync()
		tcommon.verify_udm_object("users/user", udm_user_dn, udm_user.user)

		delete_con_user(AD, ad_user_dn, udm_user_dn, adconnector.wait_for_sync)
Example #3
0
def test_user_sync_from_s4_to_udm(user_class, sync_mode):
    with connector_setup(sync_mode) as s4:
        udm_user = user_class()
        (basic_s4_user, s4_user_dn,
         udm_user_dn) = create_con_user(s4, udm_user,
                                        s4connector.wait_for_sync)

        print("\nModifying S4 user\n")
        s4.set_attributes(s4_user_dn,
                          **tcommon.map_udm_user_to_con(udm_user.user))
        s4connector.wait_for_sync()
        tcommon.verify_udm_object("users/user", udm_user_dn, udm_user.user)

        delete_con_user(s4, s4_user_dn, udm_user_dn, s4connector.wait_for_sync)
def test_group_sync_from_ad_to_udm_with_nested_user(group_class, nested_class, sync_mode):
	with connector_setup(sync_mode):
		udm_group = group_class()
		nested_user = nested_class()
		(ad_group, ad_group_dn, udm_group_dn) = create_con_group(AD, udm_group, adconnector.wait_for_sync)

		print("\nModifying AD group\n")
		(nested_ad_user, nested_ad_user_dn, nested_udm_user_dn) = create_con_user(AD, nested_user, adconnector.wait_for_sync)
		AD.set_attributes(ad_group_dn, member=[nested_ad_user_dn])
		adconnector.wait_for_sync()
		udm_attributes = {"users": [nested_udm_user_dn]}
		udm_attributes.update(udm_group.group)
		tcommon.verify_udm_object("groups/group", udm_group_dn, udm_attributes)
		delete_con_user(AD, nested_ad_user_dn, nested_udm_user_dn, adconnector.wait_for_sync)

		delete_con_group(AD, ad_group_dn, udm_group_dn, adconnector.wait_for_sync)
Example #5
0
def test_group_sync_from_s4_to_udm_with_nested_user(group_class, nested_class,
                                                    sync_mode):
    with connector_setup(sync_mode) as s4:
        udm_group = group_class()
        nested_user = nested_class()
        (s4_group, s4_group_dn,
         udm_group_dn) = create_con_group(s4, udm_group,
                                          s4connector.wait_for_sync)

        print("\nModifying S4 group\n")
        (nested_s4_user, nested_s4_user_dn,
         nested_udm_user_dn) = create_con_user(s4, nested_user,
                                               s4connector.wait_for_sync)
        s4.set_attributes(s4_group_dn, member=[nested_s4_user_dn])
        s4connector.wait_for_sync()
        udm_attributes = {"users": [nested_udm_user_dn]}
        udm_attributes.update(udm_group.group)
        tcommon.verify_udm_object("groups/group", udm_group_dn, udm_attributes)
        delete_con_user(s4, nested_s4_user_dn, nested_udm_user_dn,
                        s4connector.wait_for_sync)

        delete_con_group(s4, s4_group_dn, udm_group_dn,
                         s4connector.wait_for_sync)
Example #6
0
def test_user_sync_from_s4_to_udm_with_rename(user_class, sync_mode):
    with connector_setup(sync_mode) as s4:
        udm_user = user_class()
        (basic_s4_user, s4_user_dn,
         udm_user_dn) = create_con_user(s4, udm_user,
                                        s4connector.wait_for_sync)

        print("\nRename S4 user {!r} to {!r}\n".format(
            s4_user_dn, udm_user.rename.get("username")))
        s4_user_dn = s4.rename_or_move_user_or_group(
            s4_user_dn, name=udm_user.rename.get("username"))
        s4.set_attributes(s4_user_dn,
                          **tcommon.map_udm_user_to_con(udm_user.rename))
        s4connector.wait_for_sync()

        tcommon.verify_udm_object("users/user", udm_user_dn, None)
        udm_user_dn = ldap.dn.dn2str(
            [[("uid", udm_user.rename.get("username"),
               ldap.AVA_STRING)], [("CN", "users", ldap.AVA_STRING)]] +
            ldap.dn.str2dn(tcommon.configRegistry['ldap/base']))
        tcommon.verify_udm_object("users/user", udm_user_dn, udm_user.rename)

        delete_con_user(s4, s4_user_dn, udm_user_dn, s4connector.wait_for_sync)
def test_attribute_sync_from_ad_to_udm(attribute, sync_mode):
    (ucs_attribute, con_attribute, con_other_attribute) = attribute
    udm_user = NormalUser(selection=("username", "lastname", ucs_attribute))
    primary_value = udm_user.basic.get(ucs_attribute)
    all_values = (primary_value, random_number(), random_number())
    secondary_values = all_values[1:]

    with connector_setup(sync_mode):
        # A single `telephoneNumber` must be synced to `phone` in UDM.
        (basic_ad_user, ad_user_dn,
         udm_user_dn) = create_con_user(AD, udm_user,
                                        adconnector.wait_for_sync)

        # Additional values in `otherTelephone` must be appended to `phone`.
        print("\nModifying AD user: {}={}, {}={}\n".format(
            con_attribute, primary_value, con_other_attribute,
            secondary_values))
        AD.set_attributes(
            ad_user_dn, **{
                con_attribute: primary_value,
                con_other_attribute: secondary_values
            })
        adconnector.wait_for_sync()
        tcommon.verify_udm_object("users/user", udm_user_dn,
                                  {ucs_attribute: all_values})
        AD.verify_object(ad_user_dn, {
            con_attribute: primary_value,
            con_other_attribute: secondary_values
        })

        if sync_mode == "sync":  # otherwise the connector can't write into AD
            # If we delete the value of `telephoneNumber` from AD, we expect to get
            # the first value of `otherTelephone` duplicated into
            # `telephoneNumber`.
            (new_primary, _) = secondary_values
            print("\nModifying AD user: {}={}\n".format(con_attribute, []))
            AD.set_attributes(ad_user_dn, **{con_attribute: []})
            adconnector.wait_for_sync()
            tcommon.verify_udm_object("users/user", udm_user_dn,
                                      {ucs_attribute: secondary_values})
            AD.verify_object(ad_user_dn, {
                con_attribute: new_primary,
                con_other_attribute: secondary_values
            })

            # Deleting the duplicate from `otherTelephone` must retain the value of
            # `telephoneNumber` and `phone` in UDM.
            print("\nModifying AD user: {}={}\n".format(
                con_other_attribute, []))
            AD.set_attributes(ad_user_dn, **{con_other_attribute: []})
            adconnector.wait_for_sync()
            tcommon.verify_udm_object("users/user", udm_user_dn,
                                      {ucs_attribute: new_primary})
            AD.verify_object(ad_user_dn, {
                con_attribute: new_primary,
                con_other_attribute: []
            })

        # Setting a new `telephoneNumber` and no `otherTelephone` in AD must
        # result in a single new value in `phone`.
        new_phone_who_dis = random_number()
        print("\nModifying AD user: {}={}\n".format(con_attribute,
                                                    new_phone_who_dis))
        AD.set_attributes(
            ad_user_dn, **{
                con_attribute: new_phone_who_dis,
                con_other_attribute: []
            })
        adconnector.wait_for_sync()
        tcommon.verify_udm_object("users/user", udm_user_dn,
                                  {ucs_attribute: new_phone_who_dis})
        AD.verify_object(ad_user_dn, {
            con_attribute: new_phone_who_dis,
            con_other_attribute: []
        })

        # Setting no `telephoneNumber` and no `otherTelephone` in AD must
        # result in no value in `phone`.
        print("\nModifying AD user: {}={}\n".format(con_attribute, []))
        AD.set_attributes(ad_user_dn, **{
            con_attribute: [],
            con_other_attribute: []
        })
        adconnector.wait_for_sync()
        tcommon.verify_udm_object("users/user", udm_user_dn,
                                  {ucs_attribute: []})
        AD.verify_object(ad_user_dn, {
            con_attribute: [],
            con_other_attribute: []
        })

        delete_con_user(AD, ad_user_dn, udm_user_dn, adconnector.wait_for_sync)