summaryrefslogtreecommitdiff
path: root/tests/regressiontests/middleware
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2013-02-05 23:52:29 +0200
committerAnssi Kääriäinen <akaariai@gmail.com>2013-02-10 13:55:54 +0200
commita4e97cf315142e61bb4bc3ed8259b95d8586d09c (patch)
tree7f21b7043e9a05a2dae6d8c833f98cb68f1c7fc9 /tests/regressiontests/middleware
parent0e18fb04bad99de237b5eb8ea4f9ff2f3cd147d3 (diff)
Fixed #19707 -- Reset transaction state after requests
Diffstat (limited to 'tests/regressiontests/middleware')
-rw-r--r--tests/regressiontests/middleware/tests.py25
1 files changed, 22 insertions, 3 deletions
diff --git a/tests/regressiontests/middleware/tests.py b/tests/regressiontests/middleware/tests.py
index a9a45c99ba..6c436415ab 100644
--- a/tests/regressiontests/middleware/tests.py
+++ b/tests/regressiontests/middleware/tests.py
@@ -9,9 +9,9 @@ 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.db import (transaction, connections, DEFAULT_DB_ALIAS,
+ IntegrityError)
+from django.http import HttpRequest, HttpResponse, StreamingHttpResponse
from django.middleware.clickjacking import XFrameOptionsMiddleware
from django.middleware.common import CommonMiddleware, BrokenLinkEmailsMiddleware
from django.middleware.http import ConditionalGetMiddleware
@@ -710,3 +710,22 @@ class TransactionMiddlewareTest(TransactionTestCase):
TransactionMiddleware().process_exception(self.request, None)
self.assertEqual(Band.objects.count(), 0)
self.assertFalse(transaction.is_dirty())
+
+ def test_failing_commit(self):
+ # It is possible that connection.commit() fails. Check that
+ # TransactionMiddleware handles such cases correctly.
+ try:
+ def raise_exception():
+ raise IntegrityError()
+ connections[DEFAULT_DB_ALIAS].commit = raise_exception
+ transaction.enter_transaction_management()
+ transaction.managed(True)
+ Band.objects.create(name='The Beatles')
+ self.assertTrue(transaction.is_dirty())
+ with self.assertRaises(IntegrityError):
+ TransactionMiddleware().process_response(self.request, None)
+ self.assertEqual(Band.objects.count(), 0)
+ self.assertFalse(transaction.is_dirty())
+ self.assertFalse(transaction.is_managed())
+ finally:
+ del connections[DEFAULT_DB_ALIAS].commit