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,6 +7,7 @@ from core.models import MimeType | ||
7 | from users.models import User | 7 | from users.models import User |
8 | from files.models import TopicFile | 8 | from files.models import TopicFile |
9 | from files.forms import FileForm, UpdateFileForm | 9 | from files.forms import FileForm, UpdateFileForm |
10 | +from rolepermissions.verifications import has_object_permission | ||
10 | from courses.models import CourseCategory, Course, Subject, Topic | 11 | from courses.models import CourseCategory, Course, Subject, Topic |
11 | 12 | ||
12 | import os | 13 | import os |
@@ -35,6 +36,15 @@ class FileTestCase(TestCase): | @@ -35,6 +36,15 @@ class FileTestCase(TestCase): | ||
35 | ) | 36 | ) |
36 | assign_role(self.teacher, 'professor') | 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 | self.student = User.objects.create_user( | 48 | self.student = User.objects.create_user( |
39 | username = 'student', | 49 | username = 'student', |
40 | email = 'student@amadeus.com', | 50 | email = 'student@amadeus.com', |
@@ -117,6 +127,49 @@ class FileTestCase(TestCase): | @@ -117,6 +127,49 @@ class FileTestCase(TestCase): | ||
117 | self.assertEqual(response.status_code, 302) | 127 | self.assertEqual(response.status_code, 302) |
118 | self.assertTemplateUsed(template_name = 'files/create_file.html') | 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 | def test_update_file_ok(self): | 173 | def test_update_file_ok(self): |
121 | self.client.login(username='admin', password = 'testing123') | 174 | self.client.login(username='admin', password = 'testing123') |
122 | 175 | ||
@@ -128,13 +181,13 @@ class FileTestCase(TestCase): | @@ -128,13 +181,13 @@ class FileTestCase(TestCase): | ||
128 | icon = 'photo' | 181 | icon = 'photo' |
129 | ) | 182 | ) |
130 | self.file_update = TopicFile.objects.create( | 183 | self.file_update = TopicFile.objects.create( |
131 | - name = 'testinglink', | 184 | + name = 'testingFile', |
132 | file_url = self.file, | 185 | file_url = self.file, |
133 | file_type = mime_type, | 186 | file_type = mime_type, |
134 | topic = topic | 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 | upload_file_update = open( '/'.join([FILE_DIR, 'files/update.png']), 'rb') | 192 | upload_file_update = open( '/'.join([FILE_DIR, 'files/update.png']), 'rb') |
140 | new_file = SimpleUploadedFile(upload_file_update.name, upload_file_update.read()) | 193 | new_file = SimpleUploadedFile(upload_file_update.name, upload_file_update.read()) |
@@ -152,6 +205,55 @@ class FileTestCase(TestCase): | @@ -152,6 +205,55 @@ class FileTestCase(TestCase): | ||
152 | self.assertEqual(response.status_code, 302) | 205 | self.assertEqual(response.status_code, 302) |
153 | self.assertTemplateUsed(template_name = 'files/update_file.html') | 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 | def test_delete_file(self): | 257 | def test_delete_file(self): |
156 | self.client.login(username='admin', password = 'testing123') | 258 | self.client.login(username='admin', password = 'testing123') |
157 | 259 | ||
@@ -163,13 +265,13 @@ class FileTestCase(TestCase): | @@ -163,13 +265,13 @@ class FileTestCase(TestCase): | ||
163 | icon = 'photo' | 265 | icon = 'photo' |
164 | ) | 266 | ) |
165 | self.file_delete = TopicFile.objects.create( | 267 | self.file_delete = TopicFile.objects.create( |
166 | - name = 'testinglink', | 268 | + name = 'testingFile', |
167 | file_url = self.file, | 269 | file_url = self.file, |
168 | file_type = mime_type, | 270 | file_type = mime_type, |
169 | topic = topic | 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 | # Get modal | 276 | # Get modal |
175 | response = self.client.get(url) | 277 | response = self.client.get(url) |
@@ -180,6 +282,49 @@ class FileTestCase(TestCase): | @@ -180,6 +282,49 @@ class FileTestCase(TestCase): | ||
180 | self.assertEqual(response.status_code, 302) | 282 | self.assertEqual(response.status_code, 302) |
181 | self.assertTemplateUsed(template_name = 'files/delete_file.html') | 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 |