Commit 1e013af003cfaaa694f2a167a05ba7ca5c956bd7

Authored by ailsoncgt
1 parent 60d3e724

Adding test errors #128 #129 #130

files/tests/files/large.pdf 0 → 100644
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  
... ...