]> git.ozlabs.org Git - patchwork/blobdiff - apps/patchwork/tests/encodings.py
[models] Fix exception on mbox view with non-ascii submitter name
[patchwork] / apps / patchwork / tests / encodings.py
index ac63fb057c36faf857effdbfe27a7d2445515a62..397b39ba877887f26eb4d4188deb91e5cf4d2069 100644 (file)
@@ -20,7 +20,7 @@
 import unittest
 import os
 import time
-from patchwork.models import Patch
+from patchwork.models import Patch, Person
 from patchwork.tests.utils import defaults, read_patch
 from django.test import TestCase
 from django.test.client import Client
@@ -48,9 +48,40 @@ class UTF8PatchViewTest(TestCase):
     def testMboxView(self):
         response = self.client.get('/patch/%d/mbox/' % self.patch.id)
         self.assertEquals(response.status_code, 200)
+        self.assertTrue(self.patch.content in \
+                response.content.decode(self.patch_encoding))
+
+    def testRawView(self):
+        response = self.client.get('/patch/%d/raw/' % self.patch.id)
+        self.assertEquals(response.status_code, 200)
+        self.assertEquals(response.content.decode(self.patch_encoding),
+                self.patch.content)
 
     def tearDown(self):
         self.patch.delete()
         defaults.patch_author_person.delete()
         defaults.project.delete()
 
+class UTF8HeaderPatchViewTest(UTF8PatchViewTest):
+    patch_filename = '0002-utf-8.patch'
+    patch_encoding = 'utf-8'
+    patch_author_name = u'P\xe4tch Author'
+
+    def setUp(self):
+        defaults.project.save()
+       self.patch_author = Person(name = self.patch_author_name,
+                       email = defaults.patch_author_person.email)
+       self.patch_author.save()
+        self.patch_content = read_patch(self.patch_filename,
+                encoding = self.patch_encoding)
+        self.patch = Patch(project = defaults.project,
+                           msgid = 'x', name = defaults.patch_name,
+                           submitter = self.patch_author,
+                           content = self.patch_content)
+        self.patch.save()
+        self.client = Client()
+
+    def tearDown(self):
+        self.patch.delete()
+        self.patch_author.delete()
+        defaults.project.delete()