Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[6.15.z] effective user with non-ascii password #14834

Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 34 additions & 4 deletions tests/foreman/cli/test_remoteexecution.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
from robottelo import constants
from robottelo.config import settings
from robottelo.constants import FAKE_4_CUSTOM_PACKAGE
from robottelo.exceptions import CLIFactoryError
from robottelo.utils import ohsnap
from robottelo.utils.datafactory import filtered_datapoint, parametrized

Expand Down Expand Up @@ -137,36 +138,47 @@ def test_positive_run_default_job_template(
@pytest.mark.pit_server
@pytest.mark.rhel_ver_list([7, 8, 9])
def test_positive_run_job_effective_user(self, rex_contenthost, module_target_sat):
"""Run default job template as effective user on a host
"""Run default job template as effective user on a host, test ssh user as well

:id: 0cd75cab-f699-47e6-94d3-4477d2a94bb7

:BZ: 1451675, 1804685
:BZ: 1451675, 1804685, 2258968

:expectedresults: Verify the job was successfully run under the
effective user identity on host
effective user identity on host, make sure the password is
used

:parametrized: yes

:customerscenario: true
"""
client = rex_contenthost
# create a user on client via remote job
ssh_username = gen_string('alpha')
ssh_password = gen_string('alpha')
username = gen_string('alpha')
password = gen_string('cjk')
filename = gen_string('alpha')
make_user_job = module_target_sat.cli_factory.job_invocation(
{
'job-template': 'Run Command - Script Default',
'inputs': f"command=useradd -m {username}",
'inputs': f"command=useradd {ssh_username} -G wheel; echo {ssh_username}:{ssh_password} | chpasswd; useradd {username} -G wheel; echo {username}:{password} | chpasswd",
'search-query': f"name ~ {client.hostname}",
'description-format': 'adding users',
}
)
client.execute('echo "Defaults targetpw" >> /etc/sudoers')
assert_job_invocation_result(module_target_sat, make_user_job['id'], client.hostname)
# create a file as new user
invocation_command = module_target_sat.cli_factory.job_invocation(
{
'job-template': 'Run Command - Script Default',
'inputs': f"command=touch /home/{username}/{filename}",
'search-query': f"name ~ {client.hostname}",
'ssh-user': f'{ssh_username}',
'password': f'{ssh_password}',
'effective-user': f'{username}',
'effective-user-password': f'{password}',
}
)
assert_job_invocation_result(module_target_sat, invocation_command['id'], client.hostname)
Expand All @@ -176,6 +188,24 @@ def test_positive_run_job_effective_user(self, rex_contenthost, module_target_sa
)
# assert the file is owned by the effective user
assert username == result.stdout.strip('\n')
result = client.execute(
f'''stat -c '%G' /home/{username}/{filename}''',
)
# assert the file is in the effective user's group
assert username == result.stdout.strip('\n')
# negative check for unspecified password
filename = gen_string('alpha')
with pytest.raises(CLIFactoryError):
invocation_command = module_target_sat.cli_factory.job_invocation(
{
'job-template': 'Run Command - Script Default',
'inputs': f"command=touch /home/{username}/{filename}",
'search-query': f"name ~ {client.hostname}",
'ssh-user': f'{ssh_username}',
'password': f'{ssh_password}',
'effective-user': f'{username}',
}
)

@pytest.mark.tier3
@pytest.mark.e2e
Expand Down
Loading