From b6906c6c7185edef1cd9c852624e82339fb9e06e Mon Sep 17 00:00:00 2001 From: Andre Boscatto Date: Tue, 25 Mar 2025 09:28:01 +0100 Subject: [PATCH] roles: Add email attribute to genericUser, IPA and LDAP Adding the email attribute to genericUser, IPA and LDAP. For LDAP we are duplicating it (mail and email) for now. We will remove the mail attribute later once all tests are refactored and replace mail by email. Resolves: #160 --- sssd_test_framework/roles/generic.py | 6 ++++++ sssd_test_framework/roles/ipa.py | 9 +++++++++ sssd_test_framework/roles/ldap.py | 15 +++++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/sssd_test_framework/roles/generic.py b/sssd_test_framework/roles/generic.py index bcf07089..317a450c 100644 --- a/sssd_test_framework/roles/generic.py +++ b/sssd_test_framework/roles/generic.py @@ -452,6 +452,7 @@ def add( home: str | None = None, gecos: str | None = None, shell: str | None = None, + email: str | None = None, ) -> GenericUser: """ Create a new user. @@ -470,6 +471,8 @@ def add( :type gecos: str | None, optional :param shell: Login shell, defaults to None :type shell: str | None, optional + :param email: email attribute, defaults to None + :type email: str | None, optional :return: Self. :rtype: GenericUser """ @@ -485,6 +488,7 @@ def modify( home: str | None = None, gecos: str | None = None, shell: str | None = None, + email: str | None = None, ) -> GenericUser: """ Modify existing user. @@ -503,6 +507,8 @@ def modify( :type gecos: str | None, optional :param shell: Login shell, defaults to None :type shell: str | None, optional + :param email: email attribute, defaults to None + :type email: str | None, optional :return: Self. :rtype: GenericUser """ diff --git a/sssd_test_framework/roles/ipa.py b/sssd_test_framework/roles/ipa.py index f0e20cfb..43aac0c6 100644 --- a/sssd_test_framework/roles/ipa.py +++ b/sssd_test_framework/roles/ipa.py @@ -432,6 +432,7 @@ def add( require_password_reset: bool = False, user_auth_type: str | list[str] | None = None, sshpubkey: str | list[str] | None = None, + email: str | None = None, ) -> IPAUser: """ Create new IPA user. @@ -456,9 +457,12 @@ def add( :type user_auth_type: str | list[str] | None, optional :param sshpubkey: SSH public key, defaults to None :type sshpubkey: str | list[str] | None, optional + :param email: email attribute, defaults to None + :type email: str | None, optional :return: Self. :rtype: IPAUser """ + attrs = { "first": (self.cli.option.VALUE, self.name), "last": (self.cli.option.VALUE, self.name), @@ -470,6 +474,7 @@ def add( "password": (self.cli.option.SWITCH, True) if password is not None else None, "user-auth-type": (self.cli.option.VALUE, user_auth_type), "sshpubkey": (self.cli.option.VALUE, sshpubkey), + "email": (self.cli.option.VALUE, email), } if not require_password_reset: @@ -494,6 +499,7 @@ def modify( idp_user_id: str | None = None, password_expiration: str | None = None, sshpubkey: str | list[str] | None = None, + email: str | None = None, ) -> IPAUser: """ Modify existing IPA user. @@ -524,6 +530,8 @@ def modify( :type password_expiration: str | None, optional :param sshpubkey: SSH public key, defaults to None :type sshpubkey: str | list[str] | None, optional + :param email: email attribute, defaults to None + :type email: str | None, optional :return: Self. :rtype: IPAUser """ @@ -541,6 +549,7 @@ def modify( "idp-user-id": (self.cli.option.VALUE, idp_user_id), "password-expiration": (self.cli.option.VALUE, password_expiration), "sshpubkey": (self.cli.option.VALUE, sshpubkey), + "email": (self.cli.option.VALUE, email), } self._modify(attrs, input=password) diff --git a/sssd_test_framework/roles/ldap.py b/sssd_test_framework/roles/ldap.py index c28daccc..301371b2 100644 --- a/sssd_test_framework/roles/ldap.py +++ b/sssd_test_framework/roles/ldap.py @@ -664,7 +664,8 @@ def add( shadowLastChange: int | None = None, sn: str | None = None, givenName: str | None = None, - mail: str | None = None, + mail: str | None = None, # Remove later once tests are using the email attribute instead of mail + email: str | None = None, ) -> LDAPUser: """ Create new LDAP user. @@ -698,6 +699,8 @@ def add( :type givenName: str | None, optional :param mail: mail LDAP attribute, defaults to None :type mail: str | None, optional + :param email: mail LDAP attribute, defaults to None + :type mail: str | None, optional :return: Self. :rtype: LDAPUser """ @@ -725,13 +728,13 @@ def add( "shadowLastChange": shadowLastChange, "sn": sn, "givenName": givenName, - "mail": mail, + "mail": mail or email, } if to_list_without_none([shadowMin, shadowMax, shadowWarning, shadowLastChange]): attrs["objectClass"].append("shadowAccount") - if to_list_without_none([sn, mail]): + if to_list_without_none([sn, mail, email]): attrs["sn"] = sn if sn else str(uid) attrs["objectClass"].append("inetOrgPerson") @@ -755,6 +758,7 @@ def modify( sn: str | DeleteAttribute | None = None, givenName: str | DeleteAttribute | None = None, mail: str | DeleteAttribute | None = None, + email: str | DeleteAttribute | None = None, ) -> LDAPUser: """ Modify existing LDAP user. @@ -790,9 +794,12 @@ def modify( :type givenName: str | DeleteAttribute | None, optional :param mail: mail LDAP attribute, defaults to None :type mail: str | DeleteAttribute | None, optional + :param email: mail LDAP attribute, defaults to None + :type mail: str | DeleteAttribute | None, optional :return: Self. :rtype: LDAPUser """ + attrs: LDAPRecordAttributes = { "uidNumber": uid, "gidNumber": gid, @@ -807,7 +814,7 @@ def modify( "cn": cn, "sn": sn, "givenName": givenName, - "mail": mail, + "mail": mail or email, } self._set(attrs)