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.

PermissionClassDecoratorsTestCase   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 188
Duplicated Lines 100 %

Importance

Changes 2
Bugs 2 Features 0
Metric Value
c 2
b 2
f 0
dl 188
loc 188
rs 10
wmc 8

6 Methods

Rating   Name   Duplication   Size   Complexity  
A tearDown() 3 3 1
B test_with_object() 35 35 1
B test_with_get_object() 37 37 1
B setUp() 29 29 1
B test_with_get_queryset() 40 40 2
B test_with_queryset() 38 38 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
# coding=utf-8
2
from django.test import TestCase
3
from django.core.exceptions import PermissionDenied
4
from ...utils.handlers import registry
5
from ...decorators.methodbase import permission_required
6
from ..compat import MagicMock
7
from .utils import (
8
    create_mock_handler,
9
    create_mock_request,
10
    create_mock_queryset,
11
    create_mock_model,
12
    create_mock_view_func,
13
    create_mock_view_class,
14
)
15
16
17 View Code Duplication
class PermissionClassDecoratorsTestCase(TestCase):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
18
    def setUp(self):
19
        self.handler = create_mock_handler()
20
        self.request = create_mock_request(self.handler)
21
        self.model = create_mock_model()
22
        self.model_instance = self.model()
23
        self.queryset = create_mock_queryset(self.model_instance)
24
25
        self.view_func = create_mock_view_func()
26
        self.view_class = create_mock_view_class(
27
            permission_required(
28
                'permission.add_article')(self.view_func))
29
        self.view_class_exc = create_mock_view_class(
30
            permission_required(
31
                'permission.add_article',
32
                raise_exception=True,
33
            )(self.view_func))
34
35
        # store original registry
36
        self._original_registry = registry._registry
37
38
        # clear registry and register mock handler
39
        registry._registry = {}
40
        registry.register(
41
                self.model,
42
                self.handler,
43
            )
44
45
        # clear call history
46
        self.handler.has_perm.return_value = False
47
48
    def tearDown(self):
49
        # restore original registry
50
        registry._registry = self._original_registry
51
52
    def test_with_object(self):
53
        # set object
54
        self.view_class.object = self.model_instance
55
        self.view_class_exc.object = self.model_instance
56
57
        # has_perm always return False
58
        self.view_class.as_view()(self.request, pk=1)
59
        self.request.user.has_perm.assert_called_with(
60
                'permission.add_article',
61
                obj=self.model_instance,
62
            )
63
        self.handler.has_perm.assert_called_with(
64
                'permission.add_article',
65
                obj=self.model_instance,
66
            )
67
        self.assertFalse(self.view_func.called)
68
69
        self.assertRaises(PermissionDenied,
70
                          self.view_class_exc.as_view(),
71
                          self.request,
72
                          pk=1)
73
        self.assertFalse(self.view_func.called)
74
75
        # has_perm always return True
76
        self.handler.has_perm.return_value = True
77
        self.view_class.as_view()(self.request, pk=1)
78
        self.request.user.has_perm.assert_called_with(
79
                'permission.add_article',
80
                obj=self.model_instance,
81
            )
82
        self.handler.has_perm.assert_called_with(
83
                'permission.add_article',
84
                obj=self.model_instance,
85
            )
86
        self.assertTrue(self.view_func.called)
87
88
    def test_with_get_object(self):
89
        # set object
90
        self.view_class.get_object = MagicMock(
91
                return_value=self.model_instance)
92
        self.view_class_exc.get_object = MagicMock(
93
                return_value=self.model_instance)
94
95
        # has_perm always return False
96
        self.view_class.as_view()(self.request, pk=1)
97
        self.request.user.has_perm.assert_called_with(
98
                'permission.add_article',
99
                obj=self.model_instance,
100
            )
101
        self.handler.has_perm.assert_called_with(
102
                'permission.add_article',
103
                obj=self.model_instance,
104
            )
105
        self.assertFalse(self.view_func.called)
106
107
        self.assertRaises(PermissionDenied,
108
                          self.view_class_exc.as_view(),
109
                          self.request,
110
                          pk=1)
111
        self.assertFalse(self.view_func.called)
112
113
        # has_perm always return True
114
        self.handler.has_perm.return_value = True
115
        self.view_class.as_view()(self.request, pk=1)
116
        self.request.user.has_perm.assert_called_with(
117
                'permission.add_article',
118
                obj=self.model_instance,
119
            )
120
        self.handler.has_perm.assert_called_with(
121
                'permission.add_article',
122
                obj=self.model_instance,
123
            )
124
        self.assertTrue(self.view_func.called)
125
126
    def test_with_queryset(self):
127
        # set object
128
        get_object = lambda x, y: y.get(*x.args, **x.kwargs)
129
        self.view_class.get_object = get_object
130
        self.view_class_exc.get_object = get_object
131
        self.view_class.queryset = self.queryset
132
        self.view_class_exc.queryset = self.queryset
133
134
        # has_perm always return False
135
        self.view_class.as_view()(self.request, pk=1)
136
        self.request.user.has_perm.assert_called_with(
137
                'permission.add_article',
138
                obj=self.model_instance,
139
            )
140
        self.handler.has_perm.assert_called_with(
141
                'permission.add_article',
142
                obj=self.model_instance,
143
            )
144
        self.assertFalse(self.view_func.called)
145
146
        self.assertRaises(PermissionDenied,
147
                          self.view_class_exc.as_view(),
148
                          self.request,
149
                          pk=1)
150
        self.assertFalse(self.view_func.called)
151
152
        # has_perm always return True
153
        self.handler.has_perm.return_value = True
154
        self.view_class.as_view()(self.request, pk=1)
155
        self.request.user.has_perm.assert_called_with(
156
                'permission.add_article',
157
                obj=self.model_instance,
158
            )
159
        self.handler.has_perm.assert_called_with(
160
                'permission.add_article',
161
                obj=self.model_instance,
162
            )
163
        self.assertTrue(self.view_func.called)
164
165
    def test_with_get_queryset(self):
166
        # set object
167
        get_object = lambda x, y: y.get(*x.args, **x.kwargs)
168
        self.view_class.get_object = get_object
169
        self.view_class_exc.get_object = get_object
170
        self.view_class.get_queryset = MagicMock(
171
                return_value=self.queryset)
172
        self.view_class_exc.get_queryset = MagicMock(
173
                return_value=self.queryset)
174
175
        # has_perm always return False
176
        self.view_class.as_view()(self.request, pk=1)
177
        self.request.user.has_perm.assert_called_with(
178
                'permission.add_article',
179
                obj=self.model_instance,
180
            )
181
        self.handler.has_perm.assert_called_with(
182
                'permission.add_article',
183
                obj=self.model_instance,
184
            )
185
        self.assertFalse(self.view_func.called)
186
187
        self.assertRaises(PermissionDenied,
188
                          self.view_class_exc.as_view(),
189
                          self.request,
190
                          pk=1)
191
        self.assertFalse(self.view_func.called)
192
193
        # has_perm always return True
194
        self.handler.has_perm.return_value = True
195
        self.view_class.as_view()(self.request, pk=1)
196
        self.request.user.has_perm.assert_called_with(
197
                'permission.add_article',
198
                obj=self.model_instance,
199
            )
200
        self.handler.has_perm.assert_called_with(
201
                'permission.add_article',
202
                obj=self.model_instance,
203
            )
204
        self.assertTrue(self.view_func.called)
205
206