#!/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_set
from univention.uldap import getMachineConnection
import sys
import ldap
import univention.testing.ucr as ucr_test
import univention.testing.utils as utils


def main():
	with ucr_test.UCSTestConfigRegistry() as ucr:
		lo = getMachineConnection()
		handler_set(['ucsschool/import/attach/policy/default-umc-users=no'])
		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 in found_attr:
						utils.fail('Incorrect attribute found: %r' % (expected_attr, ))
				except IndexError:
					utils.fail('Attribute %s was not found in ldap object %r' % (
						'univentionPolicyReference', base))
				except ldap.NO_SUCH_OBJECT:
					print ('* Cought an expected exception')


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