tests.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.conf import settings
  4. from django.http import HttpResponse
  5. from django.test import SimpleTestCase
  6. UTF8 = 'utf-8'
  7. ISO88591 = 'iso-8859-1'
  8. class HttpResponseTests(SimpleTestCase):
  9. def test_status_code(self):
  10. resp = HttpResponse(status=418)
  11. self.assertEqual(resp.status_code, 418)
  12. self.assertEqual(resp.reason_phrase, "I'M A TEAPOT")
  13. def test_reason_phrase(self):
  14. reason = "I'm an anarchist coffee pot on crack."
  15. resp = HttpResponse(status=814, reason=reason)
  16. self.assertEqual(resp.status_code, 814)
  17. self.assertEqual(resp.reason_phrase, reason)
  18. def test_charset_detection(self):
  19. """ HttpResponse should parse charset from content_type."""
  20. response = HttpResponse('ok')
  21. self.assertEqual(response.charset, settings.DEFAULT_CHARSET)
  22. response = HttpResponse(charset=ISO88591)
  23. self.assertEqual(response.charset, ISO88591)
  24. self.assertEqual(response['Content-Type'], 'text/html; charset=%s' % ISO88591)
  25. response = HttpResponse(content_type='text/plain; charset=%s' % UTF8, charset=ISO88591)
  26. self.assertEqual(response.charset, ISO88591)
  27. response = HttpResponse(content_type='text/plain; charset=%s' % ISO88591)
  28. self.assertEqual(response.charset, ISO88591)
  29. response = HttpResponse(content_type='text/plain; charset="%s"' % ISO88591)
  30. self.assertEqual(response.charset, ISO88591)
  31. response = HttpResponse(content_type='text/plain; charset=')
  32. self.assertEqual(response.charset, settings.DEFAULT_CHARSET)
  33. response = HttpResponse(content_type='text/plain')
  34. self.assertEqual(response.charset, settings.DEFAULT_CHARSET)
  35. def test_response_content_charset(self):
  36. """HttpResponse should encode based on charset."""
  37. content = "Café :)"
  38. utf8_content = content.encode(UTF8)
  39. iso_content = content.encode(ISO88591)
  40. response = HttpResponse(utf8_content)
  41. self.assertContains(response, utf8_content)
  42. response = HttpResponse(iso_content, content_type='text/plain; charset=%s' % ISO88591)
  43. self.assertContains(response, iso_content)
  44. response = HttpResponse(iso_content)
  45. self.assertContains(response, iso_content)
  46. response = HttpResponse(iso_content, content_type='text/plain')
  47. self.assertContains(response, iso_content)