summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipalib/plugins/service.py15
-rw-r--r--tests/test_xmlrpc/test_service_plugin.py12
2 files changed, 18 insertions, 9 deletions
diff --git a/ipalib/plugins/service.py b/ipalib/plugins/service.py
index 8d852ca4..8e955428 100644
--- a/ipalib/plugins/service.py
+++ b/ipalib/plugins/service.py
@@ -215,22 +215,21 @@ class service_mod(crud.Update):
"""
Modify service.
"""
- def execute(self, principal, **kw):
- ldap = self.api.Backend.ldap
+ def execute(self, principal, **options):
+ ldap = self.api.Backend.ldap2
# FIXME, should be in a normalizer. Need to fix normalizers to work
# on non-unicode data.
- if kw.get('usercertificate'):
- kw['usercertificate'] = base64.b64decode(kw['usercertificate'])
+ if options.get('usercertificate'):
+ options['usercertificate'] = base64.b64decode(options['usercertificate'])
- dn = ldap.make_dn(entry_attrs, 'krbprincipalname', _container_dn)
+ entry_attrs = self.args_options_2_entry(*tuple(), **options)
+ dn = ldap.make_dn_from_attr('krbprincipalname', principal, _container_dn)
(dn, old_entry_attrs) = ldap.get_entry(dn)
- if 'usercertificate' in old_entry_attrs and 'usercerficate' in kw:
+ if 'usercertificate' in old_entry_attrs and 'usercerficate' in options:
# FIXME, what to do here? Do we revoke the old cert?
raise errors.GenericError(format='entry already has a certificate')
- entry_attrs = self.args_options_to_entry(principal, **kw)
-
try:
ldap.update_entry(dn, entry_attrs)
except errors.EmptyModlist:
diff --git a/tests/test_xmlrpc/test_service_plugin.py b/tests/test_xmlrpc/test_service_plugin.py
index 9eede38b..1f086fdf 100644
--- a/tests/test_xmlrpc/test_service_plugin.py
+++ b/tests/test_xmlrpc/test_service_plugin.py
@@ -97,7 +97,17 @@ class test_service(XMLRPC_test):
assert res
assert_attr_equal(res[0][1], 'krbprincipalname', self.principal)
- def test_7_service_del(self):
+ def test_7_service_mod(self):
+ """
+ Test the `xmlrpc.service_mod` method.
+ """
+ modkw = self.kw
+ modkw['usercertificate'] = 'QmluYXJ5IGNlcnRpZmljYXRl'
+ (dn, res) = api.Command['service_mod'](**modkw)
+ assert res
+ assert_attr_equal(res, 'usercertificate', 'Binary certificate')
+
+ def test_8_service_del(self):
"""
Test the `xmlrpc.service_del` method.
"""