1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # -*- coding: utf-8 -*-
- """
- Tests for :module:`pagure.lib.mimetype`.
- """
- from __future__ import unicode_literals, absolute_import
- import os
- import unittest
- import sys
- cchardet = None
- try:
- import cchardet
- except ImportError:
- pass
- from pagure.lib import mimetype
- sys.path.insert(
- 0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
- )
- class TestMIMEType(unittest.TestCase):
- def test_guess_type(self):
- dataset = [
- ("hello.html", None, "text/html", None),
- (
- "hello.html",
- b"#!",
- "text/html",
- "ascii" if cchardet is None else "utf-8",
- ),
- (
- "hello",
- b"#!",
- "text/plain",
- "ascii" if cchardet is None else "utf-8",
- ),
- ("hello.jpg", None, "image/jpeg", None),
- ("hello.jpg", b"#!", "image/jpeg", None),
- ("hello.jpg", b"\0", "image/jpeg", None),
- (None, "😋".encode("utf-8"), "text/plain", "utf-8"),
- ("hello", b"\0", "application/octet-stream", None),
- ("hello", None, None, None),
- ]
- for data in dataset:
- result = mimetype.guess_type(data[0], data[1])
- self.assertEqual(
- (data[2], data[3]),
- result,
- "Wrong mimetype for filename %r and content %r"
- % (data[0], data[1]),
- )
- def test_get_html_file_headers(self):
- result = mimetype.get_type_headers("hello.html", None)
- expected = {
- "Content-Type": "application/octet-stream",
- "Content-Disposition": "attachment",
- "X-Content-Type-Options": "nosniff",
- }
- self.assertEqual(result, expected)
- def test_get_normal_headers(self):
- dataset = [
- (
- "hello",
- b"#!",
- "text/plain; charset=ascii"
- if cchardet is None
- else "text/plain; charset=utf-8",
- ),
- ("hello.jpg", None, "image/jpeg"),
- ("hello.jpg", b"#!", "image/jpeg"),
- ("hello.jpg", b"\0", "image/jpeg"),
- (None, "😋".encode("utf-8"), "text/plain; charset=utf-8"),
- ("hello", b"\0", "application/octet-stream"),
- ]
- for data in dataset:
- result = mimetype.get_type_headers(data[0], data[1])
- self.assertEqual(
- result["Content-Type"],
- data[2],
- "Wrong Content-Type for filename %r and content %r"
- % (data[0], data[1]),
- )
- def test_get_none_header(self):
- self.assertIsNone(mimetype.get_type_headers("hello", None))
- if __name__ == "__main__":
- unittest.main(verbosity=2)
|