~ubuntuone-pqm-team/django-openid-auth/trunk

« back to all changes in this revision

Viewing changes to django_openid_auth/tests/test_auth.py

[r=nataliabidart] Avoid numbered suffix in usernames when OPENID_STRICT_USERNAMES is True

This commit fixes a cornercase in username conflict handling when
strict usernames are enforced. It also includes some refactoring that
makes the username calculation logic clearer depending on the value of
OPENID_STRICT_USERNAMES.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1001
1001
 
1002
1002
        self.message.set_sreg_args(nickname=existing_openid.user.username)
1003
1003
        self.backend.authenticate(openid_response=self.message.to_response())
 
1004
 
 
1005
    @override_settings(OPENID_STRICT_USERNAMES=True)
 
1006
    def test_auth_duplicate_username_handling_bypass_numbered_suffix(self):
 
1007
        nickname = 'nickname87'
 
1008
        existing_openid = self.make_user_openid(
 
1009
            user=User.objects.create_user(nickname))
 
1010
 
 
1011
        def duplicate_username_handler(sender, **kwargs):
 
1012
            existing_user = existing_openid.user
 
1013
            existing_user.username += '00'
 
1014
            existing_user.save()
 
1015
        self.addCleanup(
 
1016
            openid_duplicate_username.disconnect,
 
1017
            duplicate_username_handler, sender=User, dispatch_uid='testing')
 
1018
        openid_duplicate_username.connect(
 
1019
            duplicate_username_handler, sender=User, weak=False,
 
1020
            dispatch_uid='testing')
 
1021
 
 
1022
        self.message.set_sreg_args(nickname=existing_openid.user.username)
 
1023
        user = self.backend.authenticate(
 
1024
            openid_response=self.message.to_response())
 
1025
 
 
1026
        self.assertIsNotNone(user)
 
1027
        self.assertNotEqual(user, existing_openid.user)
 
1028
        self.assertEqual(
 
1029
            user.username, nickname,
 
1030
            'In strict mode, when conflicts are handled, the username must '
 
1031
            'be kept unmodified without numbered suffixes.')