#!/usr/share/ucs-test/runner python3
## desc: Check dns/reverse_zone SOA record
## tags: [udm]
## roles: [domaincontroller_master]
## exposure: careful
## packages:
##   - univention-config
##   - univention-directory-manager-tools
## versions:
##  3.1-1: skip
##  3.2-0: fixed

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

if __name__ == '__main__':
	with udm_test.UCSTestUDM() as udm:
		# IPv4 case:
		reverse_zone_properties = {
			'subnet': '10.20.30',
			'nameserver': uts.random_dns_record(),
			'contact': '%s@%s.%s' % (uts.random_name(), uts.random_name(), uts.random_name()),
			'serial': '1',
			'zonettl': '128',
			'refresh': '64',
			'expire': '32',
			'ttl': '16',
			'retry': '8'
		}

		reverse_zone = udm.create_object('dns/reverse_zone', **reverse_zone_properties)
		utils.verify_ldap_object(reverse_zone, {'sOARecord': ['%s %s. %s %s %s %s %s' % (
			reverse_zone_properties['nameserver'],
			reverse_zone_properties['contact'].replace('@', '.'),
			reverse_zone_properties['serial'],
			reverse_zone_properties['refresh'],
			reverse_zone_properties['retry'],
			reverse_zone_properties['expire'],
			reverse_zone_properties['ttl']
		)]})

		# IPv6 case:
		reverse_zone_properties.update({
			'subnet': '2011:06f8:13dc:0002:19b7:d592:09dd',
			'nameserver': uts.random_dns_record(),
			'contact': '%s@%s.%s' % (uts.random_name(), uts.random_name(), uts.random_name()),
		})

		reverse_zone = udm.create_object('dns/reverse_zone', **reverse_zone_properties)
		utils.verify_ldap_object(reverse_zone, {'sOARecord': ['%s %s. %s %s %s %s %s' % (
			reverse_zone_properties['nameserver'],
			reverse_zone_properties['contact'].replace('@', '.'),
			reverse_zone_properties['serial'],
			reverse_zone_properties['refresh'],
			reverse_zone_properties['retry'],
			reverse_zone_properties['expire'],
			reverse_zone_properties['ttl']
		)]})
