See the ticket & commit message. https://fedorahosted.org/freeipa/ticket/4309
-- PetrĀ³
From 3e9f26a423af1db2fe15b326059f901f7bcca70e Mon Sep 17 00:00:00 2001 From: Petr Viktorin <pvikt...@redhat.com> Date: Tue, 27 May 2014 12:21:33 +0200 Subject: [PATCH] pwpolicy-mod: Fix crash when priority is changed The exc_callback was expecting the old update_entry signature, (dn, attrs). This was changed to just (entry) for ticket #2660, see http://www.freeipa.org/page/HowTo/Migrate_your_code_to_the_new_LDAP_API. Update the exc_callback to expect the entry as first argument, and add some tests. https://fedorahosted.org/freeipa/ticket/4309 --- ipalib/plugins/pwpolicy.py | 2 +- ipatests/test_xmlrpc/objectclasses.py | 6 +++ ipatests/test_xmlrpc/test_pwpolicy_plugin.py | 72 +++++++++++++++++++++++++++- 3 files changed, 77 insertions(+), 3 deletions(-) diff --git a/ipalib/plugins/pwpolicy.py b/ipalib/plugins/pwpolicy.py index 9c8b711b89db578d1dd771b5fe3ae89d1d88ccf3..ee7f388ba98964a79b0036d9e2b4b642def5edee 100644 --- a/ipalib/plugins/pwpolicy.py +++ b/ipalib/plugins/pwpolicy.py @@ -456,7 +456,7 @@ def post_callback(self, ldap, dn, entry_attrs, *keys, **options): def exc_callback(self, keys, options, exc, call_func, *call_args, **call_kwargs): if call_func.func_name == 'update_entry': if isinstance(exc, errors.EmptyModlist): - entry_attrs = call_args[1] + entry_attrs = call_args[0] cosupdate = getattr(context, 'cosupdate') if not entry_attrs or cosupdate: return diff --git a/ipatests/test_xmlrpc/objectclasses.py b/ipatests/test_xmlrpc/objectclasses.py index 363e1c7c35e95f4cbe421aaec06c522700019567..ff497c81edec7c6ba9825e5c65b6f179c97147d1 100644 --- a/ipatests/test_xmlrpc/objectclasses.py +++ b/ipatests/test_xmlrpc/objectclasses.py @@ -170,3 +170,9 @@ u'ipatokenradiusconfiguration', u'top', ] + +pwpolicy = [ + u'krbpwdpolicy', + u'nscontainer', + u'top', +] diff --git a/ipatests/test_xmlrpc/test_pwpolicy_plugin.py b/ipatests/test_xmlrpc/test_pwpolicy_plugin.py index 3b482ce2dd7413b9968ac6046295315110768d03..5a8ac103079ed70705fa0d5cbacfa82a298cbdc1 100644 --- a/ipatests/test_xmlrpc/test_pwpolicy_plugin.py +++ b/ipatests/test_xmlrpc/test_pwpolicy_plugin.py @@ -21,12 +21,14 @@ Test the `ipalib/plugins/pwpolicy.py` module. """ -import sys from nose.tools import assert_raises # pylint: disable=E0611 -from xmlrpc_test import XMLRPC_test, assert_attr_equal from ipalib import api from ipalib import errors +from ipapython.dn import DN +from ipatests.test_xmlrpc import objectclasses +from ipatests.test_xmlrpc.xmlrpc_test import (XMLRPC_test, assert_attr_equal, + Declarative) class test_pwpolicy(XMLRPC_test): @@ -242,3 +244,69 @@ def test_e_pwpolicy_del(self): # Remove the user we created api.Command['user_del'](self.user) + + +class test_pwpolicy_mod_cospriority(Declarative): + """Tests for cospriority modifications""" + cleanup_commands = [ + ('pwpolicy_del', [u'ipausers'], {}), + ] + + tests = [ + dict( + desc='Create a password policy', + command=('pwpolicy_add', [u'ipausers'], dict( + krbmaxpwdlife=90, + krbminpwdlife=1, + krbpwdhistorylength=10, + krbpwdmindiffchars=3, + krbpwdminlength=8, + cospriority=10, + )), + expected=dict( + result=dict( + cn=[u'ipausers'], + cospriority=[u'10'], + dn=DN('cn=ipausers', ('cn', api.env.realm), + 'cn=kerberos', api.env.basedn), + krbmaxpwdlife=[u'90'], + krbminpwdlife=[u'1'], + krbpwdhistorylength=[u'10'], + krbpwdmindiffchars=[u'3'], + krbpwdminlength=[u'8'], + objectclass=objectclasses.pwpolicy, + ), + summary=None, + value=u'ipausers', + ), + ), + + dict( + # https://fedorahosted.org/freeipa/ticket/4309 + desc="Try no-op modification of password policy's cospriority", + command=('pwpolicy_mod', [u'ipausers'], dict( + cospriority=10, + )), + expected=errors.EmptyModlist(), + ), + + dict( + desc="Modify the password policy's cospriority", + command=('pwpolicy_mod', [u'ipausers'], dict( + cospriority=20, + )), + expected=dict( + result=dict( + cn=[u'ipausers'], + cospriority=[u'20'], + krbmaxpwdlife=[u'90'], + krbminpwdlife=[u'1'], + krbpwdhistorylength=[u'10'], + krbpwdmindiffchars=[u'3'], + krbpwdminlength=[u'8'], + ), + summary=None, + value=u'ipausers', + ), + ), + ] -- 1.9.0
_______________________________________________ Freeipa-devel mailing list Freeipa-devel@redhat.com https://www.redhat.com/mailman/listinfo/freeipa-devel