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>
138 lines
4.3 KiB
Python
138 lines
4.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (C) 2015 FreeIPA Contributors see COPYING for license
|
|
#
|
|
|
|
import os
|
|
|
|
import six
|
|
|
|
from ipapython.dn import DN
|
|
from ipatests.test_xmlrpc.tracker.base import Tracker
|
|
from ipatests.test_xmlrpc import objectclasses
|
|
from ipatests.util import assert_deepequal
|
|
|
|
if six.PY3:
|
|
unicode = str
|
|
|
|
|
|
class CertprofileTracker(Tracker):
|
|
"""Tracker class for certprofile plugin.
|
|
"""
|
|
|
|
retrieve_keys = {
|
|
'dn', 'cn', 'description', 'ipacertprofilestoreissued'
|
|
}
|
|
retrieve_all_keys = retrieve_keys | {'objectclass'}
|
|
create_keys = retrieve_keys | {'objectclass'}
|
|
update_keys = retrieve_keys - {'dn'}
|
|
managedby_keys = retrieve_keys
|
|
allowedto_keys = retrieve_keys
|
|
|
|
def __init__(self, name, store=False, desc='dummy description',
|
|
profile=None, default_version=None):
|
|
super(CertprofileTracker, self).__init__(
|
|
default_version=default_version
|
|
)
|
|
|
|
self.store = store
|
|
self.description = desc
|
|
self._profile_path = profile
|
|
|
|
self.dn = DN(('cn', name), 'cn=certprofiles', 'cn=ca',
|
|
self.api.env.basedn)
|
|
|
|
@property
|
|
def profile(self):
|
|
if not self._profile_path:
|
|
return None
|
|
|
|
if os.path.isabs(self._profile_path):
|
|
path = self._profile_path
|
|
else:
|
|
path = os.path.join(os.path.dirname(__file__),
|
|
self._profile_path)
|
|
|
|
with open(path, 'r') as f:
|
|
content = f.read()
|
|
return unicode(content)
|
|
|
|
def make_create_command(self):
|
|
if not self.profile:
|
|
raise RuntimeError('Tracker object without path to profile '
|
|
'cannot be used to create profile entry.')
|
|
|
|
return self.make_command('certprofile_import', self.name,
|
|
description=self.description,
|
|
ipacertprofilestoreissued=self.store,
|
|
file=self.profile)
|
|
|
|
def check_create(self, result):
|
|
assert_deepequal(dict(
|
|
value=self.name,
|
|
summary=u'Imported profile "{}"'.format(self.name),
|
|
result=dict(self.filter_attrs(self.create_keys))
|
|
), result)
|
|
|
|
def track_create(self):
|
|
self.attrs = dict(
|
|
dn=unicode(self.dn),
|
|
cn=[self.name],
|
|
description=[self.description],
|
|
ipacertprofilestoreissued=[unicode(self.store).upper()],
|
|
objectclass=objectclasses.certprofile
|
|
)
|
|
self.exists = True
|
|
|
|
def make_delete_command(self):
|
|
return self.make_command('certprofile_del', self.name)
|
|
|
|
def check_delete(self, result):
|
|
assert_deepequal(dict(
|
|
value=[self.name], # correctly a list?
|
|
summary=u'Deleted profile "{}"'.format(self.name),
|
|
result=dict(failed=[]),
|
|
), result)
|
|
|
|
def make_retrieve_command(self, all=False, raw=False, **options):
|
|
return self.make_command('certprofile_show', self.name, all=all,
|
|
raw=raw, **options)
|
|
|
|
def check_retrieve(self, result, all=False, raw=False):
|
|
if all:
|
|
expected = self.filter_attrs(self.retrieve_all_keys)
|
|
else:
|
|
expected = self.filter_attrs(self.retrieve_keys)
|
|
|
|
assert_deepequal(dict(
|
|
value=self.name,
|
|
summary=None,
|
|
result=expected,
|
|
), result)
|
|
|
|
def make_find_command(self, *args, **kwargs):
|
|
return self.make_command('certprofile_find', *args, **kwargs)
|
|
|
|
def check_find(self, result, all=False, raw=False):
|
|
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 profile matched',
|
|
result=[expected]
|
|
), result)
|
|
|
|
def make_update_command(self, updates):
|
|
return self.make_command('certprofile_mod', self.name, **updates)
|
|
|
|
def check_update(self, result, extra_keys=()):
|
|
assert_deepequal(dict(
|
|
value=self.name,
|
|
summary=u'Modified Certificate Profile "{}"'.format(self.name),
|
|
result=self.filter_attrs(self.update_keys | set(extra_keys))
|
|
), result)
|