import os import tempfile from unittest import skip from django.conf import settings from django.contrib.auth.models import Permission from django.contrib.contenttypes.models import ContentType from django.core.files.uploadedfile import SimpleUploadedFile from django.test.client import Client from openslides.mediafiles.models import Mediafile from openslides.users.models import User from openslides.utils.test import TestCase class MediafileTest(TestCase): """ Unit test for the mediafile model. """ def setUp(self): # Setup the three permissions ct = ContentType.objects.get(app_label='mediafiles', model='mediafile') perm_1 = Permission.objects.get(content_type=ct, codename='can_see') perm_2 = Permission.objects.get(content_type=ct, codename='can_upload') # Setup three different users self.manager = User.objects.get(pk=1) self.vip_user = User.objects.create_user('mediafile_test_vip_user', 'default') self.vip_user.user_permissions.add(perm_1, perm_2) self.normal_user = User.objects.create_user('mediafile_test_normal_user', 'default') # Setup a mediafile object self.tmp_dir = settings.MEDIA_ROOT tmpfile_no, mediafile_path = tempfile.mkstemp(prefix='tmp_openslides_test_', dir=self.tmp_dir) self.object = Mediafile.objects.create(title='Title File 1', mediafile=mediafile_path, uploader=self.normal_user) os.close(tmpfile_no) def tearDown(self): self.object.mediafile.delete(save=False) def test_str(self): self.assertEqual(str(self.object), 'Title File 1') @skip def test_absolute_url(self): self.assertEqual(self.object.get_absolute_url(), '/mediafiles/1/edit/') self.assertEqual(self.object.get_absolute_url('update'), '/mediafiles/1/edit/') self.assertEqual(self.object.get_absolute_url(link='delete'), '/mediafiles/1/del/') def login_clients(self): """ Helper function to login all three test users. """ client_manager = Client() client_manager.login(username='admin', password='admin') client_vip_user = Client() client_vip_user.login(username='mediafile_test_vip_user', password='default') client_normal_user = Client() client_normal_user.login(username='mediafile_test_normal_user', password='default') return {'client_manager': client_manager, 'client_vip_user': client_vip_user, 'client_normal_user': client_normal_user} @skip def test_see_mediafilelist(self): for client in self.login_clients().values(): response = client.get('/mediafiles/') self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'mediafiles/mediafile_list.html') @skip def test_upload_mediafile_get_request(self): clients = self.login_clients() response = clients['client_manager'].get('/mediafiles/new/') self.assertContains(response, '---------', status_code=200) self.assertContains(response, '', status_code=200) self.assertTemplateUsed(response, 'mediafiles/mediafile_form.html') response = clients['client_vip_user'].get('/mediafiles/new/') self.assertNotContains(response, '