From ccd3677b50eab2223ddf1e1b6682c20fc695ad24 Mon Sep 17 00:00:00 2001 From: Oleg Fayans Date: Wed, 16 Nov 2016 12:57:49 +0100 Subject: Created idview tracker Needed for basic certs in idoverrides tests https://fedorahosted.org/freeipa/ticket/6412 Reviewed-By: Martin Basti Reviewed-By: Milan Kubik --- ipatests/test_xmlrpc/tracker/idview_plugin.py | 116 ++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 ipatests/test_xmlrpc/tracker/idview_plugin.py (limited to 'ipatests') diff --git a/ipatests/test_xmlrpc/tracker/idview_plugin.py b/ipatests/test_xmlrpc/tracker/idview_plugin.py new file mode 100644 index 000000000..e7bb39b6e --- /dev/null +++ b/ipatests/test_xmlrpc/tracker/idview_plugin.py @@ -0,0 +1,116 @@ +# +# Copyright (C) 2016 FreeIPA Contributors see COPYING for license +# + +from ipalib import api +from ipapython.dn import DN +from ipatests.test_xmlrpc.tracker.base import Tracker +from ipatests.util import assert_deepequal +from ipatests.test_xmlrpc import objectclasses + +import six + +if six.PY3: + unicode = str + + +class IdviewTracker(Tracker): + """Class for idview tests""" + + retrieve_keys = { + u'cn' + } + + retrieve_all_keys = retrieve_keys | { + u'description', u'objectclass', u'dn' + } + + create_keys = retrieve_all_keys + find_all_keys = retrieve_all_keys + + def del_cert_from_idoverrideuser(self, username, cert): + result = api.Command.idoverrideuser_remove_cert( + self.cn, username, usercertificate=cert + ) + return dict( + usercertificate=result['result'].get('usercertificate', []), + value=result.get('value'), + summary=result.get('summary') + ) + + def add_cert_to_idoverrideuser(self, username, cert): + result = api.Command.idoverrideuser_add_cert( + self.cn, username, usercertificate=cert + ) + return dict( + usercertificate=result['result'].get('usercertificate', []), + value=result.get('value'), + summary=result.get('summary') + ) + + def __init__(self, cn, **kwargs): + super(IdviewTracker, self).__init__(default_version=None) + self.cn = cn + self.dn = DN(('cn', cn), api.env.container_views, api.env.basedn) + self.kwargs = kwargs + + def make_create_command(self): + return self.make_command( + 'idview_add', self.cn, **self.kwargs + ) + + def make_delete_command(self): + return self.make_command( + 'idview_del', self.cn, **self.kwargs + ) + + def make_retrieve_command(self, all=False, raw=False): + """ Make function that retrieves a idview using idview-show """ + return self.make_command('idview_show', self.cn, all=all) + + def make_find_command(self, *args, **kwargs): + """ Make function that finds idview using idview-find """ + return self.make_command('idview_find', *args, **kwargs) + + def make_update_command(self, updates): + """ Make function that updates idview using idview-mod """ + return self.make_command('idview_mod', self.cn, **updates) + + def track_create(self): + self.attrs = dict( + cn=(self.cn,), + dn=unicode(self.dn), + idoverrideusers=[], + objectclass=objectclasses.idview + ) + if 'description' in self.kwargs: + self.attrs['description'] = self.kwargs['description'] + self.exists = True + + def make_add_idoverrideuser_command(self, username, options=None): + options = options or {} + """ Make function that adds a member to a group """ + return self.make_command('idoverrideuser_add', self.cn, username, + **options) + + def idoverrideuser_add(self, user): + command = self.make_add_idoverrideuser_command(user.name) + result = command() + self.attrs['idoverrideusers'].append(result['value']) + self.check_idoverrideuser_add(result, user) + + def check_create(self, result, extra_keys=()): + """ Check 'user-add' command result """ + expected = self.filter_attrs(self.create_keys | set(extra_keys)) + assert_deepequal(dict( + summary=u'Added ID View "%s"' % self.cn, + result=self.filter_attrs(expected), + value=self.cn + ), result) + + def check_idoverrideuser_add(self, result, user): + """ Checks 'group_add_member' command result """ + assert_deepequal( + u'Added User ID override "%s"' % user.name, + result['summary'] + ) -- cgit