mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-03 17:34:11 -04:00
Handle missing Content-Type header when accessing remote media (#11200)
* add code to handle missing content-type header and a test to verify that it works * add handling for missing content-type in the /upload endpoint as well * slightly refactor test code to put private method in approriate place * handle possible null value for content-type when pulling from the local db * add changelog * refactor test and add code to handle missing content-type in cached remote media * requested changes * Update changelog.d/11200.bugfix Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com> Co-authored-by: Sean Quah <8349537+squahtx@users.noreply.github.com>
This commit is contained in:
parent
e81fa92648
commit
f5c6a80886
4 changed files with 29 additions and 4 deletions
|
@ -248,7 +248,7 @@ class MediaRepoTests(unittest.HomeserverTestCase):
|
|||
|
||||
self.media_id = "example.com/12345"
|
||||
|
||||
def _req(self, content_disposition):
|
||||
def _req(self, content_disposition, include_content_type=True):
|
||||
|
||||
channel = make_request(
|
||||
self.reactor,
|
||||
|
@ -271,8 +271,11 @@ class MediaRepoTests(unittest.HomeserverTestCase):
|
|||
|
||||
headers = {
|
||||
b"Content-Length": [b"%d" % (len(self.test_image.data))],
|
||||
b"Content-Type": [self.test_image.content_type],
|
||||
}
|
||||
|
||||
if include_content_type:
|
||||
headers[b"Content-Type"] = [self.test_image.content_type]
|
||||
|
||||
if content_disposition:
|
||||
headers[b"Content-Disposition"] = [content_disposition]
|
||||
|
||||
|
@ -285,6 +288,17 @@ class MediaRepoTests(unittest.HomeserverTestCase):
|
|||
|
||||
return channel
|
||||
|
||||
def test_handle_missing_content_type(self):
|
||||
channel = self._req(
|
||||
b"inline; filename=out" + self.test_image.extension,
|
||||
include_content_type=False,
|
||||
)
|
||||
headers = channel.headers
|
||||
self.assertEqual(channel.code, 200)
|
||||
self.assertEqual(
|
||||
headers.getRawHeaders(b"Content-Type"), [b"application/octet-stream"]
|
||||
)
|
||||
|
||||
def test_disposition_filename_ascii(self):
|
||||
"""
|
||||
If the filename is filename=<ascii> then Synapse will decode it as an
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue