def test_container_cn_relocation_with_special_characters(self, udm):
        """Move container/cn into another container/cn special characters"""
        cn_name = uts.random_name_special_characters()

        cn = udm.create_object('container/cn', name=cn_name)
        cn2 = udm.create_object('container/cn',
                                name=uts.random_name_special_characters())

        udm.move_object('container/cn', dn=cn, position=cn2)
        utils.verify_ldap_object('cn=%s,%s' %
                                 (ldap.dn.escape_dn_chars(cn_name), cn2))
    def test_container_ou_relocation_with_special_characters(self, udm):
        """Move container/ou into another container/ou  with special characters"""
        ou_name = uts.random_name_special_characters()

        ou = udm.create_object('container/ou', name=ou_name)
        ou2 = udm.create_object('container/ou',
                                name=uts.random_name_special_characters())

        udm.move_object('container/ou', dn=ou, position=ou2)
        utils.verify_ldap_object('ou=%s,%s' %
                                 (ldap.dn.escape_dn_chars(ou_name), ou2))
    def test_container_cn_recursive_removal_with_special_characters(self, udm):
        """Remove container/cn recursively special characters"""
        cn_name = uts.random_name_special_characters()
        cn2_name = uts.random_name_special_characters()

        cn = udm.create_object('container/cn', name=cn_name)
        cn2 = udm.create_object('container/cn', name=cn2_name)
        cn3 = udm.create_object('container/cn',
                                name=uts.random_name_special_characters())

        udm.move_object('container/cn', dn=cn, position=cn2)
        udm.move_object('container/cn', dn=cn2, position=cn3)
        cn = 'cn=%s,cn=%s,%s' % (ldap.dn.escape_dn_chars(cn_name),
                                 ldap.dn.escape_dn_chars(cn2_name), cn3)

        udm.remove_object('container/cn', dn=cn3)
        utils.verify_ldap_object(cn, should_exist=False)
    def test_container_ou_creation_set_description_with_special_characters(
            self, udm):
        """Set description during container/ou creation with special characters"""
        description = uts.random_string()

        ou = udm.create_object('container/ou',
                               name=uts.random_name_special_characters(),
                               description=description)
        utils.verify_ldap_object(ou, {'description': [description]})
    def test_container_ou_recursive_removal_with_special_characters(self, udm):
        """Remove an container/ou recursively  with special characters"""
        ou_name = uts.random_name_special_characters()
        ou2_name = uts.random_name_special_characters()

        ou = udm.create_object('container/ou', name=ou_name)
        ou2 = udm.create_object('container/ou', name=ou2_name)
        ou3 = udm.create_object('container/ou',
                                name=uts.random_name_special_characters())

        utils.wait_for_replication_and_postrun()

        udm.move_object('container/ou', dn=ou, position=ou2)
        udm.move_object('container/ou', dn=ou2, position=ou3)

        ou = 'ou=%s,ou=%s,%s' % (ldap.dn.escape_dn_chars(ou_name),
                                 ldap.dn.escape_dn_chars(ou2_name), ou3)
        udm.remove_object('container/ou', dn=ou3)
        utils.verify_ldap_object(ou, should_exist=False)
    def test_container_cn_modification_set_description_with_special_characters(
            self, udm):
        """Set description during container/cn modification special characters"""
        description = uts.random_string()

        cn_name = uts.random_name_special_characters()
        cn = udm.create_object('container/cn', name=cn_name)
        wait_for_drs_replication(ldap.filter.filter_format('cn=%s', [cn_name]))

        udm.modify_object('container/cn', dn=cn, description=description)
        utils.verify_ldap_object(cn, {'description': [description]})
    def test_container_cn_rename_with_special_characters(self, udm, ucr):
        """Rename a container/cn with subobjects"""
        user_name = uts.random_string()

        cn_name = uts.random_name_special_characters()
        cn_name_new = uts.random_name_special_characters()

        cn = udm.create_object('container/cn', name=cn_name)
        user = udm.create_user(position=cn, username=user_name)

        udm.modify_object('container/cn', dn=cn, name=cn_name_new)
        utils.verify_ldap_object(cn, should_exist=False)
        utils.verify_ldap_object(user[0], should_exist=False)

        new_cn = 'cn=%s,%s' % (ldap.dn.escape_dn_chars(cn_name_new),
                               ucr.get('ldap/base'))
        new_user = '******' % (ldap.dn.escape_dn_chars(user_name),
                                        ldap.dn.escape_dn_chars(cn_name_new),
                                        ucr.get('ldap/base'))
        utils.verify_ldap_object(new_cn, should_exist=True)
        utils.verify_ldap_object(new_user, should_exist=True)
    def test_container_ou_rename_with_special_characters(self, udm, ucr):
        """Rename a container/ou with subobjects with special characters"""
        # bugs: [35959]
        user_name = uts.random_string()

        ou_name = uts.random_name_special_characters()
        ou_name_new = uts.random_name_special_characters()

        ou = udm.create_object('container/ou', name=ou_name)
        user = udm.create_user(position=ou, username=user_name)

        udm.modify_object('container/ou', dn=ou, name=ou_name_new)
        utils.verify_ldap_object(ou, should_exist=False)
        utils.verify_ldap_object(user[0], should_exist=False)

        new_ou = 'ou=%s,%s' % (ldap.dn.escape_dn_chars(ou_name_new),
                               ucr.get('ldap/base'))
        new_user = '******' % (ldap.dn.escape_dn_chars(user_name),
                                        ldap.dn.escape_dn_chars(ou_name_new),
                                        ucr.get('ldap/base'))
        utils.verify_ldap_object(new_ou, should_exist=True)
        utils.verify_ldap_object(new_user, should_exist=True)
Ejemplo n.º 9
0
	def __init__(self, selection=None):
		super(SpecialUser, self).__init__(
			user={
				"username": random_bytestring(charset=SPECIAL_CHARSET_USERNAME),
				"firstname": tstrings.random_name_special_characters().encode('UTF-8'),
				"lastname": tstrings.random_name_special_characters().encode('UTF-8'),
				"description": random_bytestring(charset=SPECIAL_CHARSET),
				"street": random_bytestring(charset=SPECIAL_CHARSET),
				"city": random_bytestring(charset=SPECIAL_CHARSET),
				"postcode": random_bytestring(numeric=True),
				"profilepath": random_bytestring(charset=SPECIAL_CHARSET),
				"scriptpath": random_bytestring(charset=SPECIAL_CHARSET),
				"phone": random_bytestring(numeric=True),
				"homeTelephoneNumber": random_bytestring(numeric=True),
				"mobileTelephoneNumber": random_bytestring(numeric=True),
				"pagerTelephoneNumber": random_bytestring(numeric=True),
				"sambaUserWorkstations": random_bytestring(numeric=True),
			},
			rename={"username": random_bytestring(charset=SPECIAL_CHARSET_USERNAME)},
			container=random_string(charset=SPECIAL_CHARSET),
			selection=selection,
		)
        def test_container(parent, add_user):
            if parent is None:
                parent = ucr.get('ldap/base')
            user_name = 'X' + uts.random_string(
            )  # test preserving name (case sensitivity)

            cn_name = uts.random_name_special_characters()
            cn_name_new = cn_name.upper()

            cn = udm.create_object('container/cn',
                                   position=parent,
                                   name=cn_name)
            if add_user:
                udm.create_user(position=cn, username=user_name)

            try:
                udm.modify_object('container/cn', dn=cn, name=cn_name_new)
            except AssertionError:
                pass
            lo = utils.get_ldap_connection()
            for dn, entry in lo.search(filter='ou=temporary_move_container_*'):
                to_be_removed = udm._cleanup.setdefault('container/ou', [])
                to_be_removed.append(dn)
                assert False, 'ou = %s remained' % dn

            new_cn = 'cn=%s,%s' % (ldap.dn.escape_dn_chars(cn_name_new),
                                   parent)
            new_user = '******' % (ldap.dn.escape_dn_chars(user_name),
                                      new_cn)

            utils.verify_ldap_object(new_cn, should_exist=True)
            if add_user:
                for dn, entry in lo.search(filter=ldap.filter.filter_format(
                        'uid=%s', [user_name])):
                    assert entry.get('uid')[0] == user_name.encode(
                        'UTF-8'
                    ), 'CASE SENSITIVITY: uid = %s; expected: %s' % (
                        entry.get('uid')[0], user_name)
                utils.verify_ldap_object(new_user, should_exist=True)

            for dn, entry in lo.search(
                    filter=ldap.filter.filter_format('cn=%s', [cn_name_new])):
                assert entry.get('cn')[0] == cn_name_new.encode(
                    'UTF-8'), 'cn = %s; expected: %s' % (entry.get('cn')[0],
                                                         cn_name_new)
            return new_cn
        def test_organizational_unit(parent, add_user):
            if parent is None:
                parent = ucr.get('ldap/base')
            user_name = 'X' + uts.random_string(
            )  # test preserving name (case sensitivity)

            ou_name = uts.random_name_special_characters()
            ou_name_new = ou_name.upper()

            ou = udm.create_object('container/ou',
                                   position=parent,
                                   name=ou_name,
                                   wait_for=True)
            if add_user:
                udm.create_user(position=ou, username=user_name)

            try:
                udm.modify_object('container/ou',
                                  dn=ou,
                                  name=ou_name_new,
                                  wait_for=True)
            except AssertionError:
                pass
            for dn, entry in lo.search(filter='ou=temporary_move_container_*'):
                if dn not in existing_temporary_ous:
                    to_be_removed = udm._cleanup.setdefault('container/ou', [])
                    to_be_removed.append(dn)
                assert dn in existing_temporary_ous, 'ou = %s remained' % dn

            new_ou = 'ou=%s,%s' % (ldap.dn.escape_dn_chars(ou_name_new),
                                   parent)
            new_user = '******' % (ldap.dn.escape_dn_chars(user_name),
                                      new_ou)

            utils.verify_ldap_object(new_ou, {'ou': [ou_name_new]},
                                     should_exist=True)
            if add_user:
                for dn, entry in lo.search(filter=ldap.filter.filter_format(
                        'uid=%s', [user_name])):
                    assert entry.get('uid')[0] == user_name.encode(
                        'UTF-8'
                    ), 'CASE SENSITIVITY: uid = %s; expected: %s' % (
                        entry.get('uid')[0], user_name)
                utils.verify_ldap_object(new_user, should_exist=True)

            return new_ou
    def test_container_ou_rename_uppercase_rollback_with_special_characters(
            self, udm, ucr):
        """Rename a container/ou with un-moveable subobjects from lower to upper case with special characters"""
        user_name = uts.random_string()
        network_name = uts.random_string()

        ou_name = uts.random_name_special_characters()
        ou_name_new = ou_name.upper()

        ou = udm.create_object('container/ou', name=ou_name)
        wait_for_drs_replication(ldap.filter.filter_format('ou=%s', [ou_name]))
        udm.create_user(position=ou, username=user_name)
        udm.create_object('networks/network',
                          position=ou,
                          name=network_name,
                          network='1.1.1.1',
                          netmask='24')

        with pytest.raises(udm_test.UCSTestUDM_ModifyUDMObjectFailed) as exc:
            udm.modify_object('container/ou', dn=ou, name=ou_name_new)
        # This operation is not allowed on this object: Unable to move object ayj9blkm9k (networks/network) in subtree, trying to revert changes.
        assert 'Unable to move object' in str(exc.value)

        new_ou = 'ou=%s,%s' % (ldap.dn.escape_dn_chars(ou_name_new),
                               ucr.get('ldap/base'))
        new_user = '******' % (ldap.dn.escape_dn_chars(user_name),
                                        ldap.dn.escape_dn_chars(ou_name_new),
                                        ucr.get('ldap/base'))
        utils.verify_ldap_object(new_ou, should_exist=True)
        utils.verify_ldap_object(new_user, should_exist=True)

        lo = utils.get_ldap_connection()
        for dn, entry in lo.search(
                filter=ldap.filter.filter_format('ou=%s', (ou_name, ))):
            assert entry.get('ou')[0] == ou_name.encode(
                'UTF-8'), 'ou = %s; expected: %s' % (entry.get('ou')[0],
                                                     ou_name)
    def test_container_cn_rename_uppercase_rollback_with_special_characters(
            self, udm, ucr):
        """Rename a container/cn with un-moveable subobjects from lower to upper case special characters"""
        user_name = uts.random_string()
        network_name = uts.random_string()

        cn_name = uts.random_name_special_characters()
        cn_name_new = cn_name.upper()

        cn = udm.create_object('container/cn', name=cn_name)
        wait_for_drs_replication(ldap.filter.filter_format('cn=%s', [cn_name]))
        udm.create_user(position=cn, username=user_name)
        udm.create_object('networks/network',
                          position=cn,
                          name=network_name,
                          network='1.1.1.1',
                          netmask='24')

        with pytest.raises(udm_test.UCSTestUDM_ModifyUDMObjectFailed):
            udm.modify_object('container/cn', dn=cn, name=cn_name_new)

        utils.wait_for_replication_and_postrun()
        new_cn = 'cn=%s,%s' % (ldap.dn.escape_dn_chars(cn_name_new),
                               ucr.get('ldap/base'))
        new_user = '******' % (ldap.dn.escape_dn_chars(user_name),
                                        ldap.dn.escape_dn_chars(cn_name_new),
                                        ucr.get('ldap/base'))
        utils.verify_ldap_object(new_cn, should_exist=True)
        utils.verify_ldap_object(new_user, should_exist=True)

        lo = utils.get_ldap_connection()
        for dn, entry in lo.search(
                filter=ldap.filter.filter_format('cn=%s', [cn_name])):
            assert entry.get('cn')[0] == cn_name.encode(
                'UTF-8'), 'cn = %s; expected: %s' % (entry.get('cn')[0],
                                                     cn_name)
 def test_container_cn_creation_with_special_characters(self, udm):
     """Create container/cn"""
     cn = udm.create_object('container/cn',
                            name=uts.random_name_special_characters())
     utils.verify_ldap_object(cn)
 def test_container_ou_creation_with_special_characters(self, udm):
     """Create container/ou with specials characters"""
     ou = udm.create_object('container/ou',
                            name=uts.random_name_special_characters())
     utils.verify_ldap_object(ou)