summaryrefslogtreecommitdiffstats
path: root/tests/test_ipalib
diff options
context:
space:
mode:
authorPetr Viktorin <pviktori@redhat.com>2012-06-21 08:20:26 -0400
committerMartin Kosek <mkosek@redhat.com>2013-02-21 16:26:09 +0100
commit7336a176b43989b9d459a2536af88f89e849213f (patch)
tree46c2ab141dc545e8f0c148871508fe7c952d22e5 /tests/test_ipalib
parent246bc3f3eaccf2a84310df84dc85fe455c24ac65 (diff)
downloadfreeipa-7336a176b43989b9d459a2536af88f89e849213f.tar.gz
freeipa-7336a176b43989b9d459a2536af88f89e849213f.tar.xz
freeipa-7336a176b43989b9d459a2536af88f89e849213f.zip
Add the version option to all Commands
Several Commands were missing the 'version' option. Add it to those that were missing it. Do not remove the version option before calling commands. This means methods such as execute(), forward(), run() receive it. Several of these needed `**options` added to their signatures. Commands in the Cert plugin passed any unknown options to the underlying functions, these are changed to pass what's needed explicitly. Some commands in DNS and Batch plugins now pass version to commands they call. When the option is not given, fill it in automatically. (In a subsequent commit, a warning will be added in this case). Note that the public API did not change: all RPC calls already accepted a version option. There's no need for an API version bump (even though API.txt changes substantially). Design page: http://freeipa.org/page/V3/Messages Tickets: https://fedorahosted.org/freeipa/ticket/2732 https://fedorahosted.org/freeipa/ticket/3294
Diffstat (limited to 'tests/test_ipalib')
-rw-r--r--tests/test_ipalib/test_backend.py16
-rw-r--r--tests/test_ipalib/test_crud.py4
-rw-r--r--tests/test_ipalib/test_frontend.py58
3 files changed, 45 insertions, 33 deletions
diff --git a/tests/test_ipalib/test_backend.py b/tests/test_ipalib/test_backend.py
index b8f8d557b..e18c8d382 100644
--- a/tests/test_ipalib/test_backend.py
+++ b/tests/test_ipalib/test_backend.py
@@ -27,6 +27,7 @@ from tests.data import unicode_str
from ipalib.request import context, Connection
from ipalib.frontend import Command
from ipalib import backend, plugable, errors, base
+from ipapython.version import API_VERSION
@@ -184,7 +185,7 @@ class test_Executioner(ClassChecker):
api.register(echo)
class good(Command):
- def execute(self):
+ def execute(self, **options):
raise errors.ValidationError(
name='nurse',
error=u'Not naughty!',
@@ -192,7 +193,7 @@ class test_Executioner(ClassChecker):
api.register(good)
class bad(Command):
- def execute(self):
+ def execute(self, **options):
raise ValueError('This is private.')
api.register(bad)
@@ -224,10 +225,15 @@ class test_Executioner(ClassChecker):
arg1 = unicode_str
arg2 = (u'Hello', unicode_str, u'world!')
args = (arg1,) + arg2
- options = dict(option1=u'How are you?', option2=unicode_str)
+ options = dict(option1=u'How are you?', option2=unicode_str,
+ version=API_VERSION)
conn = Connection('The connection.', Disconnect('someconn'))
context.someconn = conn
+ print o.execute('echo', arg1, arg2, **options)
+ print dict(
+ result=(arg1, arg2, options)
+ )
assert o.execute('echo', arg1, arg2, **options) == dict(
result=(arg1, arg2, options)
)
@@ -261,4 +267,6 @@ class test_Executioner(ClassChecker):
# Test with option 'name':
conn = Connection('The connection.', Disconnect('someconn'))
context.someconn = conn
- assert o.execute('with_name', name=u'test') == dict(result=u'TEST')
+ expected = dict(result=u'TEST')
+ assert expected == o.execute('with_name', name=u'test',
+ version=API_VERSION)
diff --git a/tests/test_ipalib/test_crud.py b/tests/test_ipalib/test_crud.py
index 3700c5081..b19605be7 100644
--- a/tests/test_ipalib/test_crud.py
+++ b/tests/test_ipalib/test_crud.py
@@ -156,8 +156,8 @@ class test_Delete(CrudChecker):
Test the `ipalib.crud.Delete.get_options` method.
"""
api = self.get_api()
- assert list(api.Method.user_verb.options) == []
- assert len(api.Method.user_verb.options) == 0
+ assert list(api.Method.user_verb.options) == ['version']
+ assert len(api.Method.user_verb.options) == 1
class test_Search(CrudChecker):
diff --git a/tests/test_ipalib/test_frontend.py b/tests/test_ipalib/test_frontend.py
index 528609d9e..4b4735599 100644
--- a/tests/test_ipalib/test_frontend.py
+++ b/tests/test_ipalib/test_frontend.py
@@ -243,10 +243,14 @@ class test_Command(ClassChecker):
"""
Test the `ipalib.frontend.Command.get_options` method.
"""
- assert list(self.cls().get_options()) == []
+ options = list(self.cls().get_options())
+ assert len(options) == 1
+ assert options[0].name == 'version'
options = ('verbose', 'debug')
o = self.get_instance(options=options)
- assert tuple(o.get_options()) == options
+ assert len(tuple(o.get_options())) == 3
+ assert 'verbose' in tuple(o.get_options())
+ assert 'debug' in tuple(o.get_options())
def test_args(self):
"""
@@ -305,12 +309,12 @@ class test_Command(ClassChecker):
o = self.cls()
o.finalize()
assert type(o.options) is plugable.NameSpace
- assert len(o.options) == 0
+ assert len(o.options) == 1
options = ('target', 'files*')
ns = self.get_instance(options=options).options
assert type(ns) is plugable.NameSpace
- assert len(ns) == len(options)
- assert list(ns) == ['target', 'files']
+ assert len(ns) == len(options) + 1
+ assert list(ns) == ['target', 'files', 'version']
assert type(ns.target) is parameters.Str
assert type(ns.files) is parameters.Str
assert ns.target.required is True
@@ -377,12 +381,13 @@ class test_Command(ClassChecker):
cmd = user_add()
cmd.env = config.Env(context='cli')
cmd.finalize()
- assert list(cmd.params) == ['givenname', 'sn', 'uid']
+ assert list(cmd.params) == ['givenname', 'sn', 'uid', 'version']
ret = cmd.soft_validate({})
- assert len(ret['values']) == 0
- assert len(ret['errors']) == 3
+ assert sorted(ret['values']) == ['version']
+ assert sorted(ret['errors']) == ['givenname', 'sn', 'uid']
assert cmd.soft_validate(dict(givenname=u'First', sn=u'Last')) == dict(
- values=dict(givenname=u'First', sn=u'Last', uid=u'flast'),
+ values=dict(givenname=u'First', sn=u'Last', uid=u'flast',
+ version=None),
errors=dict(),
)
@@ -604,7 +609,6 @@ class test_Command(ClassChecker):
o.set_api(api)
assert o.run.im_func is self.cls.run.im_func
out = o.run(*args, **kw)
- del kw['version']
assert ('execute', args, kw) == out
# Test in non-server context
@@ -749,7 +753,7 @@ class test_LocalOrRemote(ClassChecker):
o = self.cls()
o.finalize()
assert list(o.args) == []
- assert list(o.options) == ['server']
+ assert list(o.options) == ['server', 'version']
op = o.options.server
assert op.required is False
assert op.default is False
@@ -772,17 +776,17 @@ class test_LocalOrRemote(ClassChecker):
api.register(example)
api.finalize()
cmd = api.Command.example
- assert cmd() == dict(
- result=('execute', (None,), dict(server=False))
+ assert cmd(version=u'2.47') == dict(
+ result=('execute', (None,), dict(version=u'2.47', server=False))
)
- assert cmd(u'var') == dict(
- result=('execute', (u'var',), dict(server=False))
+ assert cmd(u'var', version=u'2.47') == dict(
+ result=('execute', (u'var',), dict(version=u'2.47', server=False))
)
- assert cmd(server=True) == dict(
- result=('forward', (None,), dict(server=True))
+ assert cmd(server=True, version=u'2.47') == dict(
+ result=('forward', (None,), dict(version=u'2.47', server=True))
)
- assert cmd(u'var', server=True) == dict(
- result=('forward', (u'var',), dict(server=True))
+ assert cmd(u'var', server=True, version=u'2.47') == dict(
+ result=('forward', (u'var',), dict(version=u'2.47', server=True))
)
# Test when in_server=True (should always call execute):
@@ -790,17 +794,17 @@ class test_LocalOrRemote(ClassChecker):
api.register(example)
api.finalize()
cmd = api.Command.example
- assert cmd() == dict(
- result=('execute', (None,), dict(server=False))
+ assert cmd(version=u'2.47') == dict(
+ result=('execute', (None,), dict(version=u'2.47', server=False))
)
- assert cmd(u'var') == dict(
- result=('execute', (u'var',), dict(server=False))
+ assert cmd(u'var', version=u'2.47') == dict(
+ result=('execute', (u'var',), dict(version=u'2.47', server=False))
)
- assert cmd(server=True) == dict(
- result=('execute', (None,), dict(server=True))
+ assert cmd(server=True, version=u'2.47') == dict(
+ result=('execute', (None,), dict(version=u'2.47', server=True))
)
- assert cmd(u'var', server=True) == dict(
- result=('execute', (u'var',), dict(server=True))
+ assert cmd(u'var', server=True, version=u'2.47') == dict(
+ result=('execute', (u'var',), dict(version=u'2.47', server=True))
)