summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/plugins/permission.py7
-rw-r--r--tests/test_xmlrpc/test_permission_plugin.py32
2 files changed, 39 insertions, 0 deletions
diff --git a/ipalib/plugins/permission.py b/ipalib/plugins/permission.py
index 2cf42bbc0..9bf17944c 100644
--- a/ipalib/plugins/permission.py
+++ b/ipalib/plugins/permission.py
@@ -387,10 +387,17 @@ class permission_find(LDAPSearch):
del opts['raw']
except:
pass
+ if 'cn' in options:
+ # the attribute for name is difference in acis
+ opts['aciname'] = options['cn']
aciresults = self.api.Command.aci_find(*args, **opts)
truncated = truncated or aciresults['truncated']
results = aciresults['result']
+ if 'cn' in options:
+ # there is an option/param overlap if --name is in the
+ # search list, we don't need cn anymore so drop it.
+ options.pop('cn')
for aci in results:
found = False
if 'permission' in aci:
diff --git a/tests/test_xmlrpc/test_permission_plugin.py b/tests/test_xmlrpc/test_permission_plugin.py
index 14cfcbc78..54d155aca 100644
--- a/tests/test_xmlrpc/test_permission_plugin.py
+++ b/tests/test_xmlrpc/test_permission_plugin.py
@@ -227,6 +227,38 @@ class test_permission(Declarative):
dict(
+ desc='Search for %r using --name' % permission1,
+ command=('permission_find', [], {'cn': permission1}),
+ expected=dict(
+ count=1,
+ truncated=False,
+ summary=u'1 permission matched',
+ result=[
+ {
+ 'dn': lambda x: DN(x) == permission1_dn,
+ 'cn': [permission1],
+ 'member_privilege': [privilege1],
+ 'type': u'user',
+ 'permissions': [u'write'],
+ },
+ ],
+ ),
+ ),
+
+
+ dict(
+ desc='Search for non-existence permission using --name',
+ command=('permission_find', [], {'cn': u'notfound'}),
+ expected=dict(
+ count=0,
+ truncated=False,
+ summary=u'0 permissions matched',
+ result=[],
+ ),
+ ),
+
+
+ dict(
desc='Search for %r' % privilege1,
command=('permission_find', [privilege1], {}),
expected=dict(