Passed
Pull Request — main (#378)
by
unknown
01:52
created

test_permission   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 8
eloc 78
dl 0
loc 94
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A TestPermission.test_to_int() 0 14 4
A TestPermission.test_allow() 0 11 1
B TestPermission.test_valid_permissions() 0 48 2
A TestPermission.test_from_int() 0 10 1
1
# Copyright Pincer 2021-Present
2
# Full MIT License can be found in `LICENSE` at the project root.
3
4
from pincer.objects.guild.permissions import Permissions, PermissionEnum
5
6
7
class TestPermission:
8
    @staticmethod
9
    def test_valid_permissions():
10
        valid_perms = (
11
            "create_instant_invite",
12
            "kick_members",
13
            "ban_members",
14
            "administrator",
15
            "manage_channels",
16
            "manage_guild",
17
            "add_reactions",
18
            "view_audit_log",
19
            "priority_speaker",
20
            "stream",
21
            "view_channel",
22
            "send_messages",
23
            "send_tts_messages",
24
            "manage_messages",
25
            "embed_links",
26
            "attach_files",
27
            "read_message_history",
28
            "mention_everyone",
29
            "use_external_emojis",
30
            "view_guild_insights",
31
            "connect",
32
            "speak",
33
            "mute_members",
34
            "deafen_members",
35
            "move_members",
36
            "use_vad",
37
            "change_nickname",
38
            "manage_nicknames",
39
            "manage_roles",
40
            "manage_webhooks",
41
            "manage_emojis_and_stickers",
42
            "use_application_commands",
43
            "request_to_speak",
44
            "manage_events",
45
            "manage_threads",
46
            "create_public_threads",
47
            "create_private_threads",
48
            "use_external_stickers",
49
            "send_messages_in_threads",
50
            "start_embedded_activities",
51
            "moderate_members",
52
        )
53
54
        for perm in valid_perms:
55
            assert hasattr(Permissions(), perm)
56
57
    @staticmethod
58
    def test_from_int():
59
        assert Permissions.from_ints(1025, 268435472) == Permissions(
60
            view_channel=True,
61
            manage_channels=False,
62
            create_instant_invite=True,
63
            manage_roles=False,
64
        )
65
66
        assert Permissions.from_ints(0, 0) == Permissions()
67
68
    @staticmethod
69
    def test_to_int():
70
        allow, deny = Permissions.to_ints(Permissions())
71
        assert allow == 0
72
        assert deny == 0
73
74
        permission = Permissions()
75
        for enum in PermissionEnum:
76
            if getattr(permission, enum.name.lower()):
77
                allow |= enum.value
78
            elif getattr(permission, enum.name.lower()) is False:
79
                deny |= enum.value
80
81
        assert Permissions.to_ints(Permissions()) == (0, 0)
82
83
    @staticmethod
84
    def test_allow():
85
        permission = Permissions(
86
            view_channel=True,
87
            manage_channels=False,
88
            create_instant_invite=True,
89
            manage_roles=False,
90
        )
91
92
        assert permission.allow == 1025
93
        assert permission.deny == 268435472
94