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') (_options, argv) = api.bootstrap_with_global_options(context='cli')
try: try:
check_client_configuration() check_client_configuration(env=api.env)
except ScriptError as e: except ScriptError as e:
sys.exit(e) sys.exit(e)

View File

@@ -1123,15 +1123,16 @@ def ensure_krbcanonicalname_set(ldap, entry_attrs):
entry_attrs.update(old_entry) entry_attrs.update(old_entry)
def check_client_configuration(): def check_client_configuration(env=None):
""" """
Check if IPA client is configured on the system. Check if IPA client is configured on the system.
Hardcode return code to avoid recursive imports 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.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', raise ScriptError('IPA client is not configured on this system',
2) # CLIENT_NOT_CONFIGURED 2) # CLIENT_NOT_CONFIGURED