django-downloadview/tests/sendfile.py
2024-08-05 10:53:19 +02:00

44 lines
1.6 KiB
Python

"""Tests around :py:mod:`django_downloadview.sendfile`."""
from django.http import Http404
import django.test
from django_downloadview.response import DownloadResponse
from django_downloadview.shortcuts import sendfile
class SendfileTestCase(django.test.TestCase):
"""Tests around :func:`django_downloadview.sendfile.sendfile`."""
def test_defaults(self):
"""sendfile() takes at least request and filename."""
request = django.test.RequestFactory().get("/fake-url")
filename = __file__
response = sendfile(request, filename)
self.assertTrue(isinstance(response, DownloadResponse))
self.assertFalse(response.attachment)
def test_custom(self):
"""sendfile() accepts various arguments for response tuning."""
request = django.test.RequestFactory().get("/fake-url")
filename = __file__
response = sendfile(
request,
filename,
attachment=True,
attachment_filename="toto.txt",
mimetype="test/octet-stream",
encoding="gzip",
)
self.assertTrue(isinstance(response, DownloadResponse))
self.assertTrue(response.attachment)
self.assertEqual(response.basename, "toto.txt")
self.assertEqual(response["Content-Type"], "test/octet-stream; charset=utf-8")
self.assertEqual(response.get_encoding(), "gzip")
def test_404(self):
"""sendfile() raises Http404 if file does not exists."""
request = django.test.RequestFactory().get("/fake-url")
filename = "i-do-no-exist"
with self.assertRaises(Http404):
sendfile(request, filename)