#!/usr/share/ucs-test/runner python
## -*- coding: utf-8 -*-
## desc: create OX user and remove OX capability
## tags: [apptest]
## exposure: dangerous
## packages:
##   - univention-ox

import univention.testing.udm as testing_udm
import univention.testing.ucr as testing_ucr
import univention.testing.strings as uts
import univention.testing.utils as utils
from univention.ox.api.http.http_api_client import OXHttpApi, LoginError
from essential.common import OXTestEmptyQueue
from univention.ox.wait_for_ox_server import wait_for_ox_server


wait_for_ox_server()
with testing_udm.UCSTestUDM() as udm, testing_ucr.UCSTestConfigRegistry() as ucr, OXTestEmptyQueue():
	mail_domain = ucr['mail/hosteddomains'].split()[0]

	print('*** Creating OX user...')
	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')

	try:
		OXHttpApi(ox_username, ox_user_password)
	except LoginError as exc:
		utils.fail('Could not login.')
	else:
		print('*** OK: could log in.')

	print('*** Setting isOxUser="Not"...')
	udm.modify_object('users/user', dn=ox_user_dn, isOxUser='Not')

	try:
		OXHttpApi(ox_username, ox_user_password)
	except LoginError as exc:
		print('*** OK: could not log.')
	else:
		utils.fail('Could login.')
