mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Search allowed attributes in superior objectclasses
get_allowed_attributes function was improved to look for allowed attributes also in the superior objectclasses of specified objectclass. This fixes the regression caused by patch for ticket #2293. Test-case for unit-test was also created. https://fedorahosted.org/freeipa/ticket/2293
This commit is contained in:
committed by
Martin Kosek
parent
d14438405a
commit
a58cbb985e
@@ -401,6 +401,9 @@ class ldap2(CrudBackend, Encoder):
|
||||
obj = self.schema.get_obj(_ldap.schema.ObjectClass, oc)
|
||||
if obj is not None:
|
||||
allowed_attributes += obj.must + obj.may
|
||||
# look for allowed attributes in the superior objectclasses
|
||||
if obj.sup:
|
||||
allowed_attributes += self.get_allowed_attributes(obj.sup,raise_on_unknown)
|
||||
elif raise_on_unknown:
|
||||
raise errors.NotFound(reason=_('objectclass %s not found') % oc)
|
||||
return [unicode(a).lower() for a in list(set(allowed_attributes))]
|
||||
|
||||
@@ -656,6 +656,41 @@ class test_permission(Declarative):
|
||||
),
|
||||
|
||||
|
||||
dict(
|
||||
desc='Create permission %r with attributes from superior objectclass' % permission1,
|
||||
command=(
|
||||
'permission_add', [permission1], dict(
|
||||
type=u'hostgroup',
|
||||
permissions=u'add,delete,write',
|
||||
attrs=u'businessCategory,owner,description',
|
||||
)
|
||||
),
|
||||
expected=dict(
|
||||
value=permission1,
|
||||
summary=u'Added permission "%s"' % permission1,
|
||||
result=dict(
|
||||
dn=lambda x: DN(x) == permission1_dn,
|
||||
cn=[permission1],
|
||||
objectclass=objectclasses.permission,
|
||||
type=u'hostgroup',
|
||||
permissions=[u'add',u'delete',u'write'],
|
||||
attrs=[u'businesscategory',u'owner',u'description'],
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
dict(
|
||||
desc='Delete %r' % permission1,
|
||||
command=('permission_del', [permission1], {}),
|
||||
expected=dict(
|
||||
result=dict(failed=u''),
|
||||
value=permission1,
|
||||
summary=u'Deleted permission "%s"' % permission1,
|
||||
),
|
||||
),
|
||||
|
||||
|
||||
dict(
|
||||
desc='Create targetgroup permission %r' % permission1,
|
||||
command=(
|
||||
|
||||
Reference in New Issue
Block a user