diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2008-08-15 12:08:29 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2008-08-15 12:08:29 +0000 |
| commit | 50b548d01b348768c6d9a2a7629103dec5952c66 (patch) | |
| tree | d3ede18614ad5e02cac427c596aaa0d8e5adb539 /tests | |
| parent | d8bfabe98d31299bfa24f71af47377495f360dae (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.py | 30 | ||||
| -rw-r--r-- | tests/regressiontests/test_client_regress/urls.py | 4 | ||||
| -rw-r--r-- | tests/regressiontests/test_client_regress/views.py | 9 |
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')) |
