Fail on unknown Command options

When unknown keyword arguments are passed to a Command, raise an
error instead of ignoring them.

Options used when IPA calls its commands internally are listed
in a new Command attribute called internal_options, and allowed.

Previous patches (0b01751c, c45174d6, c5689e7f) made IPA not use
unknown keyword arguments in its own commands and tests, but since
that some violations were reintroduced in permission_find and tests.
Fix those.

Tests included; both a frontend unittest and a XML-RPC test via the
ping plugin (which was untested previously).

https://fedorahosted.org/freeipa/ticket/2509
This commit is contained in:
Petr Viktorin
2012-04-17 12:42:35 -04:00
committed by Martin Kosek
parent 1484ccc404
commit 1235dfa7bf
10 changed files with 123 additions and 28 deletions

View File

@@ -126,7 +126,7 @@ class test_host(Declarative):
command=('host_add', [fqdn1],
dict(
description=u'Test host 1',
locality=u'Undisclosed location 1',
l=u'Undisclosed location 1',
force=True,
),
),

View File

@@ -726,7 +726,7 @@ class test_netgroup(Declarative):
dict(
desc='Add duplicatehost %r to netgroup %r' % (host1, netgroup1),
desc='Add duplicate host %r to netgroup %r' % (host1, netgroup1),
command=(
'netgroup_add_member', [netgroup1], dict(host=host1)
),
@@ -960,8 +960,8 @@ class test_netgroup(Declarative):
),
dict(
desc='Search for all netgroups using empty memberuser',
command=('netgroup_find', [], dict(memberuser=None)),
desc='Search for all netgroups using empty member user',
command=('netgroup_find', [], dict(user=None)),
expected=dict(
count=2,
truncated=False,

View File

@@ -643,6 +643,18 @@ class test_permission(Declarative):
),
dict(
desc='Search using nonexistent --subtree',
command=('permission_find', [], {'subtree': u'foo'}),
expected=dict(
count=0,
truncated=False,
summary=u'0 permissions matched',
result=[],
),
),
dict(
desc='Delete %r' % permission1_renamed_ucase,
command=('permission_del', [permission1_renamed_ucase], {}),

View File

@@ -0,0 +1,52 @@
# Authors:
# Petr Viktorin <pviktori@redhat.com>
#
# Copyright (C) 2012 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, either version 3 of the License, or
# (at your option) any later version.
#
# 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, see <http://www.gnu.org/licenses/>.
"""
Test the `ipalib/plugins/ping.py` module, and XML-RPC in general.
"""
from ipalib import api, errors, _
from tests.util import assert_equal, Fuzzy
from xmlrpc_test import Declarative
class test_ping(Declarative):
tests = [
dict(
desc='Ping the server',
command=('ping', [], {}),
expected=dict(
summary=Fuzzy('IPA server version .*. API version .*')),
),
dict(
desc='Try to ping with an argument',
command=('ping', ['bad_arg'], {}),
expected=errors.ZeroArgumentError(name='ping'),
),
dict(
desc='Try to ping with an option',
command=('ping', [], dict(bad_arg=True)),
expected=errors.OptionError(_('Unknown option: %(option)s'),
option='bad_arg'),
),
]