Пример #1
0
    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))
Пример #2
0
    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)
Пример #3
0
    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'))
Пример #4
0
    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)
Пример #5
0
    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'))
Пример #6
0
    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)
            )
Пример #7
0
    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'))
Пример #8
0
    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)
Пример #9
0
    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'))
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
    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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
    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)
Пример #16
0
    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'))
Пример #17
0
    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'))
Пример #18
0
    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)
Пример #19
0
    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)
Пример #20
0
    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'))
Пример #21
0
    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)