summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_xmlrpc/test_user_plugin.py9
-rw-r--r--tests/test_xmlrpc/xmlrpc_test.py42
2 files changed, 43 insertions, 8 deletions
diff --git a/tests/test_xmlrpc/test_user_plugin.py b/tests/test_xmlrpc/test_user_plugin.py
index c8984c51b..d1cdb2f98 100644
--- a/tests/test_xmlrpc/test_user_plugin.py
+++ b/tests/test_xmlrpc/test_user_plugin.py
@@ -25,6 +25,7 @@ Test the `ipalib/plugins/user.py` module.
from ipalib import api, errors
from tests.test_xmlrpc import objectclasses
+from tests.util import assert_equal
from xmlrpc_test import Declarative, fuzzy_digits, fuzzy_uuid, fuzzy_password, fuzzy_string, fuzzy_dergeneralizedtime
from ipalib.dn import *
@@ -36,6 +37,11 @@ group1=u'group1'
invaliduser1=u'+tuser1'
invaliduser2=u'tuser1234567890123456789012345678901234567890'
+def upg_check(response):
+ """Check that the user was assigned to the corresponding private group."""
+ assert_equal(response['result']['uidnumber'],
+ response['result']['gidnumber'])
+ return True
class test_user(Declarative):
@@ -111,6 +117,7 @@ class test_user(Declarative):
api.env.basedn),
),
),
+ extra_check = upg_check,
),
@@ -523,6 +530,7 @@ class test_user(Declarative):
api.env.basedn),
),
),
+ extra_check = upg_check,
),
@@ -563,6 +571,7 @@ class test_user(Declarative):
api.env.basedn),
),
),
+ extra_check = upg_check,
),
diff --git a/tests/test_xmlrpc/xmlrpc_test.py b/tests/test_xmlrpc/xmlrpc_test.py
index 3535040e8..4966cb1fb 100644
--- a/tests/test_xmlrpc/xmlrpc_test.py
+++ b/tests/test_xmlrpc/xmlrpc_test.py
@@ -178,6 +178,31 @@ KWARGS = """Command %r raised %s with wrong kwargs.
class Declarative(XMLRPC_test):
+ """A declarative-style test suite
+
+ A Declarative test suite is controlled by the ``tests`` and
+ ``cleanup_commands`` class variables.
+
+ The ``tests`` is a list of dictionaries with the following keys:
+
+ ``desc``
+ A name/description of the test
+ ``command``
+ A (command, args, kwargs) triple specifying the command to run
+ ``expected``
+ Can be either an ``errors.PublicError`` instance, in which case
+ the command must fail with the given error; or the
+ expected result.
+ The result is checked with ``tests.util.assert_deepequal``.
+ ``extra_check`` (optional)
+ A checking function that is called with the response. It must
+ return true for the test to pass.
+
+ The ``cleanup_commands`` is a list of (command, args, kwargs)
+ triples. These are commands get run both before and after tests,
+ and must not fail.
+ """
+
cleanup_commands = tuple()
tests = tuple()
@@ -217,7 +242,7 @@ class Declarative(XMLRPC_test):
nice = '%s[%d]: %s: %s' % (
name, i, test['command'][0], test.get('desc', '')
)
- func = lambda: self.check(nice, test)
+ func = lambda: self.check(nice, **test)
func.description = nice
yield (func,)
@@ -225,15 +250,14 @@ class Declarative(XMLRPC_test):
for tup in self.cleanup_generate('post'):
yield tup
- def check(self, nice, test):
- (cmd, args, options) = test['command']
+ def check(self, nice, desc, command, expected, extra_check=None):
+ (cmd, args, options) = command
if cmd not in api.Command:
raise nose.SkipTest('%r not in api.Command' % cmd)
- expected = test['expected']
if isinstance(expected, errors.PublicError):
self.check_exception(nice, cmd, args, options, expected)
else:
- self.check_output(nice, cmd, args, options, expected)
+ self.check_output(nice, cmd, args, options, expected, extra_check)
def check_exception(self, nice, cmd, args, options, expected):
klass = expected.__class__
@@ -259,6 +283,8 @@ class Declarative(XMLRPC_test):
# KWARGS % (cmd, name, args, options, expected.kw, e.kw)
# )
- def check_output(self, nice, cmd, args, options, expected):
- got = api.Command[cmd](*args, **options)
- assert_deepequal(expected, got, nice)
+ def check_output(self, nice, cmd, args, options, expected, extra_check):
+ got = api.Command[cmd](*args, **options)
+ assert_deepequal(expected, got, nice)
+ if extra_check and not extra_check(got):
+ raise AssertionError('Extra check %s failed' % extra_check)