#!/usr/share/ucs-test/runner python3
## desc: Apply valid/invalid values for TrueFalseUpper UDM syntax
## tags: [udm]
## roles: [domaincontroller_master]
## exposure: careful
## packages:
##   - univention-config
##   - univention-directory-manager-tools
## versions:
##   3.2-0: skip
##   4.4-1: fixed
## bugs: [40731]


import univention.testing.udm as udm_test
import univention.testing.utils as utils
import univention.testing.strings as uts

if __name__ == '__main__':
	with udm_test.UCSTestUDM() as udm:
		syntax = 'TrueFalseUpper'
		cli_name = uts.random_string()
		udm.create_object(
			'settings/extended_attribute',
			position=udm.UNIVENTION_CONTAINER,
			name=uts.random_name(),
			shortDescription=uts.random_string(),
			CLIName=cli_name,
			module='users/user',
			objectClass='univentionFreeAttributes',
			ldapMapping='univentionFreeAttribute15',
			syntax=syntax
		)

		# check valid values
		for value in ('TRUE', 'FALSE', ''):
			udm.create_user(**{cli_name: value})

		# check invalid values
		for value in ('True', 'False', 'TrUE', 'FaLSE', 'Yes', 'No', 'YES', 'NO', 'YeS', 'nO', '1', '0'):
			try:
				udm.create_user(**{cli_name: value})
			except udm_test.UCSTestUDM_CreateUDMObjectFailed:
				continue

			utils.fail('Succsessfully applied invalid value %r for %s syntax' % (value, syntax))
