Skip to content

Commit

Permalink
tests: adding override_homedir test
Browse files Browse the repository at this point in the history
  • Loading branch information
Dan Lavu committed Dec 10, 2024
1 parent 1ca0c6c commit a0f698c
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions src/tests/system/tests/test_authentication.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import pytest
from sssd_test_framework.roles.client import Client
from sssd_test_framework.roles.generic import GenericProvider
from sssd_test_framework.roles.ldap import LDAP
from sssd_test_framework.topology import KnownTopologyGroup


Expand Down Expand Up @@ -96,3 +97,61 @@ def test_authentication__default_settings_when_the_provider_is_offline(

assert client.auth.parametrize(method).password(user, correct), "User failed login!"
assert not client.auth.parametrize(method).password(user, wrong), "User logged in with an incorrect password!"


@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
@pytest.mark.parametrize(
"home_key",
["user", "uid", "fqn", "domain", "first_char", "upn", "default", "lowercase", "substring", "literal%"],
)
@pytest.mark.importance("medium")
def test_authentication__with_overriding_home_directory(client: Client, provider: GenericProvider, home_key: str):
"""
:title: Override the user's home directory
:description:
For simplicity, the home directory is set to '/home/user1' because some providers homedirs are different.
:setup:
1. Create user and set home directory to '/home/user1'
2. Configure SSSD with 'override_homedir' home_key value and restart SSSD
3. Get entry for 'user1'
:steps:
1. Login as 'user1' and check working directory
:expectedresults:
1. Login is successful and working directory matches the expected value
:customerscenario: False
"""
provider.user("user1").add(password="Secret123", home="/home/user1")
client.sssd.common.mkhomedir()
client.sssd.start()

user = client.tools.getent.passwd("user1")
assert user is not None

home_map: dict[str, list[str]] = {
"user": ["/home/%u", f"/home/{user.name}"],
"uid": ["/home/%U", f"/home/{user.uid}"],
"fqn": ["/home/%f", f"/home/{user.name}@{client.sssd.default_domain}"],
"domain": ["/home/%d/%u", f"/home/{client.sssd.default_domain}/{user.name}"],
"first_char": ["/home/%l", f"/home/{str(user.name)[0]}"],
"upn": ["/home/%P", f"/home/{user.name}@{provider.domain.upper()}"],
"default": ["%o", f"{user.home}"],
"lowercase": ["%h", f"{str(user.home).lower()}"],
"substring": ["%H/%u", f"/home/homedir/{user.name}"],
"literal%": ["/home/%%/%u", f"/home/%/{user.name}"],
}

if home_key == "upn" and isinstance(provider, LDAP):
pytest.skip("Skipping provider, userPrincipal attribute is not set!")

if home_key == "domain":
client.fs.mkdir_p(f"/home/{client.sssd.default_domain}")

home_fmt, home_exp = home_map[home_key]
client.sssd.domain["homedir_substring"] = "/home/homedir"
client.sssd.domain["override_homedir"] = home_fmt
client.sssd.restart(clean=True)

with client.ssh("user1", "Secret123") as ssh:
result = ssh.run("pwd").stdout
assert result is not None, "Getting path failed!"
assert result == home_exp, f"Current path {result} is not {home_exp}!"

0 comments on commit a0f698c

Please sign in to comment.