mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-24 16:10:02 -06:00
Fix addattr internal error
When ADD command is being executed and a single-value object attribute is being set with both option and addattr IPA ends up in an internal error. Make better value sanitizing job in this case and let IPA throw a user-friendly error. Unit test exercising this situation is added. https://fedorahosted.org/freeipa/ticket/2429
This commit is contained in:
parent
d491ba0289
commit
cd7a85c12c
@ -882,7 +882,17 @@ last, after all sets and adds."""),
|
|||||||
entry_attrs[attr] = val
|
entry_attrs[attr] = val
|
||||||
|
|
||||||
for attr in direct_add:
|
for attr in direct_add:
|
||||||
entry_attrs.setdefault(attr, []).extend(adddict[attr])
|
try:
|
||||||
|
val = entry_attrs[attr]
|
||||||
|
except KeyError:
|
||||||
|
val = []
|
||||||
|
else:
|
||||||
|
if not isinstance(val, (list, tuple)):
|
||||||
|
val = [val]
|
||||||
|
elif isinstance(val, tuple):
|
||||||
|
val = list(val)
|
||||||
|
val.extend(adddict[attr])
|
||||||
|
entry_attrs[attr] = val
|
||||||
|
|
||||||
for attr in direct_del:
|
for attr in direct_del:
|
||||||
for delval in deldict[attr]:
|
for delval in deldict[attr]:
|
||||||
|
@ -36,6 +36,16 @@ class test_attr(Declarative):
|
|||||||
|
|
||||||
tests = [
|
tests = [
|
||||||
|
|
||||||
|
dict(
|
||||||
|
desc='Try to add user %r with single-value attribute set via '
|
||||||
|
'option and --addattr' % user1,
|
||||||
|
command=(
|
||||||
|
'user_add', [user1], dict(givenname=u'Test', sn=u'User1',
|
||||||
|
addattr=u'sn=User2')
|
||||||
|
),
|
||||||
|
expected=errors.OnlyOneValueAllowed(attr='sn'),
|
||||||
|
),
|
||||||
|
|
||||||
dict(
|
dict(
|
||||||
desc='Create %r' % user1,
|
desc='Create %r' % user1,
|
||||||
command=(
|
command=(
|
||||||
|
Loading…
Reference in New Issue
Block a user