Passed
Push — main ( cf3570...95bc96 )
by Jochen
04:50
created

sion()   A

Complexity

Conditions 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nop 0
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
"""
2
:Copyright: 2006-2021 Jochen Kupperschmidt
3
:License: Revised BSD (see `LICENSE` file for details)
4
"""
5
6
import pytest
7
8
from byceps.database import db
9
from byceps.services.authorization import service as authorization_service
10
from byceps.services.user import (
11
    command_service as user_command_service,
12
    deletion_service as user_deletion_service,
13
)
14
from byceps.services.user import event_service
15
16
17
@pytest.fixture
18
def role(permission_tickle_mortals):
19
    permission = permission_tickle_mortals
20
21
    role = authorization_service.create_role('demigod', 'Demigod')
22
    authorization_service.assign_permission_to_role(permission.id, role.id)
23
24
    yield role
25
26
    authorization_service.delete_role(role.id)
27
28
29
def test_delete_account(admin_app, permission_tickle_mortals, role, make_user):
30
    permission = permission_tickle_mortals
31
32
    screen_name = 'GetRidOfMe'
33
    email_address = '[email protected]'
34
    legacy_id = 'user-22299'
35
36
    user = make_user(
37
        screen_name, email_address=email_address, legacy_id=legacy_id
38
    )
39
40
    admin_user = make_user('AdminWhoMayDeleteUsers')
41
42
    user_id = user.id
43
44
    authorization_service.assign_role_to_user(role.id, user_id)
45
46
    reason = 'duplicate'
47
48
    user_before = user_command_service._get_user(user_id)
49
50
    assert user_before.screen_name == screen_name
51
    assert user_before.email_address == email_address
52
    assert user_before.deleted == False
53
    assert user_before.legacy_id == legacy_id
54
55
    # details
56
    assert user_before.detail.first_names is not None
57
    assert user_before.detail.last_name is not None
58
    assert user_before.detail.date_of_birth is not None
59
    assert user_before.detail.country is not None
60
    assert user_before.detail.zip_code is not None
61
    assert user_before.detail.city is not None
62
    assert user_before.detail.street is not None
63
    assert user_before.detail.phone_number is not None
64
65
    # events
66
    events_before = event_service.get_events_for_user(user_before.id)
67
    assert len(events_before) == 2
68
    assert events_before[1].event_type == 'role-assigned'
69
70
    # authorization
71
    assert authorization_service.find_role_ids_for_user(user_id) == {'demigod'}
72
    assert authorization_service.get_permission_ids_for_user(user_id) == {
73
        'tickle_mortals'
74
    }
75
76
    # -------------------------------- #
77
78
    user_deletion_service.delete_account(user_id, admin_user.id, reason=reason)
79
80
    # -------------------------------- #
81
82
    user_after = user_command_service._get_user(user_id)
83
84
    assert user_after.screen_name is None
85
    assert user_after.email_address is None
86
    assert user_after.deleted == True
87
    assert user_after.legacy_id is None
88
89
    # details
90
    assert user_after.detail.first_names is None
91
    assert user_after.detail.last_name is None
92
    assert user_after.detail.date_of_birth is None
93
    assert user_after.detail.country is None
94
    assert user_after.detail.zip_code is None
95
    assert user_after.detail.city is None
96
    assert user_after.detail.street is None
97
    assert user_after.detail.phone_number is None
98
99
    # avatar
100
    assert user_after.avatar_selection is None
101
102
    # events
103
    events_after = event_service.get_events_for_user(user_after.id)
104
    assert len(events_after) == 3
105
106
    user_enabled_event = events_after[2]
107
    assert user_enabled_event.event_type == 'user-deleted'
108
    assert user_enabled_event.data == {
109
        'initiator_id': str(admin_user.id),
110
        'reason': reason,
111
    }
112
113
    # authorization
114
    assert authorization_service.find_role_ids_for_user(user_id) == set()
115
    assert authorization_service.get_permission_ids_for_user(user_id) == set()
116
117
    # Clean up.
118
    authorization_service.deassign_all_roles_from_user(user.id)
119