#!/usr/share/ucs-test/runner python
## desc: ucs-school-reset-password-check
## roles: [domaincontroller_master]
## tags: [apptest]
## exposure: dangerous
## packages: [ucs-school-umc-users]

from univention.config_registry import handler_unset
from univention.uldap import getMachineConnection
import sys
import univention.testing.ucr as ucr_test
import univention.testing.utils as utils


def main():
	with ucr_test.UCSTestConfigRegistry() as ucr:
		lo = getMachineConnection()
		handler_unset(['ucsschool/import/attach/policy/default-umc-users'])
		import univention.testing.ucsschool as utu
		with utu.UCSTestSchool()  as schoolenv:

			school1, oudn = schoolenv.create_ou()
			school2, oudn2 = schoolenv.create_ou(use_cli=True)

			utils.wait_for_replication_and_postrun()

			for school in [school1, school2]:
				try:
					print 'Checking school %s' % school
					expected_attr = "cn=default-umc-users,cn=UMC,cn=policies,%s" % (
							ucr.get('ldap/base'),)
					base="cn=Domain Users %s,cn=groups,%s" % (
							school.lower(), schoolenv.get_ou_base_dn(school)
							)
					found_attr = lo.search(
							base=base,
							scope='base',
							attr=['univentionPolicyReference']
							)[0][1]['univentionPolicyReference']
					if expected_attr not in found_attr:
						utils.fail('Incorrect attributes found: %r\nexpected: %r' % (
							found_attr, expected_attr))
				except IndexError:
					utils.fail('Attribute %s was not found in ldap object %r' % (
						'univentionPolicyReference', base))


if __name__ == '__main__':
	sys.exit(main())

