def test_text_file_not_allowed(self): url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) document = File( open( normpath(join(dirname(abspath(__file__)), 'files/text_1.txt')), 'rb')) data = { 'name': 'A test text file', 'description': 'Test file description', 'file': document } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request with self.assertRaises(FileTypeError): self.render(view.create_and_respond(request, self.contribution))
def test_create_document_and_respond_with_unsupported_type(self): url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) document = File(open( normpath(join( dirname(abspath(__file__)), 'files/document_2.doc' )), 'rb' )) data = { 'name': 'A test document', 'description': 'Test document description', 'file': document } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request view.create_and_respond(request, self.contribution)
def process_list_of_image_files(self, files_list): for name, file_path, expected_output_file in files_list: url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) data = { 'name': name, 'description': 'Test image description', 'file': get_image(file_name=file_path) } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution)) response_json = json.loads(response.content) self.assertEqual(response_json.get('name'), data.get('name')) self.assertEqual(response_json.get('description'), data.get('description')) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name) self.assertEqual(response_json.get('file_type'), 'ImageFile') self.assertIsNotNone(response_json.get('url')) self.assertIn(expected_output_file, response_json.get('url'))
def test_create_document_and_respond_with_unsupported_type(self): url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) document = File( open( normpath( join(dirname(abspath(__file__)), 'files/document_2.doc')), 'rb')) data = { 'name': 'A test document', 'description': 'Test document description', 'file': document } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request view.create_and_respond(request, self.contribution)
def test_create_image_and_respond(self): url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) data = { 'name': 'A test image', 'description': 'Test image description', 'file': get_image() } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution)) response_json = json.loads(response.content) self.assertEqual(response_json.get('name'), data.get('name')) self.assertEqual(response_json.get('description'), data.get('description')) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name) self.assertEqual(response_json.get('file_type'), 'ImageFile') self.assertIsNotNone(response_json.get('url'))
def test_text_file_not_allowed(self): url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) document = File(open( normpath(join( dirname(abspath(__file__)), 'files/text_1.txt' )), 'rb' )) data = { 'name': 'A test text file', 'description': 'Test file description', 'file': document } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request with self.assertRaises(FileTypeError): self.render( view.create_and_respond(request, self.contribution) )
def process_list_of_audio_files(self, files_list): for name, file_path, expected_output_file in files_list: url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) audio_file = File(open( normpath(join( dirname(abspath(__file__)), file_path )), 'rb' )) data = { 'name': name, 'description': 'Test sound description', 'file': audio_file } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution) ) response_json = json.loads(response.content) self.assertEqual( response_json.get('name'), data.get('name') ) self.assertEqual( response_json.get('description'), data.get('description') ) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name ) self.assertEqual( response_json.get('file_type'), 'AudioFile', msg='Unexpected file type: {} (should be AudioFile) ' 'for file "{}"'.format(response_json.get('file_type'), name) ) self.assertIn(expected_output_file, response_json.get('url'))
def test_delete_and_respond_with_some_dude(self): url = reverse('api:project_single_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id, 'file_id': self.image_file.id }) request = self.factory.delete(url) request.user = UserFactory.create() view = MediaAbstractAPIView() view.request = request view.delete_and_respond(request, self.contribution, self.image_file)
def test_create_audio_and_convert(self): url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) audio_file = File(open( normpath(join( dirname(abspath(__file__)), 'files/audio_2.3gp' )), 'rb' )) data = { 'name': 'A test sound', 'description': 'Test sound description', 'file': audio_file } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution) ) response_json = json.loads(response.content) self.assertEqual( response_json.get('name'), data.get('name') ) self.assertEqual( response_json.get('description'), data.get('description') ) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name ) self.assertEqual( response_json.get('file_type'), 'AudioFile' ) self.assertIn('audio_2.mp3', response_json.get('url'))
def test_delete_and_respond_with_admin(self): url = reverse('api:project_single_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id, 'file_id': self.image_file.id }) request = self.factory.delete(url) request.user = self.admin view = MediaAbstractAPIView() view.request = request view.delete_and_respond(request, self.contribution, self.image_file) MediaFile.objects.get(pk=self.image_file.id)
def test_create_image_and_respond_without_name(self): url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) data = {'description': 'Test image description', 'file': get_image()} request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request view.create_and_respond(request, self.contribution)
def test_delete_and_respond_with_some_dude(self): url = reverse( 'api:project_single_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id, 'file_id': self.image_file.id } ) request = self.factory.delete(url) request.user = UserFactory.create() view = MediaAbstractAPIView() view.request = request view.delete_and_respond(request, self.contribution, self.image_file)
def test_delete_and_respond_with_admin(self): url = reverse( 'api:project_single_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id, 'file_id': self.image_file.id } ) request = self.factory.delete(url) request.user = self.admin view = MediaAbstractAPIView() view.request = request view.delete_and_respond(request, self.contribution, self.image_file) MediaFile.objects.get(pk=self.image_file.id)
def test_get_list_and_respond(self): ImageFileFactory.create_batch(5, **{'contribution': self.contribution}) url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) request = self.factory.get(url) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.get_list_and_respond(request, self.contribution)) self.assertEqual(len(json.loads(response.content)), 5)
def test_get_single_and_respond(self): url = reverse('api:project_single_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id, 'file_id': self.image_file.id }) request = self.factory.get(url) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.get_single_and_respond(request, self.image_file)) response_json = json.loads(response.content) self.assertEqual(response_json.get('id'), self.image_file.id)
def process_list_of_image_files(self, files_list): for name, file_path, expected_output_file in files_list: url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) data = { 'name': name, 'description': 'Test image description', 'file': get_image(file_name=file_path) } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution) ) response_json = json.loads(response.content) self.assertEqual( response_json.get('name'), data.get('name') ) self.assertEqual( response_json.get('description'), data.get('description') ) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name ) self.assertEqual( response_json.get('file_type'), 'ImageFile' ) self.assertIsNotNone(response_json.get('url')) self.assertIn(expected_output_file, response_json.get('url'))
def test_create_image_and_respond(self): url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) data = { 'name': 'A test image', 'description': 'Test image description', 'file': get_image() } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution) ) response_json = json.loads(response.content) self.assertEqual( response_json.get('name'), data.get('name') ) self.assertEqual( response_json.get('description'), data.get('description') ) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name ) self.assertEqual( response_json.get('file_type'), 'ImageFile' ) self.assertIsNotNone(response_json.get('url'))
def test_get_list_and_respond(self): ImageFileFactory.create_batch(5, **{'contribution': self.contribution}) url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) request = self.factory.get(url) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.get_list_and_respond(request, self.contribution) ) self.assertEqual(len(json.loads(response.content)), 5)
def test_create_image_and_respond_without_name(self): url = reverse( 'api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id } ) data = { 'description': 'Test image description', 'file': get_image() } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request view.create_and_respond(request, self.contribution)
def process_list_of_audio_files(self, files_list): for name, file_path, expected_output_file in files_list: url = reverse('api:project_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id }) audio_file = File( open(normpath(join(dirname(abspath(__file__)), file_path)), 'rb')) data = { 'name': name, 'description': 'Test sound description', 'file': audio_file } request = self.factory.post(url, data) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.create_and_respond(request, self.contribution)) response_json = json.loads(response.content) self.assertEqual(response_json.get('name'), data.get('name')) self.assertEqual(response_json.get('description'), data.get('description')) self.assertEqual( response_json.get('creator').get('display_name'), request.user.display_name) self.assertEqual( response_json.get('file_type'), 'AudioFile', msg='Unexpected file type: {} (should be AudioFile) ' 'for file "{}"'.format(response_json.get('file_type'), name)) self.assertIn(expected_output_file, response_json.get('url'))
def test_get_single_and_respond(self): url = reverse( 'api:project_single_media', kwargs={ 'project_id': self.project.id, 'contribution_id': self.contribution.id, 'file_id': self.image_file.id } ) request = self.factory.get(url) request.user = self.admin view = MediaAbstractAPIView() view.request = request response = self.render( view.get_single_and_respond( request, self.image_file ) ) response_json = json.loads(response.content) self.assertEqual(response_json.get('id'), self.image_file.id)