mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-28 01:41:14 -06:00
a07c4bdd4f
Removing --force option from tracker base class so it would not be required to be implemented in every specific tracker, even though it's not necessary. Modifying existing trackers to reflect this change. https://fedorahosted.org/freeipa/ticket/6124 Reviewed-By: Martin Basti <mbasti@redhat.com>
117 lines
4.0 KiB
Python
117 lines
4.0 KiB
Python
#
|
|
# 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'}
|
|
|
|
find_keys = {u'dn', u'sudocmd', u'description'}
|
|
find_all_keys = retrieve_all_keys
|
|
|
|
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):
|
|
""" 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.find_all_keys)
|
|
else:
|
|
expected = self.filter_attrs(self.find_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)
|