diff options
| author | Milan KubĂk <mkubik@redhat.com> | 2016-06-17 12:20:55 +0200 |
|---|---|---|
| committer | Petr Vobornik <pvoborni@redhat.com> | 2016-07-12 10:55:50 +0200 |
| commit | ea9b15f435c6327c6f642e3e8093796229d94598 (patch) | |
| tree | eb5e652f55bb06f24c622149d1f4433cae7c4165 /ipatests/test_xmlrpc/tracker | |
| parent | c5cc79f1ad2ef1eb81ad3d9cea2882a7ae1825b2 (diff) | |
| download | freeipa-ea9b15f435c6327c6f642e3e8093796229d94598.tar.gz freeipa-ea9b15f435c6327c6f642e3e8093796229d94598.tar.xz freeipa-ea9b15f435c6327c6f642e3e8093796229d94598.zip | |
ipatests: Tracker implementation for Sub CA feature
The patch implements Tracker subclass for CA plugin
and the basic CRUD tests for the plugin entries.
https://fedorahosted.org/freeipa/ticket/4559
Reviewed-By: Fraser Tweedale <ftweedal@redhat.com>
Diffstat (limited to 'ipatests/test_xmlrpc/tracker')
| -rw-r--r-- | ipatests/test_xmlrpc/tracker/ca_plugin.py | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/ipatests/test_xmlrpc/tracker/ca_plugin.py b/ipatests/test_xmlrpc/tracker/ca_plugin.py new file mode 100644 index 000000000..7586c771c --- /dev/null +++ b/ipatests/test_xmlrpc/tracker/ca_plugin.py @@ -0,0 +1,126 @@ +# +# Copyright (C) 2016 FreeIPA Contributors see COPYING for license +# +from __future__ import absolute_import + +import six + +from ipapython.dn import DN +from ipatests.test_xmlrpc.tracker.base import Tracker +from ipatests.util import assert_deepequal +from ipatests.test_xmlrpc.xmlrpc_test import fuzzy_issuer, fuzzy_caid +from ipatests.test_xmlrpc import objectclasses + + +if six.PY3: + unicode = str + + +class CATracker(Tracker): + """Implementation of a Tracker class for CA plugin.""" + + retrieve_keys = { + 'dn', 'cn', 'ipacaid', 'ipacasubjectdn', 'ipacaissuerdn', 'description' + } + retrieve_all_keys = {'objectclass'} | retrieve_keys + create_keys = retrieve_all_keys + update_keys = retrieve_keys - {'dn'} + + def __init__(self, name, subject, desc=u"Test generated CA", + default_version=None): + super(CATracker, self).__init__(default_version=default_version) + self.attrs = {} + self.ipasubjectdn = subject + self.description = desc + + self.dn = DN(('cn', name), + self.api.env.container_ca, + self.api.env.basedn) + + def make_create_command(self, force=True): + """Make function that creates the plugin entry object.""" + return self.make_command( + 'ca_add', self.name, ipacasubjectdn=self.ipasubjectdn, + description=self.description + ) + + def check_create(self, result): + assert_deepequal(dict( + value=self.name, + summary=u'Created CA "{}"'.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], + ipacasubjectdn=[self.ipasubjectdn], + ipacaissuerdn=[fuzzy_issuer], + ipacaid=[fuzzy_caid], + objectclass=objectclasses.ca + ) + self.exists = True + + def make_delete_command(self): + """Make function that deletes the plugin entry object.""" + return self.make_command('ca_del', self.name) + + def check_delete(self, result): + assert_deepequal(dict( + value=[self.name], + summary=u'Deleted CA "{}"'.format(self.name), + result=dict(failed=[]) + ), result) + + def make_retrieve_command(self, all=False, raw=False): + """Make function that retrieves the entry using ${CMD}_show""" + return self.make_command('ca_show', self.name, all=all, raw=raw) + + def check_retrieve(self, result, all=False, raw=False): + """Check the plugin's `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.name, + summary=None, + result=expected + ), result) + + def make_find_command(self, *args, **kwargs): + """Make function that finds the entry using ${CMD}_find + + Note that the name (or other search terms) needs to be specified + in arguments. + """ + return self.make_command('ca_find', *args, **kwargs) + + def check_find(self, result, all=False, raw=False): + """Check the plugin's `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 CA matched', + result=[expected] + ), result) + + def make_update_command(self, updates): + """Make function that modifies the entry using ${CMD}_mod""" + return self.make_command('ca_mod', self.name, **updates) + + def check_update(self, result, extra_keys=()): + """Check the plugin's `find` command result""" + assert_deepequal(dict( + value=self.name, + summary=u'Modified CA "{}"'.format(self.name), + result=self.filter_attrs(self.update_keys | set(extra_keys)) + ), result) |
