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_remove_permission_logic_registry()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 13

Duplication

Lines 12
Ratio 92.31 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 12
loc 13
rs 9.4285
1
# coding=utf-8
2
from django.test import TestCase
3
from ...logics import PermissionLogic
4
from ...handlers import LogicalPermissionHandler
5
from ...utils.handlers import registry
6
from ...utils.logics import add_permission_logic, remove_permission_logic
7
from ..models import Article
8
from ..compat import MagicMock
9
10
11
class PermissionUtilsLogicsTestCase(TestCase):
12
    def setUp(self):
13
        self.mock_logic = MagicMock(spec=PermissionLogic)
14
        self.mock_logic2 = MagicMock(spec=PermissionLogic)
15
        # clear registry
16
        self.registry_backup = registry._registry
17
        registry._registry = {}
18
        # clear attributes
19
        if hasattr(Article, '_permission_logics'):
20
            delattr(Article, '_permission_logics')
21
        if hasattr(Article, '_permission_handler'):
22
            delattr(Article, '_permission_handler')
23
24
    def tearDown(self):
25
        registry._registry = self.registry_backup
26
27
    def test_add_permission_logic_private_attributes(self):
28
        m = self.mock_logic
29
        # the following private attribute should not be exists in Article model
30
        self.assertFalse(hasattr(Article, '_permission_logics'))
31
        self.assertFalse(hasattr(Article, '_permission_handler'))
32
33
        # but after add permission logic, they will be appeared
34
        add_permission_logic(Article, m)
35
        self.assertTrue(hasattr(Article, '_permission_logics'))
36
        self.assertTrue(hasattr(Article, '_permission_handler'))
37
38
    def test_add_permission_logic_registry(self):
39
        m = self.mock_logic
40
        # nothing have been registered in registry
41
        self.assertEqual(registry._registry, {})
42
        # but after add permission logic, they will be appeared
43
        add_permission_logic(Article, m)
44
        self.assertEqual(Article._permission_logics, set([m]))
45
        self.assertTrue(isinstance(registry._registry[Article],
46
                                   LogicalPermissionHandler))
47
48
    def test_remove_permission_logic_private_attributes(self):
49
        m = self.mock_logic
50
        add_permission_logic(Article, m)
51
        self.assertTrue(hasattr(Article, '_permission_logics'))
52
        self.assertTrue(hasattr(Article, '_permission_handler'))
53
54
        # private attribute should not be disappeared
55
        remove_permission_logic(Article, m)
56
        self.assertTrue(hasattr(Article, '_permission_logics'))
57
        self.assertTrue(hasattr(Article, '_permission_handler'))
58
59
    def test_remove_permission_logic_registry(self):
60 View Code Duplication
        m = self.mock_logic
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
61
        add_permission_logic(Article, m)
62
        self.assertEqual(Article._permission_logics, set([m]))
63
        self.assertTrue(isinstance(registry._registry[Article],
64
                                   LogicalPermissionHandler))
65
66
        # permission_logics should be changed but registry
67
        # should not be changed
68
        remove_permission_logic(Article, m)
69
        self.assertEqual(Article._permission_logics, set())
70
        self.assertTrue(isinstance(registry._registry[Article],
71
                                   LogicalPermissionHandler))
72
73
    def test_remove_permission_logic_registry_with_class(self):
74 View Code Duplication
        m = self.mock_logic
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
75
        m2 = self.mock_logic2
76
        add_permission_logic(Article, m)
77
        add_permission_logic(Article, m2)
78
        self.assertEqual(Article._permission_logics, set([m, m2]))
79
        self.assertTrue(isinstance(registry._registry[Article],
80
                                   LogicalPermissionHandler))
81
82
        # permission_logics should be changed but registry
83
        # should not be changed
84
        remove_permission_logic(Article, PermissionLogic)
85
        self.assertEqual(Article._permission_logics, set())
86
        self.assertTrue(isinstance(registry._registry[Article],
87
                                   LogicalPermissionHandler))
88
89
    def test_remove_permission_logic_exception(self):
90
        m = self.mock_logic
91
        add_permission_logic(Article, m)
92
        remove_permission_logic(Article, m)
93
        # it should not raise exception
94
        remove_permission_logic(Article, m)
95
        # it should raise exception if fail_silently is False
96
        self.assertRaises(KeyError,
97
                remove_permission_logic, Article, m,
98
                fail_silently=False)
99