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

test_permission   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

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