Gérer la fin de scolarité #9

Merged
champeno merged 23 commits from Evarin/archicubes into master 2018-09-30 00:03:27 +02:00
2 changed files with 45 additions and 31 deletions
Showing only changes of commit dc8873cafc - Show all commits

View file

@ -89,7 +89,7 @@ class LongTermClipperAccountAdapter(DefaultSocialAccountAdapter):
def pre_social_login(self, request, sociallogin): def pre_social_login(self, request, sociallogin):
clipper = sociallogin.account.uid clipper = sociallogin.account.uid
try: try:
a = SocialAccount.objects.get(provider='old_clipper', a = SocialAccount.objects.get(provider='clipper_inactive',
uid=clipper) uid=clipper)
# An account with that uid was registered, but potentially # An account with that uid was registered, but potentially
# deprecated at the beginning of the year # deprecated at the beginning of the year
@ -103,7 +103,6 @@ class LongTermClipperAccountAdapter(DefaultSocialAccountAdapter):
# But before that, we need to invalidate the email address of # But before that, we need to invalidate the email address of
# the previous user # the previous user
email = ldap_data.get('email') email = ldap_data.get('email')
print(email, 'deprecate')
u_mails = EmailAddress.objects.filter(user=a.user) u_mails = EmailAddress.objects.filter(user=a.user)
try: try:
clipper_mail = u_mails.get(email=email) clipper_mail = u_mails.get(email=email)
@ -138,7 +137,6 @@ class LongTermClipperAccountAdapter(DefaultSocialAccountAdapter):
return "{}@{}".format(clipper, data.get('annee', '00')) return "{}@{}".format(clipper, data.get('annee', '00'))
def save_user(self, request, sociallogin, form=None): def save_user(self, request, sociallogin, form=None):
print("populate user", sociallogin.account.uid)
user = sociallogin.user user = sociallogin.user
user.set_unusable_password() user.set_unusable_password()
@ -154,8 +152,7 @@ class LongTermClipperAccountAdapter(DefaultSocialAccountAdapter):
name_parts = (name or '').split(' ') name_parts = (name or '').split(' ')
user_field(user, 'first_name', name_parts[0]) user_field(user, 'first_name', name_parts[0])
user_field(user, 'last_name', ' '.join(name_parts[1:])) user_field(user, 'last_name', ' '.join(name_parts[1:]))
print(user.username, user)
# Ignore form # Ignore form
get_account_adapter().populate_username(request, user) get_account_adapter().populate_username(request, user)

View file

@ -157,13 +157,13 @@ class LongTermClipperTests(CASTestCase):
_mock_ldap.reset() _mock_ldap.reset()
def _setup_ldap(self, promo=12): def _setup_ldap(self, promo=12):
_mock_ldap.set_return_value('search_s', import ldap
('dc=spi,dc=ens,dc=fr,uid=test'), _mock_ldap.directory['dc=spi,dc=ens,dc=fr']={
( 'uid': ['test'],
('cn', ('John Smith')), 'cn': ['John Smith'],
('mailRoutingAddress', ('test@clipper.ens.fr')), 'mailRoutingAddress' : ['test@clipper.ens.fr'],
('homeDirectory', ("/users/%d/phy/test/" % promo)) 'homeDirectory': ["/users/%d/phy/test/" % promo],
)) }
def test_new_connexion(self): def test_new_connexion(self):
@ -180,6 +180,15 @@ class LongTermClipperTests(CASTestCase):
sa = list(SocialAccount.objects.all())[-1] sa = list(SocialAccount.objects.all())[-1]
self.assertEqual(sa.user.id, u.id) self.assertEqual(sa.user.id, u.id)
def test_connect_disconnect(self):
self._setup_ldap()
r0 = self.client_cas_login(self.client, provider_id="clipper", username="test")
self.assertIn("_auth_user_id", self.client.session)
self.assertIn('user', r0.context)
r1 = self.client.logout()
self.assertNotIn("_auth_user_id", self.client.session)
def test_second_connexion(self): def test_second_connexion(self):
self._setup_ldap() self._setup_ldap()
@ -201,34 +210,42 @@ class LongTermClipperTests(CASTestCase):
def test_reconnect_after_deprecation(self): def test_reconnect_after_deprecation(self):
self._setup_ldap() self._setup_ldap()
self.client_cas_login(self.client, provider_id="clipper", username="test") r = self.client_cas_login(self.client, provider_id="clipper",
nsa = SocialAccount.objects.count() username="test")
nu = User.objects.count() user0 = r.context['user']
n_sa0 = SocialAccount.objects.count()
n_u0 = User.objects.count()
self.client.logout() self.client.logout()
deprecate_clippers() deprecate_clippers()
self.client_cas_login(self.client, provider_id="clipper", username="test")
r = self.client_cas_login(self.client, provider_id="clipper",
sa = SocialAccount.objects.all() username="test")
self.assertEqual(len(sa), nsa) user1 = r.context['user']
u = User.objects.all() sa1 = list(SocialAccount.objects.all())
self.assertEqual(len(u), nu) n_u1 = User.objects.count()
self.assertEqual(sa[-1].user.id, u[-1].id) self.assertEqual(len(sa1), n_sa0)
self.assertEqual(n_u1, n_u0)
self.assertEqual(user1.id, user0.id)
def test_override_inactive_account(self): def test_override_inactive_account(self):
self._setup_ldap(12) self._setup_ldap(12)
self.client_cas_login(self.client, provider_id="clipper", username="test") r = self.client_cas_login(self.client, provider_id="clipper",
nsa = SocialAccount.objects.count() username="test")
nu = User.objects.count() user0 = r.context['user']
n_sa0 = SocialAccount.objects.count()
n_u0 = User.objects.count()
self.client.logout() self.client.logout()
deprecate_clippers() deprecate_clippers()
self._setup_ldap(13) self._setup_ldap(13)
self.client_cas_login(self.client, provider_id="clipper", username="test") r = self.client_cas_login(self.client, provider_id="clipper",
username="test")
sa = SocialAccount.objects.all() user1 = r.context['user']
self.assertEqual(len(sa), nsa+1) sa1 = list(SocialAccount.objects.all())
u = User.objects.all() n_u1 = User.objects.count()
self.assertEqual(len(u), nu+1) self.assertEqual(len(sa1), n_sa0+1)
self.assertEqual(sa[-1].user.id, u[-1].id) self.assertEqual(n_u1, n_u0+1)
self.assertNotEqual(user1.id, user0.id)