make sure IPA_CONFDIR is used to check that client is configured

Fixes a test ipatests/test_cmdline/test_cli.py:test_cli_fs_encoding()
which sets IPA_CONFDIR and attempts to interpret the resulting error
message. However, if the test is run on an enrolled machine (a
developer's laptop, for example), check_client_configuration() will
succeed because it ignores IPA_CONFDIR and, as result, api.finalize()
will fail later with a stacktrace.

Pass an environment object and test an overridden config file existence
in this case to fail with a proper and expected message.

Reviewed-By: Christian Heimes <cheimes@redhat.com>
This commit is contained in:
Alexander Bokovoy 2019-01-08 09:54:07 +02:00 committed by Christian Heimes
parent 3c38aea6fc
commit 2aa24eedf2
2 changed files with 5 additions and 4 deletions

View File

@ -1454,7 +1454,7 @@ def run(api):
(_options, argv) = api.bootstrap_with_global_options(context='cli')
try:
check_client_configuration()
check_client_configuration(env=api.env)
except ScriptError as e:
sys.exit(e)

View File

@ -1123,15 +1123,16 @@ def ensure_krbcanonicalname_set(ldap, entry_attrs):
entry_attrs.update(old_entry)
def check_client_configuration():
def check_client_configuration(env=None):
"""
Check if IPA client is configured on the system.
Hardcode return code to avoid recursive imports
"""
if (not os.path.isfile(paths.IPA_DEFAULT_CONF) or
if ((env is not None and not os.path.isfile(env.conf_default)) or
(not os.path.isfile(paths.IPA_DEFAULT_CONF) or
not os.path.isdir(paths.IPA_CLIENT_SYSRESTORE) or
not os.listdir(paths.IPA_CLIENT_SYSRESTORE)):
not os.listdir(paths.IPA_CLIENT_SYSRESTORE))):
raise ScriptError('IPA client is not configured on this system',
2) # CLIENT_NOT_CONFIGURED