Loading tests/regressiontests/middleware/models.py +13 −1 Original line number Diff line number Diff line # models.py file for tests to run. from django.db import models from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class Band(models.Model): name = models.CharField(max_length=100) class Meta: ordering = ('name',) def __str__(self): return self.name tests/regressiontests/middleware/tests.py +50 −2 Original line number Diff line number Diff line # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import gzip from io import BytesIO Loading @@ -8,17 +9,22 @@ import warnings from django.conf import settings from django.core import mail from django.db import transaction from django.http import HttpRequest from django.http import HttpResponse, StreamingHttpResponse from django.middleware.clickjacking import XFrameOptionsMiddleware from django.middleware.common import CommonMiddleware, BrokenLinkEmailsMiddleware from django.middleware.http import ConditionalGetMiddleware from django.middleware.gzip import GZipMiddleware from django.test import TestCase, RequestFactory from django.middleware.transaction import TransactionMiddleware from django.test import TransactionTestCase, TestCase, RequestFactory from django.test.utils import override_settings from django.utils import six from django.utils.encoding import force_str from django.utils.six.moves import xrange from .models import Band class CommonMiddlewareTest(TestCase): Loading Loading @@ -273,7 +279,7 @@ class CommonMiddlewareTest(TestCase): def test_non_ascii_query_string_does_not_crash(self): """Regression test for #15152""" request = self._get_request('slash') request.META['QUERY_STRING'] = 'drink=café' request.META['QUERY_STRING'] = force_str('drink=café') response = CommonMiddleware().process_request(request) self.assertEqual(response.status_code, 301) Loading Loading @@ -662,3 +668,45 @@ class ETagGZipMiddlewareTest(TestCase): nogzip_etag = response.get('ETag') self.assertNotEqual(gzip_etag, nogzip_etag) class TransactionMiddlewareTest(TransactionTestCase): """ Test the transaction middleware. """ def setUp(self): self.request = HttpRequest() self.request.META = { 'SERVER_NAME': 'testserver', 'SERVER_PORT': 80, } self.request.path = self.request.path_info = "/" self.response = HttpResponse() self.response.status_code = 200 def test_request(self): TransactionMiddleware().process_request(self.request) self.assertTrue(transaction.is_managed()) def test_managed_response(self): transaction.enter_transaction_management() transaction.managed(True) Band.objects.create(name='The Beatles') self.assertTrue(transaction.is_dirty()) TransactionMiddleware().process_response(self.request, self.response) self.assertFalse(transaction.is_dirty()) self.assertEqual(Band.objects.count(), 1) def test_unmanaged_response(self): transaction.managed(False) TransactionMiddleware().process_response(self.request, self.response) self.assertFalse(transaction.is_managed()) self.assertFalse(transaction.is_dirty()) def test_exception(self): transaction.enter_transaction_management() transaction.managed(True) Band.objects.create(name='The Beatles') self.assertTrue(transaction.is_dirty()) TransactionMiddleware().process_exception(self.request, None) self.assertEqual(Band.objects.count(), 0) self.assertFalse(transaction.is_dirty()) Loading
tests/regressiontests/middleware/models.py +13 −1 Original line number Diff line number Diff line # models.py file for tests to run. from django.db import models from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class Band(models.Model): name = models.CharField(max_length=100) class Meta: ordering = ('name',) def __str__(self): return self.name
tests/regressiontests/middleware/tests.py +50 −2 Original line number Diff line number Diff line # -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import gzip from io import BytesIO Loading @@ -8,17 +9,22 @@ import warnings from django.conf import settings from django.core import mail from django.db import transaction from django.http import HttpRequest from django.http import HttpResponse, StreamingHttpResponse from django.middleware.clickjacking import XFrameOptionsMiddleware from django.middleware.common import CommonMiddleware, BrokenLinkEmailsMiddleware from django.middleware.http import ConditionalGetMiddleware from django.middleware.gzip import GZipMiddleware from django.test import TestCase, RequestFactory from django.middleware.transaction import TransactionMiddleware from django.test import TransactionTestCase, TestCase, RequestFactory from django.test.utils import override_settings from django.utils import six from django.utils.encoding import force_str from django.utils.six.moves import xrange from .models import Band class CommonMiddlewareTest(TestCase): Loading Loading @@ -273,7 +279,7 @@ class CommonMiddlewareTest(TestCase): def test_non_ascii_query_string_does_not_crash(self): """Regression test for #15152""" request = self._get_request('slash') request.META['QUERY_STRING'] = 'drink=café' request.META['QUERY_STRING'] = force_str('drink=café') response = CommonMiddleware().process_request(request) self.assertEqual(response.status_code, 301) Loading Loading @@ -662,3 +668,45 @@ class ETagGZipMiddlewareTest(TestCase): nogzip_etag = response.get('ETag') self.assertNotEqual(gzip_etag, nogzip_etag) class TransactionMiddlewareTest(TransactionTestCase): """ Test the transaction middleware. """ def setUp(self): self.request = HttpRequest() self.request.META = { 'SERVER_NAME': 'testserver', 'SERVER_PORT': 80, } self.request.path = self.request.path_info = "/" self.response = HttpResponse() self.response.status_code = 200 def test_request(self): TransactionMiddleware().process_request(self.request) self.assertTrue(transaction.is_managed()) def test_managed_response(self): transaction.enter_transaction_management() transaction.managed(True) Band.objects.create(name='The Beatles') self.assertTrue(transaction.is_dirty()) TransactionMiddleware().process_response(self.request, self.response) self.assertFalse(transaction.is_dirty()) self.assertEqual(Band.objects.count(), 1) def test_unmanaged_response(self): transaction.managed(False) TransactionMiddleware().process_response(self.request, self.response) self.assertFalse(transaction.is_managed()) self.assertFalse(transaction.is_dirty()) def test_exception(self): transaction.enter_transaction_management() transaction.managed(True) Band.objects.create(name='The Beatles') self.assertTrue(transaction.is_dirty()) TransactionMiddleware().process_exception(self.request, None) self.assertEqual(Band.objects.count(), 0) self.assertFalse(transaction.is_dirty())