mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Fix dnszone-add name_from_ip server validation
Ticket 1627 contained a (temporary hack-ish) fix for dnszone-add name_from_ip validation which works fine for CLI. However, when the command is not proceeded via CLI and sent directly to the RPC server, the server throws Internal Server Error. Make sure that the server returns a reasonable error. Also implement 2 unit cases testing this option https://fedorahosted.org/freeipa/ticket/1941
This commit is contained in:
parent
c23b3819e1
commit
dc39e95349
@ -231,7 +231,14 @@ class WSGIExecutioner(Executioner):
|
||||
finally:
|
||||
os.environ['LANG'] = lang
|
||||
if name:
|
||||
params = self.Command[name].args_options_2_params(*args, **options)
|
||||
try:
|
||||
params = self.Command[name].args_options_2_params(*args, **options)
|
||||
except Exception, e:
|
||||
self.info(
|
||||
'exception %s caught when converting options: %s', e.__class__.__name__, str(e)
|
||||
)
|
||||
# get at least some context of what is going on
|
||||
params = options
|
||||
if error:
|
||||
self.info('%s: %s(%s): %s', context.principal, name, ', '.join(self.Command[name]._repr_iter(**params)), e.__class__.__name__)
|
||||
else:
|
||||
|
@ -29,6 +29,7 @@ from xmlrpc_test import Declarative, fuzzy_digits, fuzzy_uuid
|
||||
dnszone1 = u'dnszone.test'
|
||||
dnszone2 = u'dnszone2.test'
|
||||
revdnszone1 = u'15.142.80.in-addr.arpa.'
|
||||
revdnszone1_ip = u'80.142.15.0/24'
|
||||
dnsres1 = u'testdnsres'
|
||||
|
||||
class test_dns(Declarative):
|
||||
@ -550,6 +551,53 @@ class test_dns(Declarative):
|
||||
),
|
||||
|
||||
|
||||
dict(
|
||||
desc='Try to create a reverse zone from invalid IP',
|
||||
command=(
|
||||
'dnszone_add', [], {
|
||||
'name_from_ip': u'foo',
|
||||
'idnssoamname': u'ns1.%s' % dnszone1,
|
||||
'idnssoarname': u'root.%s' % dnszone1,
|
||||
'ip_address' : u'1.2.3.4',
|
||||
}
|
||||
),
|
||||
expected=errors.ValidationError(name='name_from_ip', error='invalid format'),
|
||||
),
|
||||
|
||||
|
||||
dict(
|
||||
desc='Create reverse from IP %s zone using name_from_ip option' % revdnszone1_ip,
|
||||
command=(
|
||||
'dnszone_add', [], {
|
||||
'name_from_ip': revdnszone1_ip,
|
||||
'idnssoamname': u'ns1.%s' % dnszone1,
|
||||
'idnssoarname': u'root.%s' % dnszone1,
|
||||
'ip_address' : u'1.2.3.4',
|
||||
}
|
||||
),
|
||||
expected={
|
||||
'value': revdnszone1,
|
||||
'summary': None,
|
||||
'result': {
|
||||
'dn': lambda x: DN(x) == \
|
||||
DN(('idnsname',revdnszone1),('cn','dns'),api.env.basedn),
|
||||
'idnsname': [revdnszone1],
|
||||
'idnszoneactive': [u'TRUE'],
|
||||
'idnssoamname': [u'ns1.%s.' % dnszone1],
|
||||
'nsrecord': [u'ns1.%s.' % dnszone1],
|
||||
'idnssoarname': [u'root.%s.' % dnszone1],
|
||||
'idnssoaserial': [fuzzy_digits],
|
||||
'idnssoarefresh': [fuzzy_digits],
|
||||
'idnssoaretry': [fuzzy_digits],
|
||||
'idnssoaexpire': [fuzzy_digits],
|
||||
'idnssoaminimum': [fuzzy_digits],
|
||||
'idnsallowdynupdate': [u'FALSE'],
|
||||
'objectclass': [u'top', u'idnsrecord', u'idnszone'],
|
||||
},
|
||||
},
|
||||
),
|
||||
|
||||
|
||||
dict(
|
||||
desc='Delete zone %r' % dnszone1,
|
||||
command=('dnszone_del', [dnszone1], {}),
|
||||
|
Loading…
Reference in New Issue
Block a user