django-downloadview/tests/response.py

34 lines
1.1 KiB
Python
Raw Normal View History

"""Unit tests around responses."""
import unittest
from django_downloadview.response import DownloadResponse
class DownloadResponseTestCase(unittest.TestCase):
"""Tests around :class:`django_downloadviews.response.DownloadResponse`."""
2020-01-07 14:10:42 +00:00
def test_content_disposition_encoding(self):
"""Content-Disposition header is encoded."""
2020-01-07 14:10:42 +00:00
response = DownloadResponse(
2020-09-18 08:50:26 +00:00
"fake file",
attachment=True,
basename="espacé .txt",
2020-01-07 14:10:42 +00:00
)
headers = response.default_headers
2020-01-07 14:10:42 +00:00
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"]
)