Convert --setattr values for attributes marked no_update

Attribute Patrams marked no_update never get cloned to Update commands,
and thus never receive the `attribute` flag. This makes their `encode`
method a no-op, which meant they don't get properly encoded when used
with --setattr, making the --setattr fail.

Introduce a `force` argument to encode, which overrides checking
for the attribute flag. Use this in set/add/delattr normalization,
where we know we are dealing with attributes.

https://fedorahosted.org/freeipa/ticket/2616
This commit is contained in:
Petr Viktorin
2012-04-10 07:44:21 -04:00
committed by Rob Crittenden
parent 6e5c8b25bf
commit 1431c80b3c
4 changed files with 32 additions and 4 deletions

View File

@@ -433,7 +433,7 @@ class test_attr(Declarative):
command=(
'user_mod', [user1], dict(
addattr=u'nsaccountlock=FaLsE',
delattr=u'nsaccountlock=True')
delattr=u'nsaccountlock=TRUE')
),
expected=dict(
result=dict(

View File

@@ -430,6 +430,27 @@ class test_hbac(XMLRPC_test):
# FIXME: Should this be 'enabled' or 'TRUE'?
assert_attr_equal(entry, 'ipaenabledflag', 'TRUE')
def test_ea_hbacrule_disable_setattr(self):
"""
Test disabling HBAC rule using setattr
"""
command_result = api.Command['hbacrule_mod'](
self.rule_name, setattr=u'ipaenabledflag=false')
assert command_result['result']['ipaenabledflag'] == (u'FALSE',)
entry = api.Command['hbacrule_show'](self.rule_name)['result']
assert_attr_equal(entry, 'ipaenabledflag', 'FALSE')
def test_eb_hbacrule_enable_setattr(self):
"""
Test enabling HBAC rule using setattr
"""
command_result = api.Command['hbacrule_mod'](
self.rule_name, setattr=u'ipaenabledflag=1')
assert command_result['result']['ipaenabledflag'] == (u'TRUE',)
# check it's really enabled
entry = api.Command['hbacrule_show'](self.rule_name)['result']
assert_attr_equal(entry, 'ipaenabledflag', 'TRUE')
@raises(errors.MutuallyExclusiveError)
def test_f_hbacrule_exclusiveuser(self):
"""