summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/response.py18
-rw-r--r--pyramid/tests/fixtures/minimal.jpgbin0 -> 631 bytes
-rwxr-xr-xpyramid/tests/fixtures/minimal.pdfbin0 -> 1054 bytes
-rw-r--r--pyramid/tests/fixtures/minimal.xml1
-rw-r--r--pyramid/tests/test_response.py39
5 files changed, 42 insertions, 16 deletions
diff --git a/pyramid/response.py b/pyramid/response.py
index 0f61af472..adc903b44 100644
--- a/pyramid/response.py
+++ b/pyramid/response.py
@@ -52,15 +52,17 @@ class FileResponse(Response):
"""
def __init__(self, path, request=None, cache_max_age=None,
content_type=None, content_encoding=None):
- super(FileResponse, self).__init__(conditional_response=True)
- self.last_modified = getmtime(path)
- if content_type is None:
- content_type, content_encoding = mimetypes.guess_type(path,
- strict=False)
if content_type is None:
- content_type = 'application/octet-stream'
- self.content_type = content_type
- self.content_encoding = content_encoding
+ content_type, content_encoding = (
+ mimetypes.guess_type(path, strict=False))
+ if content_type is None:
+ content_type = 'application/octet-stream'
+ super(FileResponse, self).__init__(
+ conditional_response=True,
+ content_type=content_type,
+ content_encoding=content_encoding
+ )
+ self.last_modified = getmtime(path)
content_length = getsize(path)
f = open(path, 'rb')
app_iter = None
diff --git a/pyramid/tests/fixtures/minimal.jpg b/pyramid/tests/fixtures/minimal.jpg
new file mode 100644
index 000000000..1cda9a53d
--- /dev/null
+++ b/pyramid/tests/fixtures/minimal.jpg
Binary files differ
diff --git a/pyramid/tests/fixtures/minimal.pdf b/pyramid/tests/fixtures/minimal.pdf
new file mode 100755
index 000000000..e267be996
--- /dev/null
+++ b/pyramid/tests/fixtures/minimal.pdf
Binary files differ
diff --git a/pyramid/tests/fixtures/minimal.xml b/pyramid/tests/fixtures/minimal.xml
new file mode 100644
index 000000000..1972c155d
--- /dev/null
+++ b/pyramid/tests/fixtures/minimal.xml
@@ -0,0 +1 @@
+<hello/> \ No newline at end of file
diff --git a/pyramid/tests/test_response.py b/pyramid/tests/test_response.py
index e6d90f979..8731fa764 100644
--- a/pyramid/tests/test_response.py
+++ b/pyramid/tests/test_response.py
@@ -23,22 +23,45 @@ class TestFileResponse(unittest.TestCase):
from pyramid.response import FileResponse
return FileResponse(file, **kw)
- def _getPath(self):
+ def _getPath(self, suffix='txt'):
here = os.path.dirname(__file__)
- return os.path.join(here, 'fixtures', 'minimal.txt')
+ return os.path.join(here, 'fixtures', 'minimal.%s' % (suffix,))
- def test_with_content_type(self):
- path = self._getPath()
+ def test_with_image_content_type(self):
+ path = self._getPath('jpg')
r = self._makeOne(path, content_type='image/jpeg')
self.assertEqual(r.content_type, 'image/jpeg')
+ self.assertEqual(r.headers['content-type'], 'image/jpeg')
+ path = self._getPath()
r.app_iter.close()
- def test_without_content_type(self):
- path = self._getPath()
- r = self._makeOne(path)
- self.assertEqual(r.content_type, 'text/plain')
+ def test_with_xml_content_type(self):
+ path = self._getPath('xml')
+ r = self._makeOne(path, content_type='application/xml')
+ self.assertEqual(r.content_type, 'application/xml')
+ self.assertEqual(r.headers['content-type'],
+ 'application/xml; charset=UTF-8')
r.app_iter.close()
+ def test_with_pdf_content_type(self):
+ path = self._getPath('xml')
+ r = self._makeOne(path, content_type='application/pdf')
+ self.assertEqual(r.content_type, 'application/pdf')
+ self.assertEqual(r.headers['content-type'], 'application/pdf')
+ r.app_iter.close()
+
+ def test_without_content_type(self):
+ for suffix, content_type in (
+ ('txt', 'text/plain; charset=UTF-8'),
+ ('xml', 'application/xml; charset=UTF-8'),
+ ('pdf', 'application/pdf')
+ ):
+ path = self._getPath(suffix)
+ r = self._makeOne(path)
+ self.assertEqual(r.content_type, content_type.split(';')[0])
+ self.assertEqual(r.headers['content-type'], content_type)
+ r.app_iter.close()
+
class TestFileIter(unittest.TestCase):
def _makeOne(self, file, block_size):
from pyramid.response import FileIter