#!/usr/share/ucs-test/runner python3
## desc: "Rename users which are in a group and test sync"
## exposure: dangerous
## packages:
##   - univention-config
##   - univention-directory-manager-tools
##   - univention-samba4
##   - univention-s4-connector
#
#  Bug #31324

import univention.testing.udm as udm_test
import univention.testing.strings as uts
import s4connector

try:
	from itertools import izip as zip
except ImportError:  # Py3
	pass


if __name__ == '__main__':
	with udm_test.UCSTestUDM() as udm:
		s4connector.exit_if_connector_not_running()

		# create users and add them to a group
		new_users = [uts.random_name(), uts.random_name()]
		group_dn = udm.create_group()[0]
		users = [udm.create_user()[0], udm.create_user()[0]]
		s4connector.wait_for_sync()
		user_sids = [(s4connector.get_object_sid(user)) for user in users]
		udm.modify_object('groups/group', dn=group_dn, append={'users': [user for user in users]})
		s4connector.wait_for_sync()

		# check users (ldap objects and if synced )
		s4connector.verify_users(group_dn, users)
		[(s4connector.check_object(user)) for user in users]
		s4connector.check_object(group_dn)

		# modify users
		modified_users = []
		for user, new_user in zip(users, new_users):
			modified_users.append(s4connector.modify_username(user, new_user, udm))
		s4connector.wait_for_sync()

		# check group and users again (ldap objects and if synced)
		s4connector.check_object(group_dn)
		s4connector.verify_users(group_dn, modified_users)
		for modified_user, user_sid, user in zip(modified_users, user_sids, users):
			s4connector.check_object(modified_user, user_sid, user)

	s4connector.wait_for_sync()
