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

permission()   A

Complexity

Conditions 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 0
dl 0
loc 7
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.services.authorization import service
9
10
11
def test_assign_role_to_user(
12
    admin_app, user, admin_user, permission_tickle_mortals, role
13
):
14
    permission_id = permission_tickle_mortals.id
15
16
    user_permission_ids_before = service.get_permission_ids_for_user(user.id)
17
    assert permission_id not in user_permission_ids_before
18
19
    service.assign_role_to_user(role.id, user.id, initiator_id=admin_user.id)
20
21
    user_permission_ids_after = service.get_permission_ids_for_user(user.id)
22
    assert permission_id in user_permission_ids_after
23
24
    # Expect attempt to assign that role again to that user to have no
25
    # effect and to not raise an exception.
26
    service.assign_role_to_user(role.id, user.id, initiator_id=admin_user.id)
27
28
29
def test_deassign_role_from_user(
30
    admin_app, user, admin_user, permission_tickle_mortals, role
31
):
32
    permission_id = permission_tickle_mortals.id
33
34
    service.assign_role_to_user(role.id, user.id, initiator_id=admin_user.id)
35
36
    user_permission_ids_before = service.get_permission_ids_for_user(user.id)
37
    assert permission_id in user_permission_ids_before
38
39
    service.deassign_role_from_user(
40
        role.id, user.id, initiator_id=admin_user.id
41
    )
42
43
    user_permission_ids_after = service.get_permission_ids_for_user(user.id)
44
    assert permission_id not in user_permission_ids_after
45
46
47
@pytest.fixture
48
def role(permission_tickle_mortals, user):
49
    role = service.create_role('demigod', 'Demigod')
50
    service.assign_permission_to_role(permission_tickle_mortals.id, role.id)
51
52
    yield role
53
54
    service.deassign_all_roles_from_user(user.id)
55
    service.delete_role(role.id)
56