Projet

Général

Profil

0002-journal-add-user-profile-management-events-58554.patch

Paul Marillonnet, 06 janvier 2022 11:31

Télécharger (6,7 ko)

Voir les différences:

Subject: [PATCH 2/3] journal: add user profile management events (#58554)

 src/authentic2/journal_event_types.py | 51 +++++++++++++++++++++++
 tests/test_manager_journal.py         | 59 ++++++++++++++++++++++++++-
 2 files changed, 108 insertions(+), 2 deletions(-)
src/authentic2/journal_event_types.py
364 364
        new_email = event.get_data('email')
365 365
        old_email = event.get_data('old_email')
366 366
        return _('email address changed from "{0}" to "{1}"').format(old_email, new_email)
367

  
368

  
369
class UserProfileAdd(EventTypeDefinition):
370
    name = 'user.profile.add'
371
    label = _('user profile creation')
372

  
373
    @classmethod
374
    def record(cls, user, profile_type):
375
        data = {
376
            'profile_type': profile_type.name or profile_type.slug,
377
        }
378
        super().record(user=user, data=data)
379

  
380
    @classmethod
381
    def get_message(cls, event, context):
382
        profile_type = event.get_data('profile_type')
383
        return _('profile of type {0} created for user').format(profile_type)
384

  
385

  
386
class UserProfileUpdate(EventTypeDefinition):
387
    name = 'user.profile.update'
388
    label = _('user profile update')
389

  
390
    @classmethod
391
    def record(cls, user, profile_type):
392
        data = {
393
            'profile_type': profile_type.name or profile_type.slug,
394
        }
395
        super().record(user=user, data=data)
396

  
397
    @classmethod
398
    def get_message(cls, event, context):
399
        profile_type = event.get_data('profile_type')
400
        return _('profile of type {0} updated for user').format(profile_type)
401

  
402

  
403
class UserProfileDelete(EventTypeDefinition):
404
    name = 'user.profile.delete'
405
    label = _('user profile deletion')
406

  
407
    @classmethod
408
    def record(cls, user, profile_type):
409
        data = {
410
            'profile_type': profile_type.name or profile_type.slug,
411
        }
412
        super().record(user=user, data=data)
413

  
414
    @classmethod
415
    def get_message(cls, event, context):
416
        profile_type = event.get_data('profile_type')
417
        return _('profile of type {0} deleted for user').format(profile_type)
tests/test_manager_journal.py
24 24
from authentic2.a2_rbac.models import Role
25 25
from authentic2.a2_rbac.utils import get_default_ou
26 26
from authentic2.apps.journal.models import Event, _registry
27
from authentic2.custom_user.models import User
27
from authentic2.custom_user.models import ProfileType, User
28 28
from authentic2.journal import journal
29 29
from authentic2.models import Service
30 30

  
......
50 50
    user = User.objects.create(
51 51
        username="user", email="user@example.com", ou=ou, uuid="1" * 32, first_name='Johnny', last_name='doe'
52 52
    )
53
    profile_type = ProfileType.objects.create(name='One Type', slug='one-type')
53 54
    agent = User.objects.create(username="agent", email="agent@example.com", ou=ou, uuid="2" * 32)
54 55
    role_user = Role.objects.create(name="role1", ou=ou)
55 56
    role_agent = Role.objects.create(name="role2", ou=ou)
......
269 270

  
270 271
    make("user.service.sso.refusal", user=user, session=session1, service=service)
271 272

  
273
    make(
274
        'user.profile.add',
275
        user=user,
276
        profile_type=profile_type,
277
    )
278
    make(
279
        'user.profile.update',
280
        user=user,
281
        profile_type=profile_type,
282
    )
283
    make(
284
        'user.profile.delete',
285
        user=user,
286
        profile_type=profile_type,
287
    )
288

  
272 289
    # verify we created at least one event for each type
273 290
    assert set(Event.objects.values_list("type__name", flat=True)) == set(_registry)
274 291

  
......
591 608
            'type': 'user.service.sso.refusal',
592 609
            'user': 'Johnny doe',
593 610
        },
611
        {
612
            'timestamp': 'Jan. 2, 2020, 9 p.m.',
613
            'type': 'user.profile.add',
614
            'user': 'Johnny doe',
615
            'message': 'profile of type One Type created for user',
616
        },
617
        {
618
            'timestamp': 'Jan. 2, 2020, 10 p.m.',
619
            'type': 'user.profile.update',
620
            'user': 'Johnny doe',
621
            'message': 'profile of type One Type updated for user',
622
        },
623
        {
624
            'timestamp': 'Jan. 2, 2020, 11 p.m.',
625
            'type': 'user.profile.delete',
626
            'user': 'Johnny doe',
627
            'message': 'profile of type One Type deleted for user',
628
        },
594 629
    ]
595 630

  
596 631
    agent_page = response.click('agent', index=1)
......
805 840
            'type': 'user.service.sso.refusal',
806 841
            'user': 'Johnny doe',
807 842
        },
843
        {
844
            'timestamp': 'Jan. 2, 2020, 9 p.m.',
845
            'type': 'user.profile.add',
846
            'user': 'Johnny doe',
847
            'message': 'profile of type One Type created for user',
848
        },
849
        {
850
            'timestamp': 'Jan. 2, 2020, 10 p.m.',
851
            'type': 'user.profile.update',
852
            'user': 'Johnny doe',
853
            'message': 'profile of type One Type updated for user',
854
        },
855
        {
856
            'timestamp': 'Jan. 2, 2020, 11 p.m.',
857
            'type': 'user.profile.delete',
858
            'user': 'Johnny doe',
859
            'message': 'profile of type One Type deleted for user',
860
        },
808 861
    ]
809 862

  
810 863

  
......
1084 1137

  
1085 1138
    table_content = [text_content(p) for p in response.pyquery('tbody td.journal-list--message-column')]
1086 1139
    assert table_content == [
1140
        'profile of type One Type deleted for user',
1141
        'profile of type One Type updated for user',
1142
        'profile of type One Type created for user',
1087 1143
        'automatic activation of user "Johnny doe" because the associated LDAP account reappeared',
1088 1144
        'automatic deactivation of user "Johnny doe" because the associated LDAP source has been deleted',
1089 1145
        'automatic deactivation of user "Johnny doe" because the associated LDAP account does not exist'
......
1102 1158
        'password reset request with email "user@example.com"',
1103 1159
        'user deletion',
1104 1160
        'profile edit (first name)',
1105
        'password change',
1106 1161
    ]
1107 1162

  
1108 1163
    response.form['event_type'].select(text='Role management')
1109
-