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.

ArticlePermissionHandler   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 8
Duplicated Lines 0 %

Importance

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