summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2008-08-15 12:08:29 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2008-08-15 12:08:29 +0000
commit50b548d01b348768c6d9a2a7629103dec5952c66 (patch)
treed3ede18614ad5e02cac427c596aaa0d8e5adb539 /tests
parentd8bfabe98d31299bfa24f71af47377495f360dae (diff)
Fixed #7416: Modified test client to preserve session when a user logs in. Thanks to lakin.wecker@gmail.com for the report and Eric Holscher for the patch and test case.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8372 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/test_client_regress/models.py30
-rw-r--r--tests/regressiontests/test_client_regress/urls.py4
-rw-r--r--tests/regressiontests/test_client_regress/views.py9
3 files changed, 42 insertions, 1 deletions
diff --git a/tests/regressiontests/test_client_regress/models.py b/tests/regressiontests/test_client_regress/models.py
index 3518df3b9f..14552b7e63 100644
--- a/tests/regressiontests/test_client_regress/models.py
+++ b/tests/regressiontests/test_client_regress/models.py
@@ -325,3 +325,33 @@ class zzUrlconfSubstitutionTests(TestCase):
"URLconf is reverted to original value after modification in a TestCase"
url = reverse('arg_view', args=['somename'])
self.assertEquals(url, '/test_client_regress/arg_view/somename/')
+
+class SessionTests(TestCase):
+ fixtures = ['testdata.json']
+
+ def test_session(self):
+ "The session isn't lost if a user logs in"
+ # The session doesn't exist to start.
+ response = self.client.get('/test_client_regress/check_session/')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'NO')
+
+ # This request sets a session variable.
+ response = self.client.get('/test_client_regress/set_session/')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'set_session')
+
+ # Check that the session has been modified
+ response = self.client.get('/test_client_regress/check_session/')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'YES')
+
+ # Log in
+ login = self.client.login(username='testclient',password='password')
+ self.failUnless(login, 'Could not log in')
+
+ # Session should still contain the modified value
+ response = self.client.get('/test_client_regress/check_session/')
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.content, 'YES')
+ \ No newline at end of file
diff --git a/tests/regressiontests/test_client_regress/urls.py b/tests/regressiontests/test_client_regress/urls.py
index 12f6afacf3..ca21e18817 100644
--- a/tests/regressiontests/test_client_regress/urls.py
+++ b/tests/regressiontests/test_client_regress/urls.py
@@ -6,5 +6,7 @@ urlpatterns = patterns('',
(r'^staff_only/$', views.staff_only_view),
(r'^get_view/$', views.get_view),
url(r'^arg_view/(?P<name>.+)/$', views.view_with_argument, name='arg_view'),
- (r'^login_protected_redirect_view/$', views.login_protected_redirect_view)
+ (r'^login_protected_redirect_view/$', views.login_protected_redirect_view),
+ (r'^set_session/$', views.set_session_view),
+ (r'^check_session/$', views.check_session_view),
)
diff --git a/tests/regressiontests/test_client_regress/views.py b/tests/regressiontests/test_client_regress/views.py
index d703c82124..9cd786d86b 100644
--- a/tests/regressiontests/test_client_regress/views.py
+++ b/tests/regressiontests/test_client_regress/views.py
@@ -34,3 +34,12 @@ def login_protected_redirect_view(request):
"A view that redirects all requests to the GET view"
return HttpResponseRedirect('/test_client_regress/get_view/')
login_protected_redirect_view = login_required(login_protected_redirect_view)
+
+def set_session_view(request):
+ "A view that sets a session variable"
+ request.session['session_var'] = 'YES'
+ return HttpResponse('set_session')
+
+def check_session_view(request):
+ "A view that reads a session variable"
+ return HttpResponse(request.session.get('session_var', 'NO'))