# coding=utf-8 """Tests around :py:mod:`django_downloadview.sendfile`.""" from django.http import Http404 import django.test from django_downloadview.response import DownloadResponse from django_downloadview.shortcuts import sendfile class SendfileTestCase(django.test.TestCase): """Tests around :func:`django_downloadview.sendfile.sendfile`.""" def test_defaults(self): """sendfile() takes at least request and filename.""" request = django.test.RequestFactory().get('/fake-url') filename = __file__ response = sendfile(request, filename) self.assertTrue(isinstance(response, DownloadResponse)) self.assertFalse(response.attachment) def test_custom(self): """sendfile() accepts various arguments for response tuning.""" request = django.test.RequestFactory().get('/fake-url') filename = __file__ response = sendfile(request, filename, attachment=True, attachment_filename='toto.txt', mimetype='test/octet-stream', encoding='gzip') self.assertTrue(isinstance(response, DownloadResponse)) self.assertTrue(response.attachment) self.assertEqual(response.basename, 'toto.txt') self.assertEqual(response['Content-Type'], 'test/octet-stream; charset=utf-8') self.assertEqual(response.get_encoding(), 'gzip') def test_404(self): """sendfile() raises Http404 if file does not exists.""" request = django.test.RequestFactory().get('/fake-url') filename = 'i-do-no-exist' with self.assertRaises(Http404): sendfile(request, filename)