diff options
| author | Filip Skola <fskola@redhat.com> | 2016-01-18 13:56:44 +0100 |
|---|---|---|
| committer | Tomas Babej <tbabej@redhat.com> | 2016-03-01 13:50:32 +0100 |
| commit | 007c360f85151caab7d608cc0a4eb1916b18eba9 (patch) | |
| tree | 7e99d177c56a62c495a10e2bdbb316ece685fe25 /ipatests/test_xmlrpc/tracker | |
| parent | 276d16775a4ce8af5d39ca8a7bf5bcd638df343f (diff) | |
| download | freeipa-007c360f85151caab7d608cc0a4eb1916b18eba9.tar.gz freeipa-007c360f85151caab7d608cc0a4eb1916b18eba9.tar.xz freeipa-007c360f85151caab7d608cc0a4eb1916b18eba9.zip | |
Refactor test_sudocmd_plugin
Reviewed-By: Ales 'alich' Marecek <amarecek@redhat.com>
Diffstat (limited to 'ipatests/test_xmlrpc/tracker')
| -rw-r--r-- | ipatests/test_xmlrpc/tracker/sudocmd_plugin.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/ipatests/test_xmlrpc/tracker/sudocmd_plugin.py b/ipatests/test_xmlrpc/tracker/sudocmd_plugin.py new file mode 100644 index 000000000..eb72e4ba2 --- /dev/null +++ b/ipatests/test_xmlrpc/tracker/sudocmd_plugin.py @@ -0,0 +1,113 @@ +# +# Copyright (C) 2015 FreeIPA Contributors see COPYING for license +# + +from ipatests.test_xmlrpc import objectclasses +from ipatests.test_xmlrpc.xmlrpc_test import fuzzy_uuid, fuzzy_sudocmddn + +from ipatests.test_xmlrpc.tracker.base import Tracker +from ipatests.util import assert_deepequal + + +class SudoCmdTracker(Tracker): + """ Class for tracking sudo commands """ + retrieve_keys = {u'dn', u'sudocmd', u'description', + u'memberof_sudocmdgroup'} + retrieve_all_keys = retrieve_keys | {u'ipauniqueid', u'objectclass'} + + create_keys = retrieve_all_keys + update_keys = retrieve_keys - {u'dn'} + + def __init__(self, command, description="Test sudo command"): + super(SudoCmdTracker, self).__init__(default_version=None) + self.cmd = command + self.dn = fuzzy_sudocmddn + self.description = description + + @property + def name(self): + """ Property holding the name of the entry in LDAP """ + return self.cmd + + def make_create_command(self, force=True): + """ Make function that creates a sudocmd using 'sudocmd-add' """ + return self.make_command('sudocmd_add', self.cmd, + description=self.description) + + def make_delete_command(self): + """ Make function that deletes a sudocmd using 'sudocmd-del' """ + return self.make_command('sudocmd_del', self.cmd) + + def make_retrieve_command(self, all=False, raw=False): + """ Make function that retrieves a sudocmd using 'sudocmd-show' """ + return self.make_command('sudocmd_show', self.cmd, all=all) + + def make_find_command(self, *args, **kwargs): + """ Make function that searches for a sudocmd using 'sudocmd-find' """ + return self.make_command('sudocmd_find', *args, **kwargs) + + def make_update_command(self, updates): + """ Make function that updates a sudocmd using 'sudocmd-mod' """ + return self.make_command('sudocmd_mod', self.cmd, **updates) + + def track_create(self): + """ Updates expected state for sudocmd creation""" + self.attrs = dict( + dn=self.dn, + sudocmd=[self.cmd], + description=[self.description], + ipauniqueid=[fuzzy_uuid], + objectclass=objectclasses.sudocmd, + ) + self.exists = True + + def check_create(self, result): + """ Checks 'sudocmd_add' command result """ + assert_deepequal(dict( + value=self.cmd, + summary=u'Added Sudo Command "%s"' % self.cmd, + result=self.filter_attrs(self.create_keys) + ), result) + + def check_delete(self, result): + """ Checks 'sudocmd_del' command result """ + assert_deepequal(dict( + value=[self.cmd], + summary=u'Deleted Sudo Command "%s"' % self.cmd, + result=dict(failed=[]), + ), result) + + def check_retrieve(self, result, all=False, raw=False): + """ Checks 'sudocmd_show' command result """ + if all: + expected = self.filter_attrs(self.retrieve_all_keys) + else: + expected = self.filter_attrs(self.retrieve_keys) + + assert_deepequal(dict( + value=self.cmd, + summary=None, + result=expected + ), result) + + def check_find(self, result, all=False, raw=False): + """ Checks 'sudocmd_find' command result """ + if all: + expected = self.filter_attrs(self.retrieve_all_keys) + else: + expected = self.filter_attrs(self.retrieve_keys) + + assert_deepequal(dict( + count=1, + truncated=False, + summary=u'1 Sudo Command matched', + result=[expected], + ), result) + + def check_update(self, result, extra_keys={}): + """ Checks 'sudocmd_mod' command result """ + assert_deepequal(dict( + value=self.cmd, + summary=u'Modified Sudo Command "%s"' % self.cmd, + result=self.filter_attrs(self.update_keys | set(extra_keys)) + ), result) |
