From f148399793ccb163a536eb2ae7ae2e2315e57d99 Mon Sep 17 00:00:00 2001 From: Nicolas ROCHE Date: Fri, 14 May 2021 17:34:48 +0200 Subject: [PATCH] test: auth_fc updates the user email with FC info (#45199) --- tests/auth_fc/test_auth_fc.py | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/auth_fc/test_auth_fc.py b/tests/auth_fc/test_auth_fc.py index f70c8b0a5..478feed13 100644 --- a/tests/auth_fc/test_auth_fc.py +++ b/tests/auth_fc/test_auth_fc.py @@ -574,3 +574,43 @@ def test_same_email_different_sub(app, franceconnect): # email collision, sub is different, no new user created assert User.objects.count() == 1 assert 'another email address' in resp + + +def test_update_fc_email(settings, app, franceconnect): + settings.A2_EMAIL_IS_UNIQUE = True + user = User(email='john.doe@example.com', first_name='John', last_name='Doe') + user.save() + models.FcAccount.objects.create(user=user, sub='1234') + + # user1 FC email has changed + assert franceconnect.sub == '1234' + assert franceconnect.user_info['given_name'] == 'Ÿuñe' + franceconnect.user_info['email'] = 'jhonny@example.com' + + # connection using FC sub 1234 will update user1 email + franceconnect.login_with_fc_fixed_params(app) + assert User.objects.get(pk=user.pk).email == 'jhonny@example.com' + assert User.objects.get(pk=user.pk).first_name == 'Ÿuñe' + assert app.session['_auth_user_id'] == str(user.pk) + + +def test_update_fc_redondant_email(settings, app, franceconnect): + settings.A2_EMAIL_IS_UNIQUE = True + user1 = User(email='john.doe@example.com', first_name='John', last_name='Doe') + user1.save() + models.FcAccount.objects.create(user=user1, sub='1234') + user2 = User(email='joe@example.com', first_name='Joe', last_name='Dalton') + user2.save() + models.FcAccount.objects.create(user=user2, sub='4567') + + # user1 FC email has changed and provide user2 email + assert franceconnect.sub == '1234' + assert franceconnect.user_info['given_name'] == 'Ÿuñe' + franceconnect.user_info['email'] = 'joe@example.com' + + # connection using FC sub 1234 will introduce a redondant mail + franceconnect.login_with_fc_fixed_params(app) + assert User.objects.get(pk=user1.pk).email == 'joe@example.com' + assert User.objects.get(pk=user1.pk).first_name == 'Ÿuñe' + assert User.objects.get(pk=user2.pk).email == 'joe@example.com' + assert app.session['_auth_user_id'] == str(user1.pk)