Projet

Général

Profil

0003-users-api-unset-verified-flag-on-a-modified-email-ad.patch

Paul Marillonnet, 18 février 2019 18:31

Télécharger (2,61 ko)

Voir les différences:

Subject: [PATCH 3/4] users api: unset verified flag on a modified email
 address (#30740)

 src/authentic2/api_views.py |  3 +++
 tests/test_api.py           | 30 ++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)
src/authentic2/api_views.py
429 429
        self.check_perm('custom_user.change_user', instance.ou)
430 430
        if 'ou' in validated_data:
431 431
            self.check_perm('custom_user.change_user', validated_data.get('ou'))
432
        if validated_data.get('email') != instance.email:
433
            instance.email_verified = False
434
            instance.save()
432 435
        super(BaseUserSerializer, self).update(instance, validated_data)
433 436
        for key, value in attributes.iteritems():
434 437
            if is_verified.get(key):
tests/test_api.py
141 141
    assert resp.json['next'] is None
142 142

  
143 143

  
144
def test_api_users_email_verified(settings, app, admin, email_verified_user):
145
    from django.contrib.auth import get_user_model
146
    User = get_user_model()
147
    user = User.objects.get(id=email_verified_user.id)
148
    assert user.email_verified
149

  
150
    payload = {
151
        'username': email_verified_user.username,
152
        'id': email_verified_user.id,
153
        'email': 'john.doe@nowhere.null',
154
        'first_name': 'Johnny',
155
        'last_name': 'Doeny',
156
    }
157
    headers = basic_authorization_header(admin)
158
    resp = app.put_json('/api/users/{}/'.format(email_verified_user.uuid),
159
            params=payload, headers=headers, status=200)
160
    user = User.objects.get(id=email_verified_user.id)
161
    assert not user.email_verified
162
    assert not resp.json['email_verified']
163

  
164
    user.email_verified = True
165
    user.email = 'johnny.doeny@foo.bar'
166
    user.save()
167

  
168
    resp = app.patch_json('/api/users/{}/'.format(email_verified_user.uuid),
169
            params=payload, headers=headers, status=200)
170
    user = User.objects.get(id=email_verified_user.id)
171
    assert not user.email_verified
172
    assert not resp.json['email_verified']
173

  
144 174
def test_api_users_boolean_attribute(app, superuser):
145 175
    from authentic2.models import Attribute, AttributeValue
146 176
    at = Attribute.objects.create(
147
-