#!/usr/share/ucs-test/runner python
## -*- coding: utf-8 -*-
## desc: create OX user in new context to be found by domain name
## tags: [apptest]
## exposure: dangerous
## packages:
##   - univention-ox
## bugs: [43264]

import univention.testing.udm as testing_udm
import univention.testing.ucr as testing_ucr
import univention.testing.strings as uts
import essential.common

with testing_udm.UCSTestUDM() as udm, \
		testing_ucr.UCSTestConfigRegistry() as ucr, \
		essential.common.OXTestEnv() as oxenv, \
		essential.common.OXTestEmptyQueue():

	context_id = uts.random_int(100, 300)
	oxenv.create_context(context_id)
	oxenv.check_if_context_exists_in_ldap(context_id)
	oxenv.check_if_context_exists_in_ox(context_id)

	ldap_base = ucr.get('ldap/base')
	mail_domain = '{}.{}'.format(uts.random_name(), uts.random_name())
	print('*** Creating OX domain "{}" with oxContextName="context{}"...'.format(mail_domain, context_id))
	oxdomain_dn = udm.create_object(
		'oxmail/oxdomain',
		position='cn=domain,cn=mail,{}'.format(ldap_base),
		name=mail_domain,
		oxContextName='context{}'.format(context_id))

	print('*** Creating user without OX context with email domain="{}"...'.format(mail_domain))
	ox_user_password = uts.random_string()
	ox_user_dn, ox_username = udm.create_user(
		mailPrimaryAddress='{}@{}'.format(uts.random_username(), mail_domain),
		password=ox_user_password,
		isOxUser='OK')
	oxenv.add_user(ox_username, context_id, ox_user_dn, ox_user_password)

	oxenv.check_if_user_exists_in_context(ox_username, context_id)
	udm.remove_object('users/user', dn=ox_user_dn)
