Skip to content

Commit

Permalink
Tests: alltests/test_ldap_extra_attrs.py converted
Browse files Browse the repository at this point in the history
  • Loading branch information
patriki01 committed Oct 10, 2023
1 parent 66c0a2d commit d7eb96f
Show file tree
Hide file tree
Showing 2 changed files with 181 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/tests/multihost/alltests/test_ldap_extra_attrs.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def test_0002_givenmail(self, multihost):
assert result is not None

@pytest.mark.tier1
@pytest.mark.converted('test_ldap_extra_attrs.py', 'test_ldap_extra_attrs__check_ldb')
def test_0003_checkldb(self, multihost):
"""
:title: IDM-SSSD-TC: ldap_extra_attrs: Verify recently added
Expand Down
180 changes: 180 additions & 0 deletions src/tests/system/tests/test_ldap_extra_attrs.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,183 @@ def test_ldap_extra_attrs__filled(client: Client, provider: GenericProvider, att
result = client.tools.getent.passwd("tuser")
assert result is not None
assert result.name == "tuser"


@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
def test_ldap_extra_attrs__check_ldb(client: Client, provider: GenericProvider):
"""
:title: Recently added extra attributes should be in cache db along with their value
:setup:
1. Create new user "user1"
2. Add "firstname:cn, description:gecos, user`s_home_directoy:homeDirectory, user_id:uid, lastname:sn"
to ldap_user_extra_attrs
3. Start SSSD
:steps:
1. Run "getent passwd user1" to store user to cache
2. Run ldbsearch command
:expectedresults:
1. User is found
2. Result has correct values
:customerscenario: False
"""
provider.user("user1").add()
client.sssd.domain[
"ldap_user_extra_attrs"
] = "firstname:cn, description:gecos, user`s_home_directoy:homeDirectory, user_id:uid, lastname:sn"
client.sssd.start()

result = client.tools.getent.passwd("user1")
assert result is not None, "getent passwd user1 failed"
input("wait")
search = client.ldb.search(
f"/var/lib/sss/db/cache_{client.sssd.default_domain}.ldb", f"cn=users,cn={client.sssd.default_domain},cn=sysdb"
)
user_dict = search["name=user1@test,cn=users,cn=test,cn=sysdb"]
for name in user_dict.items():
print(name)

assert user_dict is not None, "ldapsearch did not find user1's record"
assert user_dict["firstname"] == ["user1 user1"]
assert user_dict["user`s_home_directoy"] == ["/home/user1"]
assert user_dict["user_id"] == ["user1"]
assert user_dict["lastname"] == ["user1"]
assert user_dict["description"] == ["user1 user1"]


@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
def test_ldap_extra_attrs__negative_cache(client: Client, provider: GenericProvider):
"""
:title: Not set attribute of user is not displayed in cache
:setup:
1. Create new user "user1"
2. Add "number:telephonenumber" to ldap_user_extra_attrs
3. Start SSSD
:steps:
1. Run "getent passwd user1" to store user to cache
2. Run ldbsearch command
:expectedresults:
1. User is found
2. "number" is not in the output
:customerscenario: False
"""
provider.user("user1").add()

client.sssd.domain["ldap_user_extra_attrs"] = "number:telephonenumber"

client.sssd.start()

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

search = client.ldb.search(
f"/var/lib/sss/db/cache_{client.sssd.default_domain}.ldb", f"cn=users,cn={client.sssd.default_domain},cn=sysdb"
)

user_dict = search["name=user1@test,cn=users,cn=test,cn=sysdb"]

assert user_dict is not None, "ldapsearch did not find user1's record"

with pytest.raises(KeyError):
user_dict["number"]


@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
def test_ldap_extra_attrs__extra_email(client: Client, provider: GenericProvider):
"""
:title: Not set attribute of user is not displayed in cache
:setup:
1. Create new user "user1"
2. Add "number:telephonenumber" to ldap_user_extra_attrs
3. Start SSSD
:steps:
1. Run "getent passwd user1" to store user to cache
2. Run ldbsearch command
:expectedresults:
1. User is found
2. "number" is not in the output
:customerscenario: False
"""
provider.user("user1").add()

client.sssd.domain["ldap_user_extra_attrs"] = "email:mail, firstname:cn, lastname:sn"
client.sssd.domain["ldap_user_email"] = "mail"

client.sssd.start()

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

search = client.ldb.search(
f"/var/lib/sss/db/cache_{client.sssd.default_domain}.ldb", f"cn=users,cn={client.sssd.default_domain},cn=sysdb"
)

user_dict = search["name=user1@test,cn=users,cn=test,cn=sysdb"]

assert user_dict is not None, "ldapsearch did not find user1's record"

assert user_dict["firstname"] == ["user1 user1"]
assert user_dict["email"] == [f"user1@{provider.role}.test"]
assert user_dict["lastname"] == ["user1"]
assert user_dict["mail"] == [f"user1@{provider.role}.test"]


@pytest.mark.ticket(bz=1667252)
@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
def test_ldap_extra_attrs__ifp(client: Client, provider: GenericProvider):
"""
:title: ifp do not crash when requesting extra attributes
:setup:
1. Create new user "user1"
2. Configure properly sssd.conf
3. Start SSSD
:steps:
1. Run "sssctl user-checks user1"
2. Check SSSD status
:expectedresults:
1. Command succeeded
2. Checked successfully
:customerscenario: True
"""
provider.user("user1").add()
client.sssd.sssd["services"] = "nss, pam, ifp"
client.sssd.domain["ldap_user_extra_attrs"] = "test:homeDirectory"
client.sssd.ifp["user_attributes"] = "+test"
client.sssd.start()

result = client.sssctl.user_checks("user1")
assert result.rc == 0

result = client.sssd.svc.status("sssd")
assert result.rc == 0


@pytest.mark.ticket(bz=1667252)
@pytest.mark.topology(KnownTopologyGroup.AnyProvider)
def test_ldap_extra_attrs__thread_issue(client: Client, provider: GenericProvider):
"""
:title: ifp do not crash when requesting extra attributes
:setup:
1. Create new user "user1"
2. Configure properly sssd.conf
3. Start SSSD
:steps:
1. Run "sssctl user-checks user1"
2. Check SSSD status
:expectedresults:
1. Command succeeded
2. Checked successfully
:customerscenario: True
"""
provider.user("user1").add()
client.sssd.nss["filter_groups"] = "root"
client.sssd.nss["filter_users"] = "root"
client.sssd.domain["use_fully_qualified_names"] = "false"
client.sssd.start()

result = client.sssctl.user_checks("user1")
assert result.rc == 0

result = client.sssd.svc.status("sssd")
assert result.rc == 0

0 comments on commit d7eb96f

Please sign in to comment.