#!/usr/share/ucs-test/runner python3
## desc: Test update of mail/hosteddomains ucr variable
## tags: [apptest]
## exposure: dangerous
## packages:
##  - univention-mail-postfix

import random
import univention.testing.strings as uts
import univention.testing.ucr as ucr_test
import univention.testing.udm as udm_test
import univention.testing.utils as utils


def main():
	with ucr_test.UCSTestConfigRegistry() as ucr:
		with udm_test.UCSTestUDM() as udm:
			domains = list()
			for _ in range(5):
				maildomain = '{}.{}.{}'.format(uts.random_name(), uts.random_name(), uts.random_name())
				maildomain = "".join(map(lambda x: random.choice([x.lower(), x.upper()]), maildomain))
				udm.create_object(
					'mail/domain',
					position='cn=domain,cn=mail,{}'.format(ucr['ldap/base']),
					name=maildomain
				)
				domains.append(maildomain.lower())
			ucr.load()
			registered = ucr.get('mail/hosteddomains')
			for maildomain in domains:
				if maildomain not in registered:
					utils.fail('maildomain "{}" not registered in mail/hosteddomains ({})'.format(maildomain, registered))
				udm.remove_object(
					'mail/domain',
					dn='cn={},cn=domain,cn=mail,{}'.format(maildomain, ucr['ldap/base'])
				)
				ucr.load()
				registered = ucr.get('mail/hosteddomains')
				if maildomain in registered:
					utils.fail('maildomain "{}" is removed but still registered in mail/hosteddomains ({})'.format(maildomain, registered))


if __name__ == '__main__':
	main()

# vim: set ft=python ts=4 sw=4 noet :
