GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

test_has_perm_without_obj()   B
last analyzed

Complexity

Conditions 1

Size

Total Lines 27

Duplication

Lines 24
Ratio 88.89 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
cc 1
c 3
b 1
f 0
dl 24
loc 27
rs 8.8571
1
from django.test import TestCase, override_settings
2
from django.core.exceptions import ObjectDoesNotExist
3
from ..backends import PermissionBackend
4
from ..utils.handlers import registry
5
from .compat import MagicMock
6
from .utils import create_user, create_article
7
from .models import Article
8
9
10
@override_settings(
11
    AUTHENTICATION_BACKENDS=(
12
        'django.contrib.auth.backends.ModelBackend',
13
        'permission.backends.PermissionBackend',
14
    ),
15
)
16
class PermissionPermissionBackendTestCase(TestCase):
17
    def setUp(self):
18
        self.user = create_user('john')
19
        self.perm1 = 'permission.add_article'
20
        self.perm2 = 'permission.change_article'
21
        self.perm3 = 'permission.delete_article'
22
        self.article = create_article('test')
23
        self.original_get_handlers = registry.get_handlers
24
25
    def tearDown(self):
26
        registry.get_handlers = self.original_get_handlers
27
28
    def test_constructor(self):
29
        backend = PermissionBackend()
30
31
    def test_authenticate(self):
32
        backend = PermissionBackend()
33
        self.assertEqual(backend.authenticate(None, None), None)
34
35
    def test_has_perm_without_obj(self):
36
        perms = [
37
            'permission.add_article',
38 View Code Duplication
            'permission.change_article',
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
39
            'permission.delete_article',
40
        ]
41
        registry.get_handlers = MagicMock(return_value=[
42
            MagicMock(get_supported_permissions=MagicMock(return_value=perms),
43
                      has_perm=MagicMock(return_value=False)),
44
            MagicMock(get_supported_permissions=MagicMock(return_value=perms),
45
                      has_perm=MagicMock(return_value=True)),
46
        ])
47
48
        backend = PermissionBackend()
49
        self.assertFalse(registry.get_handlers.called)
50
        self.assertFalse(registry.get_handlers()[0].get_supported_permissions.called)
51
        self.assertFalse(registry.get_handlers()[1].get_supported_permissions.called)
52
        self.assertFalse(registry.get_handlers()[0].has_perm.called)
53
        self.assertFalse(registry.get_handlers()[1].has_perm.called)
54
55
        self.assertTrue(backend.has_perm(self.user, self.perm1))
56
57
        self.assertTrue(registry.get_handlers.called)
58
        self.assertTrue(registry.get_handlers()[0].get_supported_permissions.called)
59
        self.assertTrue(registry.get_handlers()[1].get_supported_permissions.called)
60
        self.assertTrue(registry.get_handlers()[0].has_perm.called)
61
        self.assertTrue(registry.get_handlers()[1].has_perm.called)
62
63
    def test_has_perm_with_obj(self):
64
        perms = [
65
            'permission.add_article',
66 View Code Duplication
            'permission.change_article',
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
67
            'permission.delete_article',
68
        ]
69
        registry.get_handlers = MagicMock(return_value=[
70
            MagicMock(get_supported_permissions=MagicMock(return_value=perms),
71
                      has_perm=MagicMock(return_value=False)),
72
            MagicMock(get_supported_permissions=MagicMock(return_value=perms),
73
                      has_perm=MagicMock(return_value=True)),
74
        ])
75
76
        backend = PermissionBackend()
77
        self.assertFalse(registry.get_handlers.called)
78
        self.assertFalse(registry.get_handlers()[0].get_supported_permissions.called)
79
        self.assertFalse(registry.get_handlers()[1].get_supported_permissions.called)
80
        self.assertFalse(registry.get_handlers()[0].has_perm.called)
81
        self.assertFalse(registry.get_handlers()[1].has_perm.called)
82
83
        self.assertTrue(backend.has_perm(self.user, self.perm1, self.article))
84
85
        self.assertTrue(registry.get_handlers.called)
86
        self.assertTrue(registry.get_handlers()[0].get_supported_permissions.called)
87
        self.assertTrue(registry.get_handlers()[1].get_supported_permissions.called)
88
        self.assertTrue(registry.get_handlers()[0].has_perm.called)
89
        self.assertTrue(registry.get_handlers()[1].has_perm.called)
90
91
    @override_settings(
92
        PERMISSION_CHECK_PERMISSION_PRESENCE=False,
93
    )
94 View Code Duplication
    def test_has_perm_with_nil_permission(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
95
        perms = [
96
            'permission.add_article',
97
            'permission.change_article',
98
            'permission.delete_article',
99
        ]
100
        registry.get_handlers = MagicMock(return_value=[
101
            MagicMock(get_permissions=MagicMock(return_value=perms),
102
                      has_perm=MagicMock(return_value=False)),
103
            MagicMock(get_permissions=MagicMock(return_value=perms),
104
                      has_perm=MagicMock(return_value=True)),
105
        ])
106
107
        backend = PermissionBackend()
108
        self.assertFalse(backend.has_perm(None, 'permissions.nil_permission'))
109
110
    @override_settings(
111
        PERMISSION_CHECK_PERMISSION_PRESENCE=True,
112
    )
113 View Code Duplication
    def test_has_perm_with_nil_permission_raise(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
114
        perms = [
115
            'permission.add_article',
116
            'permission.change_article',
117
            'permission.delete_article',
118
        ]
119
        registry.get_handlers = MagicMock(return_value=[
120
            MagicMock(get_permissions=MagicMock(return_value=perms),
121
                      has_perm=MagicMock(return_value=False)),
122
            MagicMock(get_permissions=MagicMock(return_value=perms),
123
                      has_perm=MagicMock(return_value=True)),
124
        ])
125
126
        backend = PermissionBackend()
127
        self.assertRaises(ObjectDoesNotExist,
128
                backend.has_perm,
129
                None, 'permissions.nil_permission')
130
131
    @override_settings(
132
        PERMISSION_CHECK_PERMISSION_PRESENCE=False,
133
        AUTHENTICATION_BACKENDS = (
134
            'django.contrib.auth.backends.ModelBackend',
135
            'permission.backends.PermissionBackend',
136
        ),
137
    )
138
    def test_has_perm_with_nil_permission_with_user(self):
139
        self.assertFalse(self.user.has_perm('permissions.nil_permission'))
140
141
    @override_settings(
142
        PERMISSION_CHECK_PERMISSION_PRESENCE=True,
143
        AUTHENTICATION_BACKENDS = (
144
            'django.contrib.auth.backends.ModelBackend',
145
            'permission.backends.PermissionBackend',
146
        ),
147
    )
148
    def test_has_perm_with_nil_permission_raise_with_user(self):
149
        self.assertRaises(ObjectDoesNotExist,
150
                self.user.has_perm,
151
                'permissions.nil_permission')
152
153
    def test_has_module_perms(self):
154
        perms = [
155
            'permission.add_article',
156 View Code Duplication
            'permission.change_article',
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
157
            'permission.delete_article',
158
        ]
159
        app_labels = ['permission']
160
        registry.get_handlers = MagicMock(return_value=[
161
            MagicMock(get_supported_app_labels=MagicMock(return_value=app_labels),
162
                      has_module_perms=MagicMock(return_value=False)),
163
            MagicMock(get_supported_app_labels=MagicMock(return_value=app_labels),
164
                      has_module_perms=MagicMock(return_value=True)),
165
        ])
166
167
        backend = PermissionBackend()
168
        self.assertFalse(registry.get_handlers.called)
169
        self.assertFalse(registry.get_handlers()[0].get_supported_app_labels.called)
170
        self.assertFalse(registry.get_handlers()[1].get_supported_app_labels.called)
171
        self.assertFalse(registry.get_handlers()[0].has_module_perms.called)
172
        self.assertFalse(registry.get_handlers()[1].has_module_perms.called)
173
174
        self.assertTrue(backend.has_module_perms(self.user, 'permission'))
175
176
        self.assertTrue(registry.get_handlers.called)
177
        self.assertTrue(registry.get_handlers()[0].get_supported_app_labels.called)
178
        self.assertTrue(registry.get_handlers()[1].get_supported_app_labels.called)
179
        self.assertTrue(registry.get_handlers()[0].has_module_perms.called)
180
        self.assertTrue(registry.get_handlers()[1].has_module_perms.called)
181