summaryrefslogtreecommitdiff
path: root/tests/auth_tests/test_views.py
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2020-04-29 16:45:00 +0200
committerGitHub <noreply@github.com>2020-04-29 16:45:00 +0200
commit54646a423b4501aeb80bbdd9238f20500c84cd5f (patch)
treee4c55114664eb0a38fcd51ab14c116885ada86b2 /tests/auth_tests/test_views.py
parent5869afe32b9c252cacd327f18c58e38c36d1f530 (diff)
Refs #27468 -- Made user sessions use SHA-256 algorithm.
Diffstat (limited to 'tests/auth_tests/test_views.py')
-rw-r--r--tests/auth_tests/test_views.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/tests/auth_tests/test_views.py b/tests/auth_tests/test_views.py
index f33cbc8382..48278e23f9 100644
--- a/tests/auth_tests/test_views.py
+++ b/tests/auth_tests/test_views.py
@@ -10,7 +10,7 @@ from django.apps import apps
from django.conf import settings
from django.contrib.admin.models import LogEntry
from django.contrib.auth import (
- BACKEND_SESSION_KEY, REDIRECT_FIELD_NAME, SESSION_KEY,
+ BACKEND_SESSION_KEY, HASH_SESSION_KEY, REDIRECT_FIELD_NAME, SESSION_KEY,
)
from django.contrib.auth.forms import (
AuthenticationForm, PasswordChangeForm, SetPasswordForm,
@@ -711,6 +711,27 @@ class LoginTest(AuthViewsTestCase):
self.login(password='foobar')
self.assertNotEqual(original_session_key, self.client.session.session_key)
+ def test_legacy_session_key_flushed_on_login(self):
+ # RemovedInDjango40Warning.
+ user = User.objects.get(username='testclient')
+ engine = import_module(settings.SESSION_ENGINE)
+ session = engine.SessionStore()
+ session[SESSION_KEY] = user.id
+ session[HASH_SESSION_KEY] = user._legacy_get_session_auth_hash()
+ session.save()
+ original_session_key = session.session_key
+ self.client.cookies[settings.SESSION_COOKIE_NAME] = original_session_key
+ # Legacy session key is flushed on login.
+ self.login()
+ self.assertNotEqual(original_session_key, self.client.session.session_key)
+ # Legacy session key is flushed after a password change.
+ user.set_password('password_2')
+ user.save()
+ original_session_key = session.session_key
+ self.client.cookies[settings.SESSION_COOKIE_NAME] = original_session_key
+ self.login(password='password_2')
+ self.assertNotEqual(original_session_key, self.client.session.session_key)
+
def test_login_session_without_hash_session_key(self):
"""
Session without django.contrib.auth.HASH_SESSION_KEY should login