#!/usr/share/ucs-test/runner python3
## desc: Create users/user
## tags: [udm,apptest,SKIP]
## roles: [domaincontroller_master]
## exposure: dangerous
## bugs: [31317,48956]
## packages:
##   - univention-directory-manager-tools


from __future__ import print_function
import univention.testing.utils as utils
import univention.testing.udm as udm_test
from univention.testing.strings import random_username

if __name__ == '__main__':
	with udm_test.UCSTestUDM() as udm:
		user = udm.create_user()[0]
		sec = udm.create_user(secretary=user)[0]
		utils.verify_ldap_object(sec, {'secretary': [user]})

		print('1. modrdn: change username', user)
		user = udm.modify_object('users/user', dn=user, username=random_username())
		utils.verify_ldap_object(sec, {'secretary': [user]})

		print('2. move into container', user)
		cn = udm.create_object('container/cn', name='test')
		user = udm.move_object('users/user', dn=user, position=cn)
		utils.verify_ldap_object(sec, {'secretary': [user]})

		print('3. rename container', user)
		cn_new = udm.modify_object('container/cn', dn=cn, name='test2')
		assert cn != cn_new
		udm._cleanup['users/user'].remove(user)
		user = user.replace(cn, cn_new)
		udm._cleanup['users/user'].append(user)
		cn = cn_new
		utils.verify_ldap_object(sec, {'secretary': [user]})

		print('4. move container', user)
		cn_new = udm.create_object('container/cn', name='test3')
		cn_new = udm.move_object('container/cn', dn=cn, position=cn_new)
		udm._cleanup['users/user'].remove(user)
		user = user.replace(cn, cn_new)
		udm._cleanup['users/user'].append(user)
		cn = cn_new
		utils.verify_ldap_object(sec, {'secretary': [user]})

		print('5. remove user', user)
		udm.remove_object('users/user', dn=user)
		utils.verify_ldap_object(sec, {'secretary': []})
