summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorUnai Zalakain <unai@gisa-elkartea.org>2013-10-29 18:31:54 +0100
committerAnssi Kääriäinen <akaariai@gmail.com>2013-11-19 09:04:20 +0200
commit4fdd51b73240bf9c8d9472fcc45df699f0714755 (patch)
tree50e7cb8ea392bce529da22eb84a22b95a4220382 /tests
parent9348fc5628ccbbe156e9523b5eb8ba3ce783166e (diff)
Fixed #15179 -- middlewares not applied for test client login()
Requests made with django.test.Client.login() and logout() respect defaults defined in django.test.Client instantiation and are processed through middleware. Thanks to Loic for the reviews.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_client_regress/tests.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py
index 5f907925ba..1bee0b95e7 100644
--- a/tests/test_client_regress/tests.py
+++ b/tests/test_client_regress/tests.py
@@ -7,6 +7,7 @@ from __future__ import unicode_literals
import os
import itertools
+from django.conf import settings
from django.core.urlresolvers import reverse
from django.template import (TemplateSyntaxError,
Context, Template, loader)
@@ -761,6 +762,11 @@ class AssertFormsetErrorTests(TestCase):
**kwargs)
+class ProcessedMiddleware(object):
+ def process_request(self, request):
+ request.has_been_processed = True
+
+
@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
class LoginTests(TestCase):
fixtures = ['testdata']
@@ -781,6 +787,24 @@ class LoginTests(TestCase):
# default client.
self.assertRedirects(response, "http://testserver/test_client_regress/get_view/")
+ @override_settings(
+ MIDDLEWARE_CLASSES=list(settings.MIDDLEWARE_CLASSES) +
+ ['test_client_regress.tests.ProcessedMiddleware'])
+ def test_request_middleware(self):
+ "Check that the request middleware is executed on login request"
+
+ def listener(sender, signal, **kwargs):
+ request = kwargs['request']
+ self.assertTrue(hasattr(request, 'has_been_processed'))
+
+ # Unlike other Client request performing methods, login and logout don't
+ # return the response, therefore we must use signals to get it
+ user_logged_in.connect(listener)
+ try:
+ self.client.login(username='testclient', password='password')
+ finally:
+ user_logged_in.disconnect(listener)
+
@override_settings(
PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),
@@ -1260,12 +1284,32 @@ class UploadedFileEncodingTest(TestCase):
class RequestHeadersTest(TestCase):
+ fixtures = ['testdata']
+
def test_client_headers(self):
"A test client can receive custom headers"
response = self.client.get("/test_client_regress/check_headers/", HTTP_X_ARG_CHECK='Testing 123')
self.assertEqual(response.content, b"HTTP_X_ARG_CHECK: Testing 123")
self.assertEqual(response.status_code, 200)
+ @override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
+ def test_client_login_headers(self):
+ "Test client headers are used in login"
+
+ client = Client(HTTP_HOST='different')
+
+ def listener(sender, signal, **kwargs):
+ request = kwargs['request']
+ self.assertEqual(request.get_host(), 'different')
+
+ # Unlike other Client request performing methods, login and logout don't
+ # return the response, therefore we must use signals to get it
+ user_logged_in.connect(listener)
+ try:
+ client.login(username='testclient', password='password')
+ finally:
+ user_logged_in.disconnect(listener)
+
def test_client_headers_redirect(self):
"Test client headers are preserved through redirects"
response = self.client.get("/test_client_regress/check_headers_redirect/", follow=True, HTTP_X_ARG_CHECK='Testing 123')