Esempio n. 1
0
    def test_document_download_event_with_permissions(self):
        self.login(
            username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
        )

        Action.objects.all().delete()

        self.role.permissions.add(
            permission_document_download.stored_permission
        )

        self.expected_content_type = 'image/png; charset=utf-8'

        response = self.get(
            viewname='documents:document_download', args=(self.document.pk,),
        )

        # Download the file to close the file descriptor
        with self.document.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                mime_type=self.document.file_mimetype
            )

        event = Action.objects.any(obj=self.document).first()

        self.assertEqual(event.verb, event_document_download.id)
        self.assertEqual(event.target, self.document)
        self.assertEqual(event.actor, self.user)
Esempio n. 2
0
    def test_document_download_event_with_permissions(self):
        self.login(
            username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
        )

        Action.objects.all().delete()

        self.role.permissions.add(
            permission_document_download.stored_permission
        )

        self.expected_content_type = 'image/png; charset=utf-8'

        response = self.get(
            'documents:document_download', args=(self.document.pk,),
        )

        # Download the file to close the file descriptor
        with self.document.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                mime_type=self.document.file_mimetype
            )

        event = Action.objects.any(obj=self.document).first()

        self.assertEqual(event.verb, event_document_download.id)
        self.assertEqual(event.target, self.document)
        self.assertEqual(event.actor, self.user)
Esempio n. 3
0
 def test_download_response(self):
     """HTTPDownloadView proxies Content-Type header."""
     url = reverse('http:avatar_url')
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              mime_type='image/png')
Esempio n. 4
0
 def test_download_response(self):
     """'virtual:text' serves 'hello-world.txt' from unicode."""
     url = reverse('virtual:text')
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content='Hello world!\n',
                              basename='hello-world.txt',
                              mime_type='text/plain')
Esempio n. 5
0
 def test_download_response(self):
     """'simple_url' serves 'hello-world.txt' from Github."""
     url = reverse('http:simple_url')
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content='Hello world!\n',
                              basename='hello-world.txt',
                              mime_type='text/plain')
Esempio n. 6
0
 def test_download_response(self):
     """'simple_url' serves 'hello-world.txt' from Github."""
     url = reverse('http:simple_url')
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content='Hello world!\n',
                              basename='hello-world.txt',
                              mime_type='text/plain')
Esempio n. 7
0
 def test_download_response(self):
     """'dynamic_path' serves 'fixtures/{path}'."""
     url = reverse('path:dynamic_path', kwargs={'path': 'hello-world.txt'})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content='Hello world!\n',
                              basename='hello-world.txt',
                              mime_type='text/plain')
Esempio n. 8
0
 def test_download_response(self):
     """'static_path' serves 'fixtures/hello-world.txt'."""
     url = reverse('path:static_path')
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content='Hello world!\n',
                              basename='hello-world.txt',
                              mime_type='text/plain')
Esempio n. 9
0
 def test_download_response(self):
     """'another_file' streams Document.another_file."""
     setup_document()
     url = reverse('object:another_file', kwargs={'slug': slug})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=another_content,
                              basename=another_name,
                              mime_type='text/plain')
Esempio n. 10
0
 def test_download_response(self):
     "'inline_file_view' streams Document.file inline."
     setup_document()
     url = reverse('object:inline_file', kwargs={'slug': slug})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=file_content,
                              mime_type='text/plain',
                              attachment=False)
Esempio n. 11
0
 def test_download_response(self):
     """'storage:static_path' streams file by path."""
     setup_file('1.txt')
     url = reverse('storage:static_path', kwargs={'path': '1.txt'})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=file_content,
                              basename='1.txt',
                              mime_type='text/plain')
Esempio n. 12
0
 def test_download_response(self):
     """'another_file' streams Document.another_file."""
     setup_document()
     url = reverse('object:another_file', kwargs={'slug': slug})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=another_content,
                              basename=another_name,
                              mime_type='text/plain')
Esempio n. 13
0
 def test_download_response(self):
     "'deserialized_basename' streams Document.file with custom basename."
     setup_document()
     url = reverse('object:deserialized_basename', kwargs={'slug': slug})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=file_content,
                              basename=basename,
                              mime_type='text/plain')
Esempio n. 14
0
 def test_download_response(self):
     "'deserialized_basename' streams Document.file with custom basename."
     setup_document()
     url = reverse('object:deserialized_basename', kwargs={'slug': slug})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=file_content,
                              basename=basename,
                              mime_type='text/plain')
Esempio n. 15
0
 def test_download_response(self):
     """'storage:static_path' streams file by path."""
     setup_file('1.txt')
     url = reverse('storage:static_path', kwargs={'path': '1.txt'})
     response = self.client.get(url)
     assert_download_response(self,
                              response,
                              content=file_content,
                              basename='1.txt',
                              mime_type='text/plain')
Esempio n. 16
0
 def test_modified_since_download_response(self):
     """'storage:static_path' streams file if modified."""
     setup_file('1.txt')
     url = reverse('storage:static_path', kwargs={'path': '1.txt'})
     response = self.client.get(
         url, HTTP_IF_MODIFIED_SINCE='Sat, 29 Oct 1980 19:43:31 GMT')
     assert_download_response(self,
                              response,
                              content=file_content,
                              basename='1.txt',
                              mime_type='text/plain')
Esempio n. 17
0
 def test_download_response(self):
     """'simple_url' serves 'hello-world.txt' from Github."""
     url = reverse("http:simple_url")
     response = self.client.get(url)
     assert_download_response(
         self,
         response,
         content="Hello world!\n",
         basename="hello-world.txt",
         mime_type="text/plain",
     )
Esempio n. 18
0
 def test_download_response(self):
     """'virtual:generated' serves 'hello-world.txt' from generator."""
     url = reverse("virtual:generated")
     response = self.client.get(url)
     assert_download_response(
         self,
         response,
         content="Hello world!\n",
         basename="hello-world.txt",
         mime_type="text/plain",
     )
Esempio n. 19
0
 def test_download_response(self):
     """'static_path' serves 'fixtures/hello-world.txt'."""
     url = reverse("path:static_path")
     response = self.client.get(url)
     assert_download_response(
         self,
         response,
         content="Hello world!\n",
         basename="hello-world.txt",
         mime_type="text/plain",
     )
Esempio n. 20
0
 def test_download_response(self):
     """'dynamic_path' serves 'fixtures/{path}'."""
     url = reverse("path:dynamic_path", kwargs={"path": "hello-world.txt"})
     response = self.client.get(url)
     assert_download_response(
         self,
         response,
         content="Hello world!\n",
         basename="hello-world.txt",
         mime_type="text/plain",
     )
Esempio n. 21
0
 def test_modified_since_download_response(self):
     """'storage:static_path' streams file if modified."""
     setup_file('1.txt')
     url = reverse('storage:static_path', kwargs={'path': '1.txt'})
     response = self.client.get(
         url,
         HTTP_IF_MODIFIED_SINCE='Sat, 29 Oct 1980 19:43:31 GMT')
     assert_download_response(self,
                              response,
                              content=file_content,
                              basename='1.txt',
                              mime_type='text/plain')
Esempio n. 22
0
 def test_download_response(self):
     """'default_file' streams Document.file."""
     setup_document()
     url = reverse("object:default_file", kwargs={"slug": slug})
     response = self.client.get(url)
     assert_download_response(
         self,
         response,
         content=file_content,
         basename=file_name,
         mime_type="text/plain",
     )
Esempio n. 23
0
 def test_download_response(self):
     """'storage:static_path' streams file by path."""
     setup_file("1.txt")
     url = reverse("storage:static_path", kwargs={"path": "1.txt"})
     response = self.client.get(url)
     assert_download_response(
         self,
         response,
         content=file_content,
         basename="1.txt",
         mime_type="text/plain",
     )
Esempio n. 24
0
    def test_document_download(self):
        document = self._create_document()

        response = self.client.get(
            reverse('rest_api:document-download', args=(document.pk, )))

        with document.open() as file_object:
            assert_download_response(self,
                                     response,
                                     content=file_object.read(),
                                     basename=TEST_SMALL_DOCUMENT_FILENAME,
                                     mime_type='{}; charset=utf-8'.format(
                                         document.file_mimetype))
Esempio n. 25
0
 def test_modified_since_download_response(self):
     """'storage:static_path' streams file if modified."""
     setup_file("1.txt")
     url = reverse("storage:static_path", kwargs={"path": "1.txt"})
     response = self.client.get(
         url, HTTP_IF_MODIFIED_SINCE="Sat, 29 Oct 1980 19:43:31 GMT"
     )
     assert_download_response(
         self,
         response,
         content=file_content,
         basename="1.txt",
         mime_type="text/plain",
     )
Esempio n. 26
0
    def test_document_download_with_access(self):
        self.document = self.upload_document()
        self.grant_access(permission=permission_document_download,
                          obj=self.document)
        response = self._request_document_download()
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        with self.document.open() as file_object:
            assert_download_response(self,
                                     response,
                                     content=file_object.read(),
                                     basename=TEST_SMALL_DOCUMENT_FILENAME,
                                     mime_type='{}; charset=utf-8'.format(
                                         self.document.file_mimetype))
Esempio n. 27
0
    def test_document_download(self):
        document = self._create_document()

        response = self.client.get(
            reverse(
                'rest_api:document-download', args=(document.pk,)
            )
        )

        with document.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                basename=TEST_SMALL_DOCUMENT_FILENAME,
                mime_type='{}; charset=utf-8'.format(document.file_mimetype)
            )
Esempio n. 28
0
    def test_document_version_download_with_access(self):
        self.upload_document()
        self.grant_access(obj=self.test_document,
                          permission=permission_document_download)

        response = self._request_document_version_download()
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        with self.test_document.latest_version.open() as file_object:
            assert_download_response(self,
                                     response,
                                     content=file_object.read(),
                                     basename=force_text(
                                         self.test_document.latest_version),
                                     mime_type='{}; charset=utf-8'.format(
                                         self.test_document.file_mimetype))
Esempio n. 29
0
    def test_document_version_download_with_access(self):
        self.document = self.upload_document()
        self.grant_access(
            permission=permission_document_download, obj=self.document
        )
        response = self._request_document_version_download()
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        with self.document.latest_version.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                basename=force_text(self.document.latest_version),
                mime_type='{}; charset=utf-8'.format(
                    self.document.file_mimetype
                )
            )
Esempio n. 30
0
    def test_document_version_download(self):
        document = self._create_document()

        latest_version = document.latest_version
        response = self.client.get(
            reverse(
                'rest_api:documentversion-download',
                args=(document.pk, latest_version.pk,)
            )
        )

        with latest_version.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                basename=force_text(latest_version),
                mime_type='{}; charset=utf-8'.format(document.file_mimetype)
            )
Esempio n. 31
0
    def test_document_version_download(self):
        document = self._create_document()

        latest_version = document.latest_version
        response = self.client.get(
            reverse('rest_api:documentversion-download',
                    args=(
                        document.pk,
                        latest_version.pk,
                    )))

        with latest_version.open() as file_object:
            assert_download_response(self,
                                     response,
                                     content=file_object.read(),
                                     basename=force_text(latest_version),
                                     mime_type='{}; charset=utf-8'.format(
                                         document.file_mimetype))
Esempio n. 32
0
    def test_document_multiple_download_view_with_permission(self):
        # Set the expected_content_type for
        # common.tests.mixins.ContentTypeCheckMixin
        self.expected_content_type = '{}; charset=utf-8'.format(
            self.document.file_mimetype)
        self.grant(permission=permission_document_download)

        response = self.get('documents:document_multiple_download',
                            data={'id_list': self.document.pk})

        self.assertEqual(response.status_code, 200)

        with self.document.open() as file_object:
            assert_download_response(self,
                                     response,
                                     content=file_object.read(),
                                     basename=TEST_SMALL_DOCUMENT_FILENAME,
                                     mime_type=self.document.file_mimetype)
Esempio n. 33
0
    def test_document_version_download_preserve_extension(self):
        document = self._create_document()

        latest_version = document.latest_version
        response = self.client.get(reverse('rest_api:documentversion-download',
                                           args=(
                                               document.pk,
                                               latest_version.pk,
                                           )),
                                   data={'preserve_extension': True})

        with latest_version.open() as file_object:
            assert_download_response(
                self,
                response,
                content=file_object.read(),
                basename=latest_version.get_rendered_string(
                    preserve_extension=True),
                mime_type='{}; charset=utf-8'.format(document.file_mimetype))
Esempio n. 34
0
    def test_download_response(self):
        """'dynamic_path' streams file by generated path.

        As we use ``self.client``, this test involves the whole Django stack,
        including settings, middlewares, decorators... So we need to setup a
        file, the storage, and an URL.

        This test actually asserts the URL ``storage:dynamic_path`` streams a
        file in storage.

        """
        setup_file('1.TXT')
        url = reverse('storage:dynamic_path', kwargs={'path': '1.txt'})
        response = self.client.get(url)
        assert_download_response(self,
                                 response,
                                 content=file_content,
                                 basename='1.TXT',
                                 mime_type='text/plain')
Esempio n. 35
0
    def test_document_version_download_preserve_extension(self):
        self.login_admin_user()
        self.document = self.upload_document()

        response = self.get(
            viewname='rest_api:documentversion-download', args=(
                self.document.pk, self.document.latest_version.pk,
            ), data={'preserve_extension': True}
        )

        with self.document.latest_version.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                basename=self.document.latest_version.get_rendered_string(
                    preserve_extension=True
                ), mime_type='{}; charset=utf-8'.format(
                    self.document.file_mimetype
                )
            )
Esempio n. 36
0
    def test_download_response(self):
        """'dynamic_path' streams file by generated path.

        As we use ``self.client``, this test involves the whole Django stack,
        including settings, middlewares, decorators... So we need to setup a
        file, the storage, and an URL.

        This test actually asserts the URL ``storage:dynamic_path`` streams a
        file in storage.

        """
        setup_file('1.TXT')
        url = reverse('storage:dynamic_path', kwargs={'path': '1.txt'})
        response = self.client.get(url)
        assert_download_response(self,
                                 response,
                                 content=file_content,
                                 basename='1.TXT',
                                 mime_type='text/plain')
Esempio n. 37
0
    def test_document_version_download_view_with_permission(self):
        # Set the expected_content_type for
        # common.tests.mixins.ContentTypeCheckMixin
        self.expected_content_type = 'application/octet-stream; charset=utf-8'

        self.grant(permission=permission_document_download)
        response = self.get('documents:document_version_download',
                            args=(self.document.latest_version.pk, ))

        self.assertEqual(response.status_code, 200)

        with self.document.open() as file_object:
            assert_download_response(
                self,
                response,
                content=file_object.read(),
                basename='{} - {}'.format(
                    TEST_SMALL_DOCUMENT_FILENAME,
                    self.document.latest_version.timestamp),
                mime_type='application/octet-stream; charset=utf-8')
Esempio n. 38
0
    def test_document_version_download_preserve_extension(self):
        document = self._create_document()

        latest_version = document.latest_version
        response = self.client.get(
            reverse(
                'rest_api:documentversion-download',
                args=(document.pk, latest_version.pk,)
            ), data={'preserve_extension': True}
        )

        with latest_version.open() as file_object:
            assert_download_response(
                self, response, content=file_object.read(),
                basename=latest_version.get_rendered_string(
                    preserve_extension=True
                ), mime_type='{}; charset=utf-8'.format(
                    document.file_mimetype
                )
            )
Esempio n. 39
0
    def test_document_version_download_preserve_extension(self):
        self.login_admin_user()
        self.document = self.upload_document()

        response = self.get(viewname='rest_api:documentversion-download',
                            args=(
                                self.document.pk,
                                self.document.latest_version.pk,
                            ),
                            data={'preserve_extension': True})

        with self.document.latest_version.open() as file_object:
            assert_download_response(
                self,
                response,
                content=file_object.read(),
                basename=self.document.latest_version.get_rendered_string(
                    preserve_extension=True),
                mime_type='{}; charset=utf-8'.format(
                    self.document.file_mimetype))
Esempio n. 40
0
    def test_document_download_event_with_access(self):
        self.expected_content_types = ('image/png; charset=utf-8', )

        self.grant_access(obj=self.test_document,
                          permission=permission_document_download)

        response = self._request_test_document_download_view()

        # Download the file to close the file descriptor
        with self.test_document.open() as file_object:
            assert_download_response(
                self,
                response,
                content=file_object.read(),
                mime_type=self.test_document.file_mimetype)

        event = Action.objects.any(obj=self.test_document).first()

        self.assertEqual(event.actor, self._test_case_user)
        self.assertEqual(event.target, self.test_document)
        self.assertEqual(event.verb, event_document_download.id)
Esempio n. 41
0
    def test_document_version_download(self):
        with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
            document = self.document_type.new_document(
                file_object=file_object, )

        latest_version = document.latest_version
        response = self.client.get(
            reverse('rest_api:documentversion-download',
                    args=(
                        document.pk,
                        latest_version.pk,
                    )))

        with latest_version.open() as file_object:
            assert_download_response(
                self,
                response,
                content=file_object.read(),
                basename='{} - {}'.format(TEST_SMALL_DOCUMENT_FILENAME,
                                          latest_version.timestamp),
                mime_type='application/octet-stream; charset=utf-8')
Esempio n. 42
0
    def test_document_version_download_preserve_extension(self):
        self.upload_document()
        self.grant_access(obj=self.test_document,
                          permission=permission_document_download)

        response = self.get(viewname='rest_api:documentversion-download',
                            kwargs={
                                'pk': self.test_document.pk,
                                'version_pk':
                                self.test_document.latest_version.pk,
                            },
                            data={'preserve_extension': True})

        with self.test_document.latest_version.open() as file_object:
            assert_download_response(
                self,
                response,
                content=file_object.read(),
                basename=self.test_document.latest_version.get_rendered_string(
                    preserve_extension=True),
                mime_type='{}; charset=utf-8'.format(
                    self.test_document.file_mimetype))
Esempio n. 43
0
 def test_download_response(self):
     "'inline_file_view' streams Document.file inline."
     setup_document()
     url = reverse("object:inline_file", kwargs={"slug": slug})
     response = self.client.get(url)
     assert_download_response(self, response, content=file_content, mime_type="text/plain", attachment=False)
Esempio n. 44
0
 def test_download_response(self):
     """HTTPDownloadView proxies Content-Type header."""
     url = reverse("http:avatar_url")
     response = self.client.get(url)
     assert_download_response(self, response, mime_type="image/png")
Esempio n. 45
0
 def test_download_response(self):
     """'default_file' streams Document.file."""
     setup_document()
     url = reverse("object:default_file", kwargs={"slug": slug})
     response = self.client.get(url)
     assert_download_response(self, response, content=file_content, basename=file_name, mime_type="text/plain")