Validate attributes in permission-add

When adding or modifying permission with both type and attributes
specified, check whether the attributes are allowed for specified type.
In case of disallowed attributes raises the ObjectclassViolation
exception.

New tests were also added to the unit-tests.

https://fedorahosted.org/freeipa/ticket/2293
This commit is contained in:
Ondrej Hamada
2012-02-29 11:40:31 +01:00
committed by Rob Crittenden
parent 2d55525652
commit 1356988b7a
2 changed files with 120 additions and 0 deletions

View File

@@ -123,6 +123,71 @@ class test_permission(Declarative):
),
dict(
desc='Try to create %r with invalid attribute \'ipaclientversion\'' % permission2,
command=(
'permission_add', [permission2], dict(
type=u'user',
permissions=u'write',
attrs=u'ipaclientversion',
),
),
expected=errors.ObjectclassViolation(info=u'attribute(s) \"ipaclientversion\" not allowed'),
),
dict(
desc='Add allowed attribute \'cn\' to %r' % permission1,
command=(
'permission_mod', [permission1], dict(
attrs=u'cn',
)
),
expected=dict(
value=permission1,
summary=u'Modified permission "%s"' % permission1,
result=dict(
dn=lambda x: DN(x) == permission1_dn,
cn=[permission1],
type=u'user',
permissions=[u'write'],
attrs=[u'cn'],
),
),
),
dict(
desc='Try to modify %r with invalid attribute \'ipaclientversion\'' % permission1,
command=(
'permission_mod', [permission1], dict(
attrs=u'ipaclientversion',
),
),
expected=errors.ObjectclassViolation(info=u'attribute(s) \"ipaclientversion\" not allowed'),
),
dict(
desc='Unset attribute \'cn\' of %r' % permission1,
command=(
'permission_mod', [permission1], dict(
attrs=None,
)
),
expected=dict(
value=permission1,
summary=u'Modified permission "%s"' % permission1,
result=dict(
dn=lambda x: DN(x) == permission1_dn,
cn=[permission1],
type=u'user',
permissions=[u'write'],
),
),
),
dict(
desc='Create %r' % privilege1,
command=('privilege_add', [privilege1],