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

32 lines
1.1 KiB
Python

"""Unit tests around responses."""
import unittest
from django_downloadview.response import DownloadResponse
class DownloadResponseTestCase(unittest.TestCase):
"""Tests around :class:`django_downloadviews.response.DownloadResponse`."""
def test_content_disposition_encoding(self):
"""Content-Disposition header is encoded."""
response = DownloadResponse(
"fake file",
attachment=True,
basename="espacé .txt",
)
headers = response.default_headers
self.assertIn('filename="espace_.txt"', headers["Content-Disposition"])
self.assertIn(
"filename*=UTF-8''espac%C3%A9%20.txt", headers["Content-Disposition"]
)
def test_content_disposition_escaping(self):
"""Content-Disposition headers escape special characters."""
response = DownloadResponse(
"fake file", attachment=True, basename=r'"malicious\file.exe'
)
headers = response.default_headers
self.assertIn(
r'filename="\"malicious\\file.exe"', headers["Content-Disposition"]
)