mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Added ipalib/util.py with xmlrpc_marshal() and xmlrpc_unmarshal() functions; added corresponding unit tests
This commit is contained in:
parent
50e79f3e60
commit
d84e27f0d4
49
ipalib/tests/test_util.py
Normal file
49
ipalib/tests/test_util.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Authors:
|
||||||
|
# Jason Gerard DeRose <jderose@redhat.com>
|
||||||
|
#
|
||||||
|
# Copyright (C) 2008 Red Hat
|
||||||
|
# see file 'COPYING' for use and warranty information
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; version 2 only
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
"""
|
||||||
|
Unit tests for `ipalib.util` module.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from tstutil import raises
|
||||||
|
from ipalib import util
|
||||||
|
|
||||||
|
|
||||||
|
def test_xmlrpc_marshal():
|
||||||
|
"""
|
||||||
|
Test the `util.xmlrpc_marshal` function.
|
||||||
|
"""
|
||||||
|
f = util.xmlrpc_marshal
|
||||||
|
assert f() == ({},)
|
||||||
|
assert f('one', 'two') == ({}, 'one', 'two')
|
||||||
|
assert f(one=1, two=2) == (dict(one=1, two=2),)
|
||||||
|
assert f('one', 'two', three=3, four=4) == \
|
||||||
|
(dict(three=3, four=4), 'one', 'two')
|
||||||
|
|
||||||
|
|
||||||
|
def test_xmlrpc_unmarshal():
|
||||||
|
"""
|
||||||
|
Test the `util.xmlrpc_unmarshal` function.
|
||||||
|
"""
|
||||||
|
f = util.xmlrpc_unmarshal
|
||||||
|
assert f() == (tuple(), {})
|
||||||
|
assert f({}, 'one', 'two') == (('one', 'two'), {})
|
||||||
|
assert f(dict(one=1, two=2)) == (tuple(), dict(one=1, two=2))
|
||||||
|
assert f(dict(three=3, four=4), 'one', 'two') == \
|
||||||
|
(('one', 'two'), dict(three=3, four=4))
|
41
ipalib/util.py
Normal file
41
ipalib/util.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Authors:
|
||||||
|
# Jason Gerard DeRose <jderose@redhat.com>
|
||||||
|
#
|
||||||
|
# Copyright (C) 2008 Red Hat
|
||||||
|
# see file 'COPYING' for use and warranty information
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License as
|
||||||
|
# published by the Free Software Foundation; version 2 only
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
"""
|
||||||
|
Various utility functions.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def xmlrpc_marshal(*args, **kw):
|
||||||
|
"""
|
||||||
|
Marshal (args, kw) into ((kw,) + args).
|
||||||
|
"""
|
||||||
|
return ((kw,) + args)
|
||||||
|
|
||||||
|
|
||||||
|
def xmlrpc_unmarshal(*params):
|
||||||
|
"""
|
||||||
|
Unmarshal (params) into (args, kw).
|
||||||
|
"""
|
||||||
|
if len(params) > 0:
|
||||||
|
kw = params[0]
|
||||||
|
if type(kw) is not dict:
|
||||||
|
raise TypeError('first xmlrpc argument must be dict')
|
||||||
|
else:
|
||||||
|
kw = {}
|
||||||
|
return (params[1:], kw)
|
Loading…
Reference in New Issue
Block a user