diff options
| author | Tomas Babej <tbabej@redhat.com> | 2014-06-16 16:51:31 +0200 |
|---|---|---|
| committer | Martin Kosek <mkosek@redhat.com> | 2014-06-18 12:59:25 +0200 |
| commit | 637ef11109600d87bfb783eadd4b6401fa58d468 (patch) | |
| tree | 1e2d013dd51e5178f2a11edca7aff6fccfe77e91 | |
| parent | d868fc5566da547d2060ef4a42eb5a0d0e0a72d6 (diff) | |
| download | freeipa-637ef11109600d87bfb783eadd4b6401fa58d468.tar.gz freeipa-637ef11109600d87bfb783eadd4b6401fa58d468.tar.xz freeipa-637ef11109600d87bfb783eadd4b6401fa58d468.zip | |
sudorule: Allow unsetting sudoorder
After setting sudoorder, you are unable to unset it, since the
check for uniqueness of order of sudorules is applied incorrectly.
Fix the behaviour and cover it in the test suite.
https://fedorahosted.org/freeipa/ticket/4360
Reviewed-By: Martin Kosek <mkosek@redhat.com>
| -rw-r--r-- | ipalib/plugins/sudorule.py | 3 | ||||
| -rw-r--r-- | ipatests/test_xmlrpc/test_sudorule_plugin.py | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/ipalib/plugins/sudorule.py b/ipalib/plugins/sudorule.py index 9c2e7c51e..04ca97eff 100644 --- a/ipalib/plugins/sudorule.py +++ b/ipalib/plugins/sudorule.py @@ -310,10 +310,11 @@ class sudorule(LDAPObject): ) def check_order_uniqueness(self, *keys, **options): - if 'sudoorder' in options: + if options.get('sudoorder') is not None: entries = self.methods.find( sudoorder=options['sudoorder'] )['result'] + if len(entries) > 0: rule_name = entries[0]['cn'][0] raise errors.ValidationError( diff --git a/ipatests/test_xmlrpc/test_sudorule_plugin.py b/ipatests/test_xmlrpc/test_sudorule_plugin.py index 7dc3cb1e4..052578666 100644 --- a/ipatests/test_xmlrpc/test_sudorule_plugin.py +++ b/ipatests/test_xmlrpc/test_sudorule_plugin.py @@ -769,6 +769,10 @@ class test_sudorule(XMLRPC_test): with assert_raises(errors.ValidationError): api.Command['sudorule_mod'](self.rule_name, sudoorder=0) + # Try unsetting sudoorder from both rules + api.Command['sudorule_mod'](self.rule_name, sudoorder=None) + api.Command['sudorule_mod'](self.rule_name2, sudoorder=None) + def test_m_sudorule_del(self): """ |
