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