summaryrefslogtreecommitdiffstats
path: root/ipatests/test_xmlrpc/tracker
diff options
context:
space:
mode:
authorMilan KubĂ­k <mkubik@redhat.com>2016-06-17 12:20:55 +0200
committerPetr Vobornik <pvoborni@redhat.com>2016-07-12 10:55:50 +0200
commitea9b15f435c6327c6f642e3e8093796229d94598 (patch)
treeeb5e652f55bb06f24c622149d1f4433cae7c4165 /ipatests/test_xmlrpc/tracker
parentc5cc79f1ad2ef1eb81ad3d9cea2882a7ae1825b2 (diff)
downloadfreeipa-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.py126
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)