Commit 1e013af003cfaaa694f2a167a05ba7ca5c956bd7
1 parent
60d3e724
Exists in
master
and in
5 other branches
Adding test errors #128 #129 #130
Showing
2 changed files
with
149 additions
and
4 deletions
Show diff stats
No preview for this file type
files/tests/tests.py
... | ... | @@ -7,6 +7,7 @@ from core.models import MimeType |
7 | 7 | from users.models import User |
8 | 8 | from files.models import TopicFile |
9 | 9 | from files.forms import FileForm, UpdateFileForm |
10 | +from rolepermissions.verifications import has_object_permission | |
10 | 11 | from courses.models import CourseCategory, Course, Subject, Topic |
11 | 12 | |
12 | 13 | import os |
... | ... | @@ -35,6 +36,15 @@ class FileTestCase(TestCase): |
35 | 36 | ) |
36 | 37 | assign_role(self.teacher, 'professor') |
37 | 38 | |
39 | + self.teacher2 = User.objects.create_user( | |
40 | + username = 'teacher2', | |
41 | + email = 'teacherg2@school.com', | |
42 | + is_staff = False, | |
43 | + is_active = True, | |
44 | + password = 'teaching123' | |
45 | + ) | |
46 | + assign_role(self.teacher2, 'professor') | |
47 | + | |
38 | 48 | self.student = User.objects.create_user( |
39 | 49 | username = 'student', |
40 | 50 | email = 'student@amadeus.com', |
... | ... | @@ -117,6 +127,49 @@ class FileTestCase(TestCase): |
117 | 127 | self.assertEqual(response.status_code, 302) |
118 | 128 | self.assertTemplateUsed(template_name = 'files/create_file.html') |
119 | 129 | |
130 | + def test_create_file_form_errors(self): | |
131 | + self.client.login(username='admin', password = 'testing123') | |
132 | + | |
133 | + files = TopicFile.objects.all().count() | |
134 | + self.assertEqual(TopicFile.objects.all().count(), files) #Macthing no file | |
135 | + | |
136 | + topic = Topic.objects.get(name = 'Topic Test') | |
137 | + | |
138 | + url = reverse('course:file:create_file', kwargs={'slug': topic.slug}) | |
139 | + data = { | |
140 | + "file_url" : self.file | |
141 | + } | |
142 | + data['topic'] = topic | |
143 | + | |
144 | + # Get modal | |
145 | + response = self.client.get(url) | |
146 | + self.assertEqual(response.status_code, 200) | |
147 | + | |
148 | + # Create file | |
149 | + response = self.client.post(url, data) | |
150 | + self.assertFormError(response, 'form', 'name', 'Este campo é obrigatório.') | |
151 | + self.assertEqual(TopicFile.objects.all().count(), files) | |
152 | + self.assertEqual(response.status_code, 400) | |
153 | + | |
154 | + # Test file too large | |
155 | + upload_file = open( '/'.join([FILE_DIR, 'files/large.pdf']), 'rb') | |
156 | + file = SimpleUploadedFile(upload_file.name, upload_file.read()) | |
157 | + data = { | |
158 | + "name": 'File too large', | |
159 | + "file_url": file | |
160 | + } | |
161 | + data['topic'] = topic | |
162 | + | |
163 | + # Get modal | |
164 | + response = self.client.get(url) | |
165 | + self.assertEqual(response.status_code, 200) | |
166 | + | |
167 | + #Create file | |
168 | + response = self.client.post(url, data) | |
169 | + self.assertFormError(response, 'form', 'file_url', 'File too large (Max 10MB)') | |
170 | + self.assertEqual(TopicFile.objects.all().count(), files) | |
171 | + self.assertEqual(response.status_code, 400) | |
172 | + | |
120 | 173 | def test_update_file_ok(self): |
121 | 174 | self.client.login(username='admin', password = 'testing123') |
122 | 175 | |
... | ... | @@ -128,13 +181,13 @@ class FileTestCase(TestCase): |
128 | 181 | icon = 'photo' |
129 | 182 | ) |
130 | 183 | self.file_update = TopicFile.objects.create( |
131 | - name = 'testinglink', | |
184 | + name = 'testingFile', | |
132 | 185 | file_url = self.file, |
133 | 186 | file_type = mime_type, |
134 | 187 | topic = topic |
135 | 188 | ) |
136 | 189 | |
137 | - url = reverse('course:file:update_file',kwargs={'slug': self.file_update.slug}) | |
190 | + url = reverse('course:file:update_file', kwargs={'slug': self.file_update.slug}) | |
138 | 191 | |
139 | 192 | upload_file_update = open( '/'.join([FILE_DIR, 'files/update.png']), 'rb') |
140 | 193 | new_file = SimpleUploadedFile(upload_file_update.name, upload_file_update.read()) |
... | ... | @@ -152,6 +205,55 @@ class FileTestCase(TestCase): |
152 | 205 | self.assertEqual(response.status_code, 302) |
153 | 206 | self.assertTemplateUsed(template_name = 'files/update_file.html') |
154 | 207 | |
208 | + def test_update_file_student_errors(self): | |
209 | + # Student | |
210 | + self.client.login(username='student', password = 'testing123') | |
211 | + | |
212 | + topic = Topic.objects.get(name = 'Topic Test') | |
213 | + | |
214 | + # File type | |
215 | + mime_type = MimeType.objects.create( | |
216 | + typ = 'image/png', | |
217 | + icon = 'photo' | |
218 | + ) | |
219 | + self.file_update = TopicFile.objects.create( | |
220 | + name = 'testingFile', | |
221 | + file_url = self.file, | |
222 | + file_type = mime_type, | |
223 | + topic = topic | |
224 | + ) | |
225 | + | |
226 | + url = reverse('course:file:update_file', kwargs={'slug': self.file_update.slug}) | |
227 | + | |
228 | + upload_file_update = open( '/'.join([FILE_DIR, 'files/update.png']), 'rb') | |
229 | + new_file = SimpleUploadedFile(upload_file_update.name, upload_file_update.read()) | |
230 | + data = { | |
231 | + 'name' : 'updated', | |
232 | + 'file_url': new_file | |
233 | + } | |
234 | + | |
235 | + # Get modal | |
236 | + response = self.client.get(url) | |
237 | + self.assertEqual(response.status_code, 302) | |
238 | + | |
239 | + response = self.client.post(url, data) | |
240 | + self.assertEqual(TopicFile.objects.all()[0].name, 'testingFile') # new file name | |
241 | + self.assertEqual(response.status_code, 302) | |
242 | + self.assertTemplateUsed(template_name = 'files/update_file.html') | |
243 | + | |
244 | + # Teacher | |
245 | + self.client.logout() | |
246 | + self.client.login(username='teacher2', password = 'testing123') | |
247 | + | |
248 | + # Get modal | |
249 | + response = self.client.get(url) | |
250 | + self.assertEqual(response.status_code, 302) | |
251 | + | |
252 | + response = self.client.post(url, data) | |
253 | + self.assertEqual(TopicFile.objects.all()[0].name, 'testingFile') # new file name | |
254 | + self.assertEqual(response.status_code, 302) | |
255 | + self.assertTemplateUsed(template_name = 'files/update_file.html') | |
256 | + | |
155 | 257 | def test_delete_file(self): |
156 | 258 | self.client.login(username='admin', password = 'testing123') |
157 | 259 | |
... | ... | @@ -163,13 +265,13 @@ class FileTestCase(TestCase): |
163 | 265 | icon = 'photo' |
164 | 266 | ) |
165 | 267 | self.file_delete = TopicFile.objects.create( |
166 | - name = 'testinglink', | |
268 | + name = 'testingFile', | |
167 | 269 | file_url = self.file, |
168 | 270 | file_type = mime_type, |
169 | 271 | topic = topic |
170 | 272 | ) |
171 | 273 | |
172 | - url = reverse('course:file:delete_file',kwargs={'slug': self.file_delete.slug}) | |
274 | + url = reverse('course:file:delete_file', kwargs={'slug': self.file_delete.slug}) | |
173 | 275 | |
174 | 276 | # Get modal |
175 | 277 | response = self.client.get(url) |
... | ... | @@ -180,6 +282,49 @@ class FileTestCase(TestCase): |
180 | 282 | self.assertEqual(response.status_code, 302) |
181 | 283 | self.assertTemplateUsed(template_name = 'files/delete_file.html') |
182 | 284 | |
285 | + def test_delete_file_error_permissions(self): | |
286 | + # Teacher without permission | |
287 | + self.client.login(username='teacher2', password = 'testing123') | |
288 | + | |
289 | + topic = Topic.objects.get(name = 'Topic Test') | |
290 | + | |
291 | + # File type | |
292 | + mime_type = MimeType.objects.create( | |
293 | + typ = 'image/png', | |
294 | + icon = 'photo' | |
295 | + ) | |
296 | + self.file_delete = TopicFile.objects.create( | |
297 | + name = 'testingFile', | |
298 | + file_url = self.file, | |
299 | + file_type = mime_type, | |
300 | + topic = topic | |
301 | + ) | |
302 | + | |
303 | + url = reverse('course:file:delete_file', kwargs={'slug': self.file_delete.slug}) | |
304 | + | |
305 | + # Get modal | |
306 | + response = self.client.get(url) | |
307 | + self.assertEqual(response.status_code, 302) | |
308 | + | |
309 | + response = self.client.post(url) | |
310 | + self.assertEqual(TopicFile.objects.all().count(), 1) # new file name | |
311 | + self.assertEqual(response.status_code, 302) | |
312 | + self.assertTemplateUsed(template_name = 'files/delete_file.html') | |
313 | + | |
314 | + # Student | |
315 | + self.client.logout() | |
316 | + self.client.login(username='student', password = 'testing123') | |
317 | + | |
318 | + # Get modal | |
319 | + response = self.client.get(url) | |
320 | + self.assertEqual(response.status_code, 302) | |
321 | + | |
322 | + response = self.client.post(url) | |
323 | + self.assertEqual(TopicFile.objects.all().count(), 1) # new file name | |
324 | + self.assertEqual(response.status_code, 302) | |
325 | + self.assertTemplateUsed(template_name = 'files/delete_file.html') | |
326 | + | |
327 | + | |
183 | 328 | |
184 | 329 | |
185 | 330 | ... | ... |