Tests for authens.shortcuts.register_cas_account
This commit is contained in:
parent
cf4d80da13
commit
1cdc4a12d6
2 changed files with 71 additions and 0 deletions
|
@ -17,3 +17,27 @@ class FakeCASClient:
|
|||
)
|
||||
}
|
||||
return self.cas_login, attributes, None
|
||||
|
||||
|
||||
class FakeLDAPObject:
|
||||
"""Fake object to be used in place of the result of `ldap.initialize`.
|
||||
|
||||
By default, always return the same entry 'johndoe'.
|
||||
"""
|
||||
|
||||
def __init__(self, cas_login: str, entrance_year: int):
|
||||
self.cas_login = cas_login
|
||||
self.entrance_year = entrance_year
|
||||
|
||||
def search_s(self, base, scope, request, *args):
|
||||
if request != "(uid={})".format(self.cas_login):
|
||||
raise ValueError("I don't know how to answer this request!")
|
||||
|
||||
home_dir = "/users/{}/info/{}".format(self.entrance_year % 100, self.cas_login)
|
||||
dn = "whatever"
|
||||
attrs = {
|
||||
"uid": [self.cas_login.encode("utf-8")],
|
||||
"cn": ["{}'s long name".format(self.cas_login).encode("utf-8")],
|
||||
"homeDirectory": [home_dir.encode("utf-8")],
|
||||
}
|
||||
return [(dn, attrs)]
|
||||
|
|
47
authens/tests/test_shortcuts.py
Normal file
47
authens/tests/test_shortcuts.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
from unittest import mock
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TestCase
|
||||
|
||||
from authens.models import CASAccount, OldCASAccount
|
||||
from authens.shortcuts import register_cas_account
|
||||
from authens.tests.cas_utils import FakeLDAPObject
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class TestRegisterCasAccount(TestCase):
|
||||
@mock.patch("authens.shortcuts.ldap.initialize")
|
||||
def test_register(self, mock_ldap_obj):
|
||||
mock_ldap_obj.return_value = FakeLDAPObject("johndoe", 2019)
|
||||
|
||||
user = User.objects.create_user(username="whatever")
|
||||
self.assertFalse(hasattr(user, "cas_account"))
|
||||
|
||||
register_cas_account(user, cas_login="johndoe")
|
||||
user.refresh_from_db()
|
||||
self.assertTrue(hasattr(user, "cas_account"))
|
||||
self.assertEqual(user.cas_account.cas_login, "johndoe")
|
||||
self.assertEqual(user.cas_account.entrance_year, 2019)
|
||||
|
||||
def test_cant_register_twice(self):
|
||||
user = User.objects.create_user(username="whatever")
|
||||
CASAccount.objects.create(user=user, cas_login="johndoe", entrance_year=2019)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
register_cas_account(user, cas_login="johndoe")
|
||||
with self.assertRaises(ValueError):
|
||||
register_cas_account(user, cas_login="janisjoplin")
|
||||
|
||||
self.assertEqual(CASAccount.objects.count(), 1)
|
||||
|
||||
def test_cant_register_old_account(self):
|
||||
user = User.objects.create_user(username="whatever")
|
||||
OldCASAccount.objects.create(user=user, cas_login="toto", entrance_year=2012)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
register_cas_account(user, cas_login="toto")
|
||||
with self.assertRaises(ValueError):
|
||||
register_cas_account(user, cas_login="ninasimone")
|
||||
|
||||
self.assertFalse(CASAccount.objects.exists())
|
Loading…
Reference in a new issue