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.
Completed
Push — master ( 194382...d1a5fb )
by Lambda
01:38
created

ArticlePermissionHandler   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 8
Duplicated Lines 100 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 8
loc 8
rs 10
wmc 4

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.template import Context
4
from django.template import Template
5
from permission.utils.handlers import registry
6
from permission.templatetags.permissionif import replace_builtin_if
7
from permission.tests.utils import create_user
8
from permission.tests.utils import create_article
9
from permission.tests.utils import create_permission
10
from permission.tests.compat import override_settings
11
12
13
@override_settings(
14
    AUTHENTICATION_BACKENDS=(
15
        'django.contrib.auth.backends.ModelBackend',
16
        'permission.backends.PermissionBackend',
17
    ),
18
    PERMISSION_REPLACE_BUILTIN_IF=False,
19
)
20
class PermissionTemplateTagsTestCase(TestCase):
21
22
    def setUp(self):
23
        # store original registry
24
        self._original_registry = registry._registry
25
        # clear registry and register mock handler
26
        registry._registry = {}
27
        # Make sure builtin if is not replaced
28
        replace_builtin_if(False)
29
30
    def tearDown(self):
31
        # restore original registry
32
        registry._registry = self._original_registry
33
34
    def test_permissionif_tag(self):
35
        user = create_user('permission_templatetag_test_user1')
36
        perm = create_permission('permission_templatetag_test_perm1')
37
38
        user.user_permissions.add(perm)
39
40
        self.assertTrue(user.has_perm(
41
            'permission.permission_templatetag_test_perm1'))
42
43
        context = Context({
44
            'user': user,
45
        })
46
47
        out = Template(
48
            "{% load permissionif %}"
49
            "{% permission user has "
50
            "'permission.permission_templatetag_test_perm1' %}"
51
            "Success"
52
            "{% else %}"
53
            "Fail"
54
            "{% endpermission %}"
55
        ).render(context)
56
57
        self.assertEqual(out, "Success")
58
59
    def test_permissionif_tag_elif(self):
60
        user = create_user('permission_templatetag_test_user1')
61
        perm = create_permission('permission_templatetag_test_perm1')
62
63
        user.user_permissions.add(perm)
64
65
        self.assertTrue(user.has_perm(
66
            'permission.permission_templatetag_test_perm1'))
67
68
        context = Context({
69
            'user': user,
70
        })
71
72
        out = Template(
73
            "{% load permissionif %}"
74
            "{% permission user has 'permission.unknown_permission' %}"
75
            "Fail"
76
            "{% elpermission user has 'permission.unknown_permisson2' %}"
77
            "Fail"
78
            "{% elpermission user has "
79
            "'permission.permission_templatetag_test_perm1' %}"
80
            "Success"
81
            "{% else %}"
82
            "Fail"
83
            "{% endpermission %}"
84
        ).render(context)
85
86
        self.assertEqual(out, "Success")
87
88
    def test_permissionif_tag_else(self):
89
        user = create_user('permission_templatetag_test_user1')
90
        perm = create_permission('permission_templatetag_test_perm1')
91
92
        user.user_permissions.add(perm)
93
94
        self.assertTrue(
95
            user.has_perm('permission.permission_templatetag_test_perm1'))
96
97
        context = Context({
98
            'user': user,
99
        })
100
101
        out = Template(
102
            "{% load permissionif %}"
103
            "{% permission user has 'permission.unknown_permission' %}"
104
            "Fail"
105
            "{% else %}"
106
            "Success"
107
            "{% endpermission %}"
108
        ).render(context)
109
110
        self.assertEqual(out, "Success")
111
112 View Code Duplication
    def test_permissionif_tag_with_obj(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
113
        from permission.tests.models import Article
114
        from permission.handlers import PermissionHandler
115
116
        user = create_user('permission_templatetag_test_user1')
117
        art1 = create_article('permission_templatetag_test_article1')
118
        art2 = create_article('permission_templatetag_test_article2')
119
        create_permission('permission_templatetag_test_perm1')
120
121
        class ArticlePermissionHandler(PermissionHandler):
122
123
            def has_perm(self, user_obj, perm, obj=None):
124
                if perm == 'permission.permission_templatetag_test_perm1':
125
                    if (obj and obj.title ==
126
                            'permission_templatetag_test_article2'):
127
                        return True
128
                return False
129
        registry.register(Article, ArticlePermissionHandler)
130
131
        self.assertFalse(
132
            user.has_perm('permission.permission_templatetag_test_perm1'))
133
        self.assertFalse(
134
            user.has_perm('permission.permission_templatetag_test_perm1',
135
                          art1))
136
        self.assertTrue(
137
            user.has_perm('permission.permission_templatetag_test_perm1',
138
                          art2))
139
140
        context = Context({
141
            'user': user,
142
            'art1': art1,
143
            'art2': art2,
144
        })
145
146
        out = Template(
147
            "{% load permissionif %}"
148
            "{% permission user has "
149
            "'permission.permission_templatetag_test_perm1' %}"
150
            "Fail"
151
            "{% elpermission user has "
152
            "'permission.permission_templatetag_test_perm1' of art1 %}"
153
            "Fail"
154
            "{% elpermission user has "
155
            "'permission.permission_templatetag_test_perm1' of art2 %}"
156
            "Success"
157
            "{% else %}"
158
            "Fail"
159
            "{% endpermission %}"
160
        ).render(context)
161
162
        self.assertEqual(out, "Success")
163
164
    def test_permissionif_tag_and(self):
165
        user = create_user('permission_templatetag_test_user1')
166
        perm1 = create_permission('permission_templatetag_test_perm1')
167
        perm2 = create_permission('permission_templatetag_test_perm2')
168
169
        user.user_permissions.add(perm1, perm2)
170
171
        self.assertTrue(
172
            user.has_perm('permission.permission_templatetag_test_perm1'))
173
        self.assertTrue(
174
            user.has_perm('permission.permission_templatetag_test_perm2'))
175
176
        context = Context({
177
            'user': user,
178
        })
179
180
        out = Template(
181
            "{% load permissionif %}"
182
            "{% permission user has 'permission.unknown_perm' "
183
            "and user has 'permission.permission_templatetag_test_perm2' %}"
184
            "Fail"
185
            "{% elpermission user has "
186
            "'permission.permission_templatetag_test_perm1' "
187
            "and user has 'permission.unknown_perm' %}"
188
            "Fail"
189
            "{% elpermission user has "
190
            "'permission.permission_templatetag_test_perm1' "
191
            "and user has 'permission.permission_templatetag_test_perm2' %}"
192
            "Success"
193
            "{% endpermission %}"
194
        ).render(context)
195
196
        self.assertEqual(out, "Success")
197
198
    def test_permissionif_tag_or(self):
199
200
        user = create_user('permission_templatetag_test_user1')
201
        perm1 = create_permission('permission_templatetag_test_perm1')
202
        create_permission('permission_templatetag_test_perm2')
203
204
        user.user_permissions.add(perm1)
205
206
        self.assertTrue(
207
            user.has_perm('permission.permission_templatetag_test_perm1'))
208
        self.assertFalse(
209
            user.has_perm('permission.permission_templatetag_test_perm2'))
210
211
        context = Context({
212
            'user': user,
213
        })
214
215
        out = Template(
216
            "{% load permissionif %}"
217
            "{% permission user has "
218
            "'permission.permission_templatetag_test_perm1' "
219
            "and user has 'permission.permission_templatetag_test_perm2' %}"
220
            "Fail"
221
            "{% elpermission user has "
222
            "'permission.permission_templatetag_test_perm1' "
223
            "or user has 'permission.permission_templatetag_test_perm2' %}"
224
            "Success"
225
            "{% endpermission %}"
226
        ).render(context)
227
228
        self.assertEqual(out, "Success")
229
230
231
@override_settings(
232
    AUTHENTICATION_BACKENDS=(
233
        'django.contrib.auth.backends.ModelBackend',
234
        'permission.backends.PermissionBackend',
235
    ),
236
    PERMISSION_REPLACE_BUILTIN_IF=True,
237
)
238
class PermissionTemplateTagsWithBuiltinTestCase(TestCase):
239
240
    def setUp(self):
241
        # store original registry
242
        self._original_registry = registry._registry
243
        # clear registry and register mock handler
244
        registry._registry = {}
245
        # Make sure builtin if is replaced
246
        replace_builtin_if(True)
247
248
    def tearDown(self):
249
        # restore original registry
250
        registry._registry = self._original_registry
251
252
    def test_permissionif_tag(self):
253
        user = create_user('permission_templatetag_test_user1')
254
        perm = create_permission('permission_templatetag_test_perm1')
255
256
        user.user_permissions.add(perm)
257
258
        self.assertTrue(user.has_perm(
259
            'permission.permission_templatetag_test_perm1'))
260
261
        context = Context({
262
            'user': user,
263
        })
264
265
        out = Template(
266
            "{% permission user has "
267
            "'permission.permission_templatetag_test_perm1' %}"
268
            "Success"
269
            "{% else %}"
270
            "Fail"
271
            "{% endpermission %}"
272
        ).render(context)
273
274
        self.assertEqual(out, "Success")
275
276
    def test_permissionif_tag_elif(self):
277
        user = create_user('permission_templatetag_test_user1')
278
        perm = create_permission('permission_templatetag_test_perm1')
279
280
        user.user_permissions.add(perm)
281
282
        self.assertTrue(user.has_perm(
283
            'permission.permission_templatetag_test_perm1'))
284
285
        context = Context({
286
            'user': user,
287
        })
288
289
        out = Template(
290
            "{% permission user has 'permission.unknown_permission' %}"
291
            "Fail"
292
            "{% elpermission user has 'permission.unknown_permission2' %}"
293
            "Fail"
294
            "{% elpermission user has "
295
            "'permission.permission_templatetag_test_perm1' %}"
296
            "Success"
297
            "{% else %}"
298
            "Fail"
299
            "{% endpermission %}"
300
        ).render(context)
301
302
        self.assertEqual(out, "Success")
303
304
    def test_permissionif_tag_else(self):
305
        user = create_user('permission_templatetag_test_user1')
306
        perm = create_permission('permission_templatetag_test_perm1')
307
308
        user.user_permissions.add(perm)
309
310
        self.assertTrue(
311
            user.has_perm('permission.permission_templatetag_test_perm1'))
312
313
        context = Context({
314
            'user': user,
315
        })
316
317
        out = Template(
318
            "{% permission user has 'permission.unknown_permission' %}"
319
            "Fail"
320
            "{% else %}"
321
            "Success"
322
            "{% endpermission %}"
323
        ).render(context)
324
325
        self.assertEqual(out, "Success")
326
327 View Code Duplication
    def test_permissionif_tag_with_obj(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
328
        from permission.tests.models import Article
329
        from permission.handlers import PermissionHandler
330
331
        user = create_user('permission_templatetag_test_user1')
332
        art1 = create_article('permission_templatetag_test_article1')
333
        art2 = create_article('permission_templatetag_test_article2')
334
        create_permission('permission_templatetag_test_perm1')
335
336
        class ArticlePermissionHandler(PermissionHandler):
337
338
            def has_perm(self, user_obj, perm, obj=None):
339
                if perm == 'permission.permission_templatetag_test_perm1':
340
                    if (obj and obj.title ==
341
                            'permission_templatetag_test_article2'):
342
                        return True
343
                return False
344
        registry.register(Article, ArticlePermissionHandler)
345
346
        self.assertFalse(
347
            user.has_perm('permission.permission_templatetag_test_perm1'))
348
        self.assertFalse(
349
            user.has_perm('permission.permission_templatetag_test_perm1',
350
                          art1))
351
        self.assertTrue(
352
            user.has_perm('permission.permission_templatetag_test_perm1',
353
                          art2))
354
355
        context = Context({
356
            'user': user,
357
            'art1': art1,
358
            'art2': art2,
359
        })
360
361
        out = Template(
362
            "{% permission user has "
363
            "'permission.permission_templatetag_test_perm1' %}"
364
            "Fail"
365
            "{% elpermission user has "
366
            "'permission.permission_templatetag_test_perm1' of art1 %}"
367
            "Fail"
368
            "{% elpermission user has "
369
            "'permission.permission_templatetag_test_perm1' of art2 %}"
370
            "Success"
371
            "{% else %}"
372
            "Fail"
373
            "{% endpermission %}"
374
        ).render(context)
375
376
        self.assertEqual(out, "Success")
377
378
    def test_permissionif_tag_and(self):
379
        user = create_user('permission_templatetag_test_user1')
380
        perm1 = create_permission('permission_templatetag_test_perm1')
381
        perm2 = create_permission('permission_templatetag_test_perm2')
382
383
        user.user_permissions.add(perm1, perm2)
384
385
        self.assertTrue(
386
            user.has_perm('permission.permission_templatetag_test_perm1'))
387
        self.assertTrue(
388
            user.has_perm('permission.permission_templatetag_test_perm2'))
389
390
        context = Context({
391
            'user': user,
392
        })
393
394
        out = Template(
395
            "{% permission user has 'permission.unknown_perm' "
396
            "and user has 'permission.permission_templatetag_test_perm2' %}"
397
            "Fail"
398
            "{% elpermission user has "
399
            "'permission.permission_templatetag_test_perm1' "
400
            "and user has 'permission.unknown_perm' %}"
401
            "Fail"
402
            "{% elpermission user has "
403
            "'permission.permission_templatetag_test_perm1' "
404
            "and user has 'permission.permission_templatetag_test_perm2' %}"
405
            "Success"
406
            "{% endpermission %}"
407
        ).render(context)
408
409
        self.assertEqual(out, "Success")
410
411
    def test_permissionif_tag_or(self):
412
413
        user = create_user('permission_templatetag_test_user1')
414
        perm1 = create_permission('permission_templatetag_test_perm1')
415
        create_permission('permission_templatetag_test_perm2')
416
417
        user.user_permissions.add(perm1)
418
419
        self.assertTrue(
420
            user.has_perm('permission.permission_templatetag_test_perm1'))
421
        self.assertFalse(
422
            user.has_perm('permission.permission_templatetag_test_perm2'))
423
424
        context = Context({
425
            'user': user,
426
        })
427
428
        out = Template(
429
            "{% permission user has "
430
            "'permission.permission_templatetag_test_perm1' "
431
            "and user has 'permission.permission_templatetag_test_perm2' %}"
432
            "Fail"
433
            "{% elpermission user has "
434
            "'permission.permission_templatetag_test_perm1' "
435
            "or user has 'permission.permission_templatetag_test_perm2' %}"
436
            "Success"
437
            "{% endpermission %}"
438
        ).render(context)
439
440
        self.assertEqual(out, "Success")
441
442
    def test_if_tag(self):
443
        user = create_user('permission_templatetag_test_user1')
444
        perm = create_permission('permission_templatetag_test_perm1')
445
446
        user.user_permissions.add(perm)
447
448
        self.assertTrue(
449
            user.has_perm('permission.permission_templatetag_test_perm1'))
450
451
        context = Context({
452
            'user': user,
453
        })
454
455
        out = Template(
456
            "{% if user has 'permission.permission_templatetag_test_perm1' %}"
457
            "Success"
458
            "{% else %}"
459
            "Fail"
460
            "{% endif %}"
461
        ).render(context)
462
463
        self.assertEqual(out, "Success")
464
465
    def test_if_tag_elif(self):
466
        user = create_user('permission_templatetag_test_user1')
467
        perm = create_permission('permission_templatetag_test_perm1')
468
469
        user.user_permissions.add(perm)
470
471
        self.assertTrue(
472
            user.has_perm('permission.permission_templatetag_test_perm1'))
473
474
        context = Context({
475
            'user': user,
476
        })
477
478
        out = Template(
479
            "{% if user has 'permission.unknown_permission' %}"
480
            "Fail"
481
            "{% elif user has 'permission.unknown_permisson2' %}"
482
            "Fail"
483
            "{% elif user has "
484
            "'permission.permission_templatetag_test_perm1' %}"
485
            "Success"
486
            "{% else %}"
487
            "Fail"
488
            "{% endif %}"
489
        ).render(context)
490
491
        self.assertEqual(out, "Success")
492
493
    def test_if_tag_else(self):
494
        user = create_user('permission_templatetag_test_user1')
495
        perm = create_permission('permission_templatetag_test_perm1')
496
497
        user.user_permissions.add(perm)
498
499
        self.assertTrue(
500
            user.has_perm('permission.permission_templatetag_test_perm1'))
501
502
        context = Context({
503
            'user': user,
504
        })
505
506
        out = Template(
507
            "{% if user has 'permission.unknown_permission' %}"
508
            "Fail"
509
            "{% else %}"
510
            "Success"
511
            "{% endif %}"
512
        ).render(context)
513
514
        self.assertEqual(out, "Success")
515
516 View Code Duplication
    def test_if_tag_with_obj(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
517
        from permission.tests.models import Article
518
        from permission.handlers import PermissionHandler
519
520
        user = create_user('permission_templatetag_test_user1')
521
        art1 = create_article('permission_templatetag_test_article1')
522
        art2 = create_article('permission_templatetag_test_article2')
523
        create_permission('permission_templatetag_test_perm1')
524
525
        class ArticlePermissionHandler(PermissionHandler):
526
            def has_perm(self, user_obj, perm, obj=None):
527
                if perm == 'permission.permission_templatetag_test_perm1':
528
                    if (obj and obj.title ==
529
                            'permission_templatetag_test_article2'):
530
                        return True
531
                return False
532
        registry.register(Article, ArticlePermissionHandler)
533
534
        self.assertFalse(
535
            user.has_perm('permission.permission_templatetag_test_perm1'))
536
        self.assertFalse(
537
            user.has_perm('permission.permission_templatetag_test_perm1',
538
                          art1))
539
        self.assertTrue(
540
            user.has_perm('permission.permission_templatetag_test_perm1',
541
                          art2))
542
543
        context = Context({
544
            'user': user,
545
            'art1': art1,
546
            'art2': art2,
547
        })
548
549
        out = Template(
550
            "{% if user has 'permission.permission_templatetag_test_perm1' %}"
551
            "Fail"
552
            "{% elif user has "
553
            "'permission.permission_templatetag_test_perm1' of art1 %}"
554
            "Fail"
555
            "{% elif user has "
556
            "'permission.permission_templatetag_test_perm1' of art2 %}"
557
            "Success"
558
            "{% else %}"
559
            "Fail"
560
            "{% endif %}"
561
        ).render(context)
562
563
        self.assertEqual(out, "Success")
564
565
    def test_if_tag_and(self):
566
        user = create_user('permission_templatetag_test_user1')
567
        perm1 = create_permission('permission_templatetag_test_perm1')
568
        perm2 = create_permission('permission_templatetag_test_perm2')
569
570
        user.user_permissions.add(perm1, perm2)
571
572
        self.assertTrue(
573
            user.has_perm('permission.permission_templatetag_test_perm1'))
574
        self.assertTrue(
575
            user.has_perm('permission.permission_templatetag_test_perm2'))
576
577
        context = Context({
578
            'user': user,
579
        })
580
581
        out = Template(
582
            "{% if user has 'permission.unknown_perm' "
583
            "and user has 'permission.permission_templatetag_test_perm2' %}"
584
            "Fail"
585
            "{% elif user has 'permission.permission_templatetag_test_perm1' "
586
            "and user has 'permission.unknown_perm' %}"
587
            "Fail"
588
            "{% elif user has 'permission.permission_templatetag_test_perm1' "
589
            "and user has 'permission.permission_templatetag_test_perm2' %}"
590
            "Success"
591
            "{% endif %}"
592
        ).render(context)
593
594
        self.assertEqual(out, "Success")
595
596
    def test_if_tag_or(self):
597
        user = create_user('permission_templatetag_test_user1')
598
        perm1 = create_permission('permission_templatetag_test_perm1')
599
        create_permission('permission_templatetag_test_perm2')
600
601
        user.user_permissions.add(perm1)
602
603
        self.assertTrue(
604
            user.has_perm('permission.permission_templatetag_test_perm1'))
605
        self.assertFalse(
606
            user.has_perm('permission.permission_templatetag_test_perm2'))
607
608
        context = Context({
609
            'user': user,
610
        })
611
612
        out = Template(
613
            "{% if user has 'permission.permission_templatetag_test_perm1' "
614
            "and user has 'permission.permission_templatetag_test_perm2' %}"
615
            "Fail"
616
            "{% elif user has 'permission.permission_templatetag_test_perm1' "
617
            "or user has 'permission.permission_templatetag_test_perm2' %}"
618
            "Success"
619
            "{% endif %}"
620
        ).render(context)
621
622
        self.assertEqual(out, "Success")
623