mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
test_auth_backends: Fix _LDAPUser type errors.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 3ba68e7847
)
This commit is contained in:
committed by
Alex Vandiver
parent
ad7eed2d7e
commit
1199927a6c
@@ -7132,53 +7132,47 @@ class TestLDAP(ZulipLDAPTestCase):
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_when_user_exists(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["Full Name"], "sn": ["Short Name"]}
|
||||
|
||||
backend = self.backend
|
||||
email = self.example_email("hamlet")
|
||||
user_profile, created = backend.get_or_build_user(str(email), _LDAPUser())
|
||||
ldap_user = ZulipLDAPUser(backend, email, realm=backend._realm)
|
||||
user_profile, created = backend.get_or_build_user(email, ldap_user)
|
||||
self.assertFalse(created)
|
||||
self.assertEqual(user_profile.delivery_email, email)
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_when_user_does_not_exist(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["Full Name"]}
|
||||
|
||||
ldap_user_attr_map = {"full_name": "fn"}
|
||||
|
||||
with self.settings(AUTH_LDAP_USER_ATTR_MAP=ldap_user_attr_map):
|
||||
backend = self.backend
|
||||
email = "newuser@zulip.com"
|
||||
user_profile, created = backend.get_or_build_user(email, _LDAPUser())
|
||||
ldap_user = ZulipLDAPUser(backend, email, realm=backend._realm)
|
||||
ldap_user._user_attrs = {"fn": ["Full Name"]}
|
||||
user_profile, created = backend.get_or_build_user(email, ldap_user)
|
||||
self.assertTrue(created)
|
||||
self.assertEqual(user_profile.delivery_email, email)
|
||||
self.assertEqual(user_profile.full_name, "Full Name")
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_when_user_has_invalid_name(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["<invalid name>"]}
|
||||
|
||||
ldap_user_attr_map = {"full_name": "fn"}
|
||||
|
||||
with self.settings(AUTH_LDAP_USER_ATTR_MAP=ldap_user_attr_map):
|
||||
backend = self.backend
|
||||
email = "nonexisting@zulip.com"
|
||||
ldap_user = ZulipLDAPUser(backend, email, realm=backend._realm)
|
||||
ldap_user._user_attrs = {"fn": ["<invalid name>"]}
|
||||
with self.assertRaisesRegex(Exception, "Invalid characters in name!"):
|
||||
backend.get_or_build_user(email, _LDAPUser())
|
||||
backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_when_realm_is_deactivated(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["Full Name"]}
|
||||
|
||||
ldap_user_attr_map = {"full_name": "fn"}
|
||||
|
||||
with self.settings(AUTH_LDAP_USER_ATTR_MAP=ldap_user_attr_map):
|
||||
backend = self.backend
|
||||
email = "nonexisting@zulip.com"
|
||||
ldap_user = ZulipLDAPUser(backend, email, realm=backend._realm)
|
||||
do_deactivate_realm(
|
||||
backend._realm,
|
||||
acting_user=None,
|
||||
@@ -7186,27 +7180,23 @@ class TestLDAP(ZulipLDAPTestCase):
|
||||
email_owners=False,
|
||||
)
|
||||
with self.assertRaisesRegex(Exception, "Realm has been deactivated"):
|
||||
backend.get_or_build_user(email, _LDAPUser())
|
||||
backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_when_ldap_has_no_email_attr(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["Full Name"], "sn": ["Short Name"]}
|
||||
|
||||
nonexisting_attr = "email"
|
||||
with self.settings(LDAP_EMAIL_ATTR=nonexisting_attr):
|
||||
backend = self.backend
|
||||
email = "nonexisting@zulip.com"
|
||||
ldap_user = ZulipLDAPUser(backend, email, realm=backend._realm)
|
||||
ldap_user._user_attrs = {"fn": ["Full Name"], "sn": ["Short Name"]}
|
||||
with self.assertRaisesRegex(
|
||||
Exception, "LDAP user doesn't have the needed email attribute"
|
||||
):
|
||||
backend.get_or_build_user(email, _LDAPUser())
|
||||
backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_email(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["Test User"]}
|
||||
|
||||
ldap_user_attr_map = {"full_name": "fn"}
|
||||
|
||||
with self.settings(AUTH_LDAP_USER_ATTR_MAP=ldap_user_attr_map):
|
||||
@@ -7216,32 +7206,33 @@ class TestLDAP(ZulipLDAPTestCase):
|
||||
realm.save()
|
||||
|
||||
email = "spam@mailnator.com"
|
||||
ldap_user = ZulipLDAPUser(self.backend, email, realm=realm)
|
||||
with self.assertRaisesRegex(ZulipLDAPError, "Email validation failed."):
|
||||
self.backend.get_or_build_user(email, _LDAPUser())
|
||||
self.backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
realm.emails_restricted_to_domains = True
|
||||
realm.save(update_fields=["emails_restricted_to_domains"])
|
||||
|
||||
email = "spam+spam@mailnator.com"
|
||||
ldap_user = ZulipLDAPUser(self.backend, email, realm=realm)
|
||||
with self.assertRaisesRegex(ZulipLDAPError, "Email validation failed."):
|
||||
self.backend.get_or_build_user(email, _LDAPUser())
|
||||
self.backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
email = "spam@acme.com"
|
||||
ldap_user = ZulipLDAPUser(self.backend, email, realm=realm)
|
||||
with self.assertRaisesRegex(
|
||||
ZulipLDAPError, "This email domain isn't allowed in this organization."
|
||||
):
|
||||
self.backend.get_or_build_user(email, _LDAPUser())
|
||||
self.backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_get_or_build_user_when_ldap_has_no_full_name_mapping(self) -> None:
|
||||
class _LDAPUser:
|
||||
attrs = {"fn": ["Full Name"], "sn": ["Short Name"]}
|
||||
|
||||
with self.settings(AUTH_LDAP_USER_ATTR_MAP={}):
|
||||
backend = self.backend
|
||||
email = "nonexisting@zulip.com"
|
||||
ldap_user = ZulipLDAPUser(backend, email, realm=backend._realm)
|
||||
with self.assertRaisesRegex(Exception, "Missing required mapping for user's full name"):
|
||||
backend.get_or_build_user(email, _LDAPUser())
|
||||
backend.get_or_build_user(email, ldap_user)
|
||||
|
||||
@override_settings(AUTHENTICATION_BACKENDS=("zproject.backends.ZulipLDAPAuthBackend",))
|
||||
def test_login_failure_when_domain_does_not_match(self) -> None:
|
||||
|
Reference in New Issue
Block a user