diff options
| author | Tim Graham <timograham@gmail.com> | 2015-08-18 17:57:01 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-08-20 10:24:19 -0400 |
| commit | 867d287b3acfdb6b7de0f193b86b93ec52d034e5 (patch) | |
| tree | d3a7ed5bda7ab0505a9554dda1e65c8651cd58fc | |
| parent | 333cbdcd2de4546e33ad50ebd8b67e1a1e87aeec (diff) | |
Added a test to ensure empty sessions are saved.
| -rw-r--r-- | tests/sessions_tests/tests.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/sessions_tests/tests.py b/tests/sessions_tests/tests.py index 713ff9e553..76e625aa76 100644 --- a/tests/sessions_tests/tests.py +++ b/tests/sessions_tests/tests.py @@ -695,6 +695,45 @@ class SessionMiddlewareTests(TestCase): # The session is accessed so "Vary: Cookie" should be set. self.assertEqual(response['Vary'], 'Cookie') + def test_empty_session_saved(self): + """" + If a session is emptied of data but still has a key, it should still + be updated. + """ + request = RequestFactory().get('/') + response = HttpResponse('Session test') + middleware = SessionMiddleware() + + # Set a session key and some data. + middleware.process_request(request) + request.session['foo'] = 'bar' + # Handle the response through the middleware. + response = middleware.process_response(request, response) + self.assertEqual(tuple(request.session.items()), (('foo', 'bar'),)) + # A cookie should be set, along with Vary: Cookie. + self.assertIn( + 'Set-Cookie: sessionid=%s' % request.session.session_key, + str(response.cookies) + ) + self.assertEqual(response['Vary'], 'Cookie') + + # Empty the session data. + del request.session['foo'] + # Handle the response through the middleware. + response = HttpResponse('Session test') + response = middleware.process_response(request, response) + self.assertEqual(dict(request.session.values()), {}) + session = Session.objects.get(session_key=request.session.session_key) + self.assertEqual(session.get_decoded(), {}) + # While the session is empty, it hasn't been flushed so a cookie should + # still be set, along with Vary: Cookie. + self.assertGreater(len(request.session.session_key), 8) + self.assertIn( + 'Set-Cookie: sessionid=%s' % request.session.session_key, + str(response.cookies) + ) + self.assertEqual(response['Vary'], 'Cookie') + # Don't need DB flushing for these tests, so can use unittest.TestCase as base class class CookieSessionTests(SessionTestsMixin, unittest.TestCase): |
