Passed
Pull Request — main (#378)
by
unknown
02:11
created

test_permission   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 11
eloc 86
dl 0
loc 104
rs 10
c 0
b 0
f 0

5 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
A TestPermission.test_invalid_permissions() 0 8 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(this_permisison_does_not_exist=True)
12
13
        with pytest.raises(ValueError):
14
            Permission(
15
                manage_channels="True",
16
            )
17
18
    @staticmethod
19
    def test_valid_permissions():
20
        valid_perms = (
21
            "create_instant_invite",
22
            "kick_members",
23
            "ban_members",
24
            "administrator",
25
            "manage_channels",
26
            "manage_guild",
27
            "add_reactions",
28
            "view_audit_log",
29
            "priority_speaker",
30
            "stream",
31
            "view_channel",
32
            "send_messages",
33
            "send_tts_messages",
34
            "manage_messages",
35
            "embed_links",
36
            "attach_files",
37
            "read_message_history",
38
            "mention_everyone",
39
            "use_external_emojis",
40
            "view_guild_insights",
41
            "connect",
42
            "speak",
43
            "mute_members",
44
            "deafen_members",
45
            "move_members",
46
            "use_vad",
47
            "change_nickname",
48
            "manage_nicknames",
49
            "manage_roles",
50
            "manage_webhooks",
51
            "manage_emojis_and_stickers",
52
            "use_application_commands",
53
            "request_to_speak",
54
            "manage_events",
55
            "manage_threads",
56
            "create_public_threads",
57
            "create_private_threads",
58
            "use_external_stickers",
59
            "send_messages_in_threads",
60
            "start_embedded_activities",
61
            "moderate_members",
62
        )
63
64
        for perm in valid_perms:
65
            assert hasattr(Permission(), perm)
66
67
    @staticmethod
68
    def test_from_int():
69
        assert Permission.from_int(1025, 268435472) == Permission(
70
            view_channel=True,
71
            manage_channels=False,
72
            create_instant_invite=True,
73
            manage_roles=False,
74
        )
75
76
        assert Permission.from_int(0, 0) == Permission()
77
78
    @staticmethod
79
    def test_to_int():
80
        allow, deny = Permission.to_int(Permission())
81
        assert allow == 0
82
        assert deny == 0
83
84
        permission = Permission()
85
        for enum in PermissionEnums:
86
            if getattr(permission, enum.name.lower()):
87
                allow |= enum.value
88
            elif getattr(permission, enum.name.lower()) is False:
89
                deny |= enum.value
90
91
        assert Permission.to_int(Permission()) == (0, 0)
92
        
93
    @staticmethod
94
    def test_allow():
95
        permission = Permission(
96
            view_channel=True,
97
            manage_channels=False,
98
            create_instant_invite=True,
99
            manage_roles=False,
100
        )
101
                
102
        assert permission.allow == 1025
103
        assert permission.deny == 268435472
104