@@ 16-204 (lines=189) @@ | ||
13 | ) |
|
14 | ||
15 | ||
16 | class PermissionClassDecoratorsTestCase(TestCase): |
|
17 | def setUp(self): |
|
18 | self.handler = create_mock_handler() |
|
19 | self.request = create_mock_request(self.handler) |
|
20 | self.model = create_mock_model() |
|
21 | self.model_instance = self.model() |
|
22 | self.queryset = create_mock_queryset(self.model_instance) |
|
23 | ||
24 | self.view_func = create_mock_view_func() |
|
25 | self.view_class = permission_required( |
|
26 | 'permission.add_article')( |
|
27 | create_mock_view_class(self.view_func) |
|
28 | ) |
|
29 | self.view_class_exc = permission_required( |
|
30 | 'permission.add_article', |
|
31 | raise_exception=True)( |
|
32 | create_mock_view_class(self.view_func) |
|
33 | ) |
|
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 |
@@ 17-204 (lines=188) @@ | ||
14 | ) |
|
15 | ||
16 | ||
17 | class PermissionClassDecoratorsTestCase(TestCase): |
|
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 |